Описать класс для работы с двумерным массивом - C#
Формулировка задачи:
Здравствуйте. Помогите пожалуйста с задачей:
Задание:
Разрабатываемый класс должен содержать следующие элементы: скрытые и открытые поля, конструкторы, перегруженные операции. В программе должна выполняться проверка всех разработанных элементов класса.Условие:
Описать класс для работы с двумерным массивом. Реализовать перегруженные операции отношений (>,<), выполняющие сравнение сумм элементов главной диагонали.Решение задачи: «Описать класс для работы с двумерным массивом»
textual
Листинг программы
- using System;
- // класс двумерного массива
- class Array2
- {
- private int[,] _data; // внутренний массив для хранения значений
- // конструктор по двум измерениям
- public Array2( int dim1, int dim2 )
- {
- _data = new int[dim1,dim2]; // создание внутреннего массива
- }
- // конструктор копирования
- public Array2( Array2 other )
- {
- _data = other._data;
- }
- // геттер длины измерения d
- public int GetLength( int d )
- {
- /*if( d == 0 || d == 1 )
- return _data.GetLength( d );
- else
- throw string( "Dimension number mismatch" ); */
- return _data.GetLength( d );
- }
- /*// аксессор элемента по индексам
- public int operator[] ( int i1, int i2 )
- {
- return как здесь передать ссылку _data[i1,i2];
- }*/
- // геттер элемента по индексам
- public int GetValue( int i1, int i2 )
- {
- return _data[i1, i2];
- }
- // сеттер элемента
- public void SetValue( int i1, int i2, int val )
- {
- _data[i1, i2] = val;
- }
- // перегруженный оператор 'меньше'
- public static bool operator< ( Array2 a1, Array2 a2 )
- {
- int min1 = Math.Min( a1.GetLength( 0 ), a1.GetLength( 1 ) );
- int sum1 = 0;
- for( int i1 = 0; i1 < min1; i1++ )
- sum1 += a1.GetValue( i1, i1 );
- int min2 = Math.Min( a2.GetLength( 0 ), a2.GetLength( 1 ) );
- int sum2 = 0;
- for( int i2 = 0; i2 < min2; i2++ )
- sum2 += a2.GetValue( i2, i2 );
- return sum1 < sum2;
- }
- // перегруженный оператор 'больше'
- public static bool operator> ( Array2 a1, Array2 a2 )
- {
- int min1 = Math.Min( a1.GetLength( 0 ), a1.GetLength( 1 ) );
- int sum1 = 0;
- for( int i1 = 0; i1 < min1; i1++ )
- sum1 += a1.GetValue( i1, i1 );
- int min2 = Math.Min( a2.GetLength( 0 ), a2.GetLength( 1 ) );
- int sum2 = 0;
- for( int i2 = 0; i2 < min2; i2++ )
- sum2 += a2.GetValue( i2, i2 );
- return sum1 > sum2;
- }
- }
- class Program
- {
- public static void Main()
- {
- // длины массивов
- int
- len11 = 3,
- len12 = 4,
- len21 = 5,
- len22 = 3;
- // создание двух двумерных массивов
- Console.Write( "Создаём двумерный массив [{0},{1}]...", len11, len12 ) ;
- Array2 a21 = new Array2( len11, len12 );
- //Console.WriteLine();
- Console.Write( "\nСоздаём двумерный массив [{0},{1}]...", len21, len22 );
- Array2 a22 = new Array2( len21, len22 );
- Console.WriteLine( "\n" );
- // заполнение и вывод этих массивов
- int min = -10, max = 10;
- Random r = new Random();
- //std::cout.width( 2 );
- Console.WriteLine( "Заполняем массив 1 случайными числами из отрезка [{0},{1}]", min, max );
- for( int i = 0; i < a21.GetLength(0); i++ )
- {
- for( int j = 0; j < a21.GetLength(1); j++ )
- {
- a21.SetValue( i, j, r.Next( min, max ) );
- Console.Write( "{0,3} ", a21.GetValue( i, j ) );
- }
- Console.WriteLine();
- }
- Console.WriteLine( "Заполняем массив 2 случайными числами из отрезка [{0},{1}]", min, max );
- for( int i = 0; i < a22.GetLength(0); i++ )
- {
- for( int j = 0; j < a22.GetLength(1); j++ )
- {
- a22.SetValue( i, j, r.Next( min, max ) );
- Console.Write( "{0,3} ", a22.GetValue( i, j ) );
- }
- Console.WriteLine();
- }
- Console.WriteLine();
- // сравнение массивов обеими операциями
- Console.WriteLine( "Сравниваем массивы:" );
- Console.WriteLine( "Массив 1 меньше массива 2: {0}", a21 < a22 );
- Console.WriteLine( "Массив 1 больше массива 2: {0}", a21 > a22 );
- Console.ReadLine();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д