Описать класс для работы с двумерным массивом - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д