Описать класс для работы с двумерным массивом - C#

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

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

Здравствуйте. Помогите пожалуйста с задачей:

Задание:

Разрабатываемый класс должен содержать следующие элементы: скрытые и открытые поля, конструкторы, перегруженные операции. В программе должна выполняться проверка всех разработанных элементов класса.

Условие:

Описать класс для работы с двумерным массивом. Реализовать перегруженные операции отношений (>,<), выполняющие сравнение сумм элементов главной диагонали.

Решение задачи: «Описать класс для работы с двумерным массивом»

textual
Листинг программы
  1. using System;
  2.  
  3. // класс двумерного массива
  4. class Array2
  5. {
  6.     private int[,] _data;       // внутренний массив для хранения значений
  7.    
  8.     // конструктор по двум измерениям
  9.     public Array2( int dim1, int dim2 )
  10.     {
  11.         _data = new int[dim1,dim2];  // создание внутреннего массива            
  12.     }
  13.    
  14.     // конструктор копирования
  15.     public Array2( Array2 other )
  16.     {
  17.         _data = other._data;
  18.     }
  19.    
  20.     // геттер длины измерения d
  21.     public int GetLength( int d )
  22.     {
  23.         /*if( d == 0 || d == 1 )
  24.             return _data.GetLength( d );
  25.         else
  26.             throw string( "Dimension number mismatch" );       */
  27.         return _data.GetLength( d );        
  28.     }
  29.    
  30.     /*// аксессор элемента по индексам
  31.     public int operator[] ( int i1, int i2 )
  32.     {
  33.         return как здесь передать ссылку _data[i1,i2];
  34.     }*/
  35.    
  36.     // геттер элемента по индексам
  37.     public int GetValue( int i1, int i2 )
  38.     {
  39.         return _data[i1, i2];
  40.     }
  41.    
  42.     // сеттер элемента
  43.     public void SetValue( int i1, int i2, int val )
  44.     {
  45.         _data[i1, i2] = val;
  46.     }
  47.    
  48.     // перегруженный оператор 'меньше'
  49.     public static bool operator< ( Array2 a1, Array2 a2 )
  50.     {
  51.         int min1 = Math.Min( a1.GetLength( 0 ), a1.GetLength( 1 ) );
  52.         int sum1 = 0;
  53.         for( int i1 = 0; i1 < min1; i1++ )
  54.             sum1 += a1.GetValue( i1, i1 );
  55.  
  56.         int min2 = Math.Min( a2.GetLength( 0 ), a2.GetLength( 1 ) );
  57.         int sum2 = 0;
  58.         for( int i2 = 0; i2 < min2; i2++ )
  59.             sum2 += a2.GetValue( i2, i2 );
  60.        
  61.         return sum1 < sum2;
  62.     }
  63.  
  64.     // перегруженный оператор 'больше'
  65.     public static bool operator> ( Array2 a1, Array2 a2 )
  66.     {
  67.         int min1 = Math.Min( a1.GetLength( 0 ), a1.GetLength( 1 ) );
  68.         int sum1 = 0;
  69.         for( int i1 = 0; i1 < min1; i1++ )
  70.             sum1 += a1.GetValue( i1, i1 );
  71.  
  72.         int min2 = Math.Min( a2.GetLength( 0 ), a2.GetLength( 1 ) );
  73.         int sum2 = 0;
  74.         for( int i2 = 0; i2 < min2; i2++ )
  75.             sum2 += a2.GetValue( i2, i2 );
  76.        
  77.         return sum1 > sum2;
  78.     }
  79. }
  80.  
  81. class Program
  82. {
  83.     public static void Main()
  84.     {
  85.         // длины массивов
  86.         int
  87.             len11 = 3,
  88.             len12 = 4,
  89.             len21 = 5,
  90.             len22 = 3;
  91.  
  92.         // создание двух двумерных массивов
  93.         Console.Write( "Создаём двумерный массив [{0},{1}]...", len11, len12 ) ;
  94.         Array2 a21 = new Array2( len11, len12 );
  95.         //Console.WriteLine();
  96.         Console.Write( "\nСоздаём двумерный массив [{0},{1}]...", len21, len22 );
  97.         Array2 a22 = new Array2( len21, len22 );
  98.         Console.WriteLine( "\n" );
  99.  
  100.         // заполнение и вывод этих массивов
  101.         int min = -10, max = 10;
  102.         Random r = new Random();
  103.         //std::cout.width( 2 );
  104.         Console.WriteLine( "Заполняем массив 1 случайными числами из отрезка [{0},{1}]", min, max );
  105.         for( int i = 0; i < a21.GetLength(0); i++ )
  106.         {
  107.             for( int j = 0; j < a21.GetLength(1); j++ )
  108.             {
  109.                 a21.SetValue( i, j, r.Next( min, max ) );
  110.                 Console.Write( "{0,3} ", a21.GetValue( i, j ) );
  111.             }
  112.             Console.WriteLine();
  113.         }
  114.         Console.WriteLine( "Заполняем массив 2 случайными числами из отрезка [{0},{1}]", min, max );
  115.         for( int i = 0; i < a22.GetLength(0); i++ )
  116.         {
  117.             for( int j = 0; j < a22.GetLength(1); j++ )
  118.             {
  119.                 a22.SetValue( i, j, r.Next( min, max ) );
  120.                 Console.Write( "{0,3} ", a22.GetValue( i, j ) );
  121.             }
  122.             Console.WriteLine();
  123.         }
  124.         Console.WriteLine();
  125.  
  126.         // сравнение массивов обеими операциями
  127.         Console.WriteLine( "Сравниваем массивы:" );
  128.         Console.WriteLine( "Массив 1 меньше массива 2: {0}", a21 < a22 );
  129.         Console.WriteLine( "Массив 1 больше массива 2: {0}", a21 > a22 );
  130.  
  131.         Console.ReadLine();
  132.      }
  133. }

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


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

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

14   голосов , оценка 3.643 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы