Как в main использовать индексатор, чтобы вывести элементы - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication4
{
class Program
{
    static void Main(string[] args)
    {
        Random rnd = new Random();
        Massive[] a = new Massive[3];// создаем массива объектов класса
        a[0] = Massive.Randomaize(5, rnd);
        a[1] = Massive.Randomaize(a[0].Length, rnd);
        a[2] = a[0] + a[1];
            foreach (Massive m in a)
                Console.WriteLine(m);
        Console.ReadLine();
    }
}
 
class Massive
{
    private int[] arr;
    private int N; // длина
    private int sm; // сумма
 
    public Massive(int N) // конструктор для длины массива
    {
        this.N = N;
        arr = new int[N];
        sm = 0;
    }
 
    public Massive() : this(0) { } // конструктор по умолчанию для длины массива
 
    public int this[int Index] //индексатор
    {
        get { return arr[Index]; }
        set
        {
            sm += value - arr[Index]; // заполнение массива, подсчет суммы
            arr[Index] = value;
        }
    }
               //СВОЙСТВА
    public int Sum
    {
        get { return sm; }
    }
 
    public int Length
    {
        get { return N; }
    }
    /*Метод ToString-возвращает строку, представляющую текущий объект(возвращает строковое представление объекта ,
      в данном случае сроку вида "Сумма: перечисление массива"
      override-переопределение
      String.Join-метод (Сцепляет указанные элементы массива строк, помещая между ними заданный разделитель)
    */
   /* public override string ToString()
    {
        return Sum + ": " + String.Join(" ", arr);
    }
    */
    /*
      Чтобы переопределить сумму используется метод operator+ , причем статичный т.е. нельзя вызвать m.operator+(...), а только так Matrix.operator+(a,b)
      Перегружаем бинарный оператор +
      Перегрузка операторов должна выполняться открытыми статическими методами 
      класса (спецификаторы public static)
      Перегрузку операторов можно использовать как в классах, так и в структурах
       * Перегрузка операторов имеет некоторые ограничения: 
       -перегрузка не может изменить приоритет операторов;(с private на public к примеру)
       -при перегрузке невозможно изменить число операндов, с которыми работает оператор;(Matrix a, Matrix b-операнды)
      Поскольку перегруженные операторы являются статическими методами, они не 
      получают указателя this, поэтому унарные операторы должны получать 1 параметр, бинарные 2.
      Операции не должны изменять значение передаваемого им операнда. Операция, 
      возвращающая величину типа класса, для которого она определяется, должна создать новый 
      объект этого класса, выполнить с ним необходимые действия и передать его в качестве 
      результата
    */
    public static Massive operator+ (Massive a, Massive b) //перегрузка операторасуммы
    {
        Massive s = new Massive(a.Length);
        if (a.Length <= b.Length)
        {
            for (int i = 0; i < a.Length; i++)
                s[i] = a.arr[i] + b.arr[i];
            return s;
        }
        else
        {
            for (int i = 0; i < b.Length; i++)
                s[i] = a.arr[i] + b.arr[i];
            return s;
        }
    }
 
    public static Massive Randomaize(int Length , Random rnd = null) //заполнение массива
    {
        if (rnd == null) rnd = new Random();
        if (Length < 0)
            Length = rnd.Next(5, 5);
        Massive m = new Massive(Length);
        while (Length-- > 0) 
            m[Length] = rnd.Next(-5, 5);
        return m;
    }
}
}
Задание: Как в мэйне (main) использовать индексатор, чтобы вывести элементы. Помогите пожалуйста!

Решение задачи: «Как в main использовать индексатор, чтобы вывести элементы»

textual
Листинг программы
foreach (Massive m in a)
{
for(int i=0;i<m.Length;i++)
Console.WriteLine(m[i]);
Console.WriteLine();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы