Описать класс для хранения массива чисел - C# (179707)
Формулировка задачи:
Описать класс для хранения массива чисел. Перегрузить в классе оператор *, который должен находить произведение четных элементов двух массивов.
Решение задачи: «Описать класс для хранения массива чисел»
textual
Листинг программы
class MyArray
{
double[] array;
// свойство, возвращающее длину массива
public double Length
{
get { return array.Length; }
private set { }
}
// конструктор по умолчанию
public MyArray() { }
// конструктор, принимающий в качестве параметра массив
public MyArray(double[] array)
{
// выделяем память на нашего массива
this.array = new double[array.Length];
// записываем значения из переданного в конструктор массива в наш массив
for (int i = 0; i < array.Length; i++)
this.array[i] = array[i];
}
// итератор класса, позволяет обращаться к объекту класса как к массиву (по индексу)
// например, см. реализацию перегрузки оператора *
public double this[int index]
{
get { return array[index]; }
set
{
if (index >= 0 && index < array.Length) // проверка индекса на соответствие разрешенному диапазону
array[index] = value;
}
}
// перегрузка оператора *
public static double? operator *(MyArray a, MyArray b)
{
// переменная, содержащая результат умножения (тип double? допускает значение null)
double? mul = 1.0;
// находим четные числа в первом массиве и перемножаем
for (int i = 0; i < a.Length; i++)
if (a[i] % 2 == 0)
mul *= a[i];
// аналогично для второго массива
for (int i = 0; i < b.Length; i++)
if (b[i] % 2 == 0)
mul *= b[i];
// возвращаем результат умножения или null, если в обоих массивах нет ни одного четного числа
return mul == 1.0 ? null : mul;
}
}