Описать класс для хранения массива чисел - C# (179933)
Формулировка задачи:
Описать класс для хранения массива чисел. Перегрузить в классе оператор ++, который должен увеличивать каждый положительный элемент массива на 2, каждый отрицательный элемент массива заменить средним арифметическим максимального и минимального элементов.
Ребят выручайте горит лаба, мыслей по реализации нету,заранее благодарю
Решение задачи: «Описать класс для хранения массива чисел»
textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
class MyArray
{
private int[] array;
private int avgMinMax;
private bool avgMinMaxIsObsolete;
public MyArray(IEnumerable<int> en)
{
array = en.ToArray();
avgMinMaxIsObsolete = true;
}
private int AvgMinMax
{
get
{
if (avgMinMaxIsObsolete)
{
avgMinMax = (array.Min() + array.Max()) / 2;
avgMinMaxIsObsolete = false;
}
return avgMinMax;
}
}
public static MyArray operator++(MyArray myArray)
{
for (int i = 0; i < myArray.array.Length; i++)
{
int elem = myArray.array[i];
elem = elem < 0 ? myArray.AvgMinMax : elem + 2;
myArray.array[i] = elem;
}
myArray.avgMinMaxIsObsolete = true;
return myArray;
}
public override string ToString()
{
return String.Join(", ", array);
}
}
class Program
{
public static void Main()
{
MyArray myArray = new MyArray(Enumerable.Repeat(new Random(), 20).Select(r => r.Next(-100, 101)));
Console.WriteLine(myArray);
myArray++;
Console.WriteLine(myArray);
myArray++;
Console.WriteLine(myArray);
}
}