מבחן יסודות ב1 10.2.26

1 - מערכים

כתבו פעולה Special המקבלת מערך arr של מספרים שלמים באורך אי-זוגי (לפחות 3 איברים). כל האיברים במערך שווים זה לזה, למעט איבר יחיד ששונה מהשאר. הפעולה מחזירה את המספר השונה.

ניתן להניח שהקלט תמיד תקין בהתאם לתיאור.

דוגמאות

[1, 1, 2] => 2
[17, 17, 3, 17, 17, 17, 17] => 3

2 - מערכים

כתבו פעולה בשם Uniques המקבלת מערך של מספרים שלמים arr
ומחזירה מערך חדש של מספרים שלמים, כך ש:

  • נשמר הסדר המקורי של האיברים.
  • אין שני איברים זהים שמופיעים ברצף.
  • אם מופיעים מספרים זהים אחד אחרי השני, משאירים רק אחד מהם.

דוגמאות

[1, 1, 1, 2, 2, 3]      => {1, 2, 3}
[5, 5, 7, 7, 7, 5, 5]   => {5, 7, 5}
[4, 4, 4, 4]            => {4}
[1, 2, 3, 3, 2, 2, 1]   => {1, 2, 3, 2, 1}

3 - מחלקות ומערך עצמים

למחלקה Product שתי תכונות:

  • name מטיפוס string
  • price מטיפוס int

כתבו פעולה חיצונית בשם Interesting המקבלת מערך arr של עצמים מטיפוס Product,
ומחזירה מחרוזת המכילה את שם המוצר שמחירו הנמוך ביותר מבין כל המוצרים שמחירם לפחות 10 שקלים.

ניתן להניח כי:

  • המערך מלא באיברים (אין בו ערכי null).
  • קיים לפחות מוצר אחד שמחירו 10 שקלים או יותר.


4 — написание класса

Перед вами часть интерфейса класса Phone, содержащего следующие четыре свойства:

  • цвет телефона: color типа string
  • производитель: maker типа string
  • цена телефона: price типа int
  • вес телефона в граммах: weight типа int
Описание операции Заголовок метода на C#
Конструктор, создающий телефон цвета "red", производителя maker, ценой 2000 шекелей и весом 548 граммов public Phone(string maker)
Конструктор копирования, получающий телефон и создающий новый телефон с теми же свойствами public Phone(Phone other)
Метод, обновляющий цену телефона на значение price public void SetPrice(int price)
Метод, возвращающий true, если цена телефона other равна цене текущего телефона, иначе возвращает false public bool IsSamePrice(Phone other)
Метод, возвращающий свойства объекта в виде строки:
Color: Black, Maker: Samsung, Price: 3800, Weight: 520
public override string ToString()

Требования

  1. Реализовать в классе Phone конструктор Phone(string maker).
  2. Реализовать в классе Phone метод SetPrice.
  3. Реализовать в классе Phone метод IsSamePrice.

5 — трассировка

Перед вами фрагмент главного метода в классе Program, использующий класс Phone из предыдущего вопроса. Выполните трассировку этого фрагмента с помощью таблицы и запишите полученный вывод.

В таблице трассировки укажите объекты и значения их свойств.


Фрагмент кода для трассировки

1
2
3
4
5
6
7
8
9
10
11
12
13
Phone p1 = new Phone("Apple");  
Phone p2 = new Phone(p1);  
Phone p3 = p1;     

p2.SetPrice(2400);   
p3.SetPrice(380);    

if (p2.IsSamePrice(p3))
    Console.WriteLine(p2);
else
    Console.WriteLine(p3);

Console.WriteLine(p1);

4 - כתיבת מחלקות

לפניכם חלק מממשק המחלקה טלפון Phone המכילה את ארבעת התכונות הבאות:

  • צבע הטלפון: color מטיפוס מחרוזת
  • שם היצרן: maker מטיפוס מחרוזת
  • מחיר טלפון: price מטיפוס שלם
  • משקל הטלפון בגרמים: weight מטיפוס שלם.
תיאור הפעולה כותרת הפעולה ב־C#
פעולה הבונה טלפון בצבע "red", של יצרן maker, במחיר 2000 שקלים ובמשקל 548 גרם public Phone(string maker)
פעולה בונה מעתיקה המקבלת טלפון ומייצרת טלפון חדש עם אותן תכונות public Phone(Phone other)
הפעולה המעדכנת את מחיר הטלפון להיות price public void SetPrice(int price)
פעולה המחזירה true אם מחיר הטלפון other זהה למחיר הטלפון הנוכחי, אחרת מחזירה false public bool IsSamePrice(Phone other)
פעולה המחזירה את תכונות העצם כמחרוזת באופן הבא:
Color: Black, Maker: Samsung, Price: 3800, Weight: 520
public override string ToString()

דרישות

  1. יש לממש במחלקה Phone את הפעולה הבונה Phone(string maker).
  2. יש לממש במחלקה Phone את הפעולה SetPrice.
  3. יש לממש במחלקה Phone את הפעולה IsSamePrice.

5 מעקב

לפניך קטע מפעולה ראשית במחלקה Program המשתמשת במחלקה Phone מהשאלה הקודמת. יש לעקוב בעזרת טבלת מעקב אחר ביצוע קטע הפעולה ולרשום את הפלט שיתקבל.

במעקב יש להציג את העצמים ואת ערכי תכונותיהם.


קטע קוד למעקב

1
2
3
4
5
6
7
8
9
10
11
12
13
Phone p1 = new Phone("Apple");  
Phone p2 = new Phone(p1);  
Phone p3 = p1;     

p2.SetPrice(2400);   
p3.SetPrice(380);    

if (p2.IsSamePrice(p3))
    Console.WriteLine(p2);
else
    Console.WriteLine(p3);

Console.WriteLine(p1);

Русский

1 - массивы

Напишите метод Special, который получает массив arr целых чисел нечётной длины (не менее 3 элементов).
Все элементы массива одинаковы, за исключением одного элемента, который отличается от остальных.
Метод возвращает это отличающееся число.

Можно считать, что входные данные всегда корректны согласно описанию.

Примеры

[1, 1, 2] => 2
[17, 17, 3, 17, 17, 17, 17] => 3

2 - массивы

Напишите метод Uniques, который получает массив целых чисел arr
и возвращает новый массив целых чисел, в котором:

  • сохраняется исходный порядок элементов.
  • одинаковые элементы, стоящие подряд, оставляются только один раз.

Примеры

[1, 1, 1, 2, 2, 3]      => {1, 2, 3}
[5, 5, 7, 7, 7, 5, 5]   => {5, 7, 5}
[4, 4, 4, 4]            => {4}
[1, 2, 3, 3, 2, 2, 1]   => {1, 2, 3, 2, 1}

3 - классы и массив объектов

У класса Product есть два свойства:

  • name типа string
  • price типа int

Напишите внешний метод Interesting, который получает массив arr объектов типа Product
и возвращает строку с названием товара с минимальной ценой среди всех товаров, цена которых не меньше 10 шекелей.

Можно считать, что:

  • массив полностью заполнен (не содержит значений null).
  • существует хотя бы один товар с ценой 10 шекелей или выше.

.