Описать класс для работы с двумерным массивом - 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();
     }
}

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


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

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

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