Перевод кода класса MyArray с C++ на C#

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

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

Кто может перевести это на С#. Заранее благодарен.
#include <iostream>
using namespace std;
 
class MyArray
{
    int *numbers;
    int sizeOfArray;
public:
    MyArray()       //конструктор без параметров
    {
        sizeOfArray = 0;   
        numbers = 0;
    }
//-----------------------------------------------
    MyArray(int size)       //конструктор с параметрами
    {
        sizeOfArray = size;
        numbers = new int [sizeOfArray];
        for(int i = 0; i < sizeOfArray; i++)
        {
            numbers[i] = 0;
        }
    }
//-----------------------------------------------
    ~MyArray()      //деструктор
    {
        delete [] numbers;
    }
//-----------------------------------------------
    void showData()         //вывод данных массива на экран
    {
        for(int i = 0; i < sizeOfArray; i++)
        {
            cout << numbers[i] << " | ";
        }
    cout << endl << endl;
    }
//-----------------------------------------------
    // на место вызова [] вернется по ссылке сам объект
    int &operator[](int j) //перегрузка []     
    {
        return numbers[j];
    }
//-----------------------------------------------
 
    MyArray& operator=( MyArray &arrInt2 ) //перегрузка оператора присваивания
    {
        delete [] numbers;
 
        sizeOfArray = arrInt2.sizeOfArray;
 
        numbers = new int [sizeOfArray];
        for (int i = 0; i < sizeOfArray; i++)
        {
            numbers[i] = arrInt2.numbers[i];
        }
 
        return *this;
    }
//-----------------------------------------------
    friend bool operator ==( MyArray &arrInt, MyArray &arrInt2 ); //перегрузка ==
};
 
bool operator == ( MyArray &arrInt, MyArray &arrInt2 )
{
    if(arrInt.sizeOfArray != arrInt2.sizeOfArray) //сравниваем размеры массивов объектов
    {
        cout << "В массивах разное количество элементов\n";
        return 0;
    }
    else //проверяем равны ли данныев в ячейках массивов
    {      
        for (int i = 0; i < arrInt.sizeOfArray; i++)
        {
            if(arrInt.numbers[i] != arrInt2.numbers[i])
            {
                cout << "Значения массивов не равны\n";
                return 0;
            }              
        }  
    }
return 1;
}
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    MyArray ArrayInt(5);    //создаем объект класса и записываем в него данные
    ArrayInt[0] = 1; //перегруженный []
    ArrayInt[1] = 2;
    ArrayInt[2] = 3;
    ArrayInt[3] = 4;
    ArrayInt[4] = 5;
    cout << "Массив ArrayInt:  ";
    ArrayInt.showData();    //вывод данных массива на экран
 
    MyArray ArrayInt2(5); //создаем второй объект класса
    ArrayInt2[0] = 11; //перегруженный []
    ArrayInt2[1] = 22;
    ArrayInt2[2] = 33;
    ArrayInt2[3] = 44;
    ArrayInt2[4] = 55;
    cout << "Массив ArrayInt2: ";
    ArrayInt2.showData();   //вывод данных массива на экран
 
    if(ArrayInt == ArrayInt2){ //сравнение двух объектов класса (перегруженный ==)
        cout << "Массив ArrayInt равен массиву ArrayInt2\n";
    }
    else {
        ArrayInt = ArrayInt2;
    }
    cout << "Массив ArrayInt после копирования:  ";
    ArrayInt.showData();
 
    MyArray ArrayInt3(10); // третий объект класса с массивом из 10 элементов
    cout << "Массив ArrayInt3: ";
    ArrayInt3.showData();
    ArrayInt3 = ArrayInt; // копируем массив из ArrayInt в ArrayInt3
    cout << "Массив ArrayInt3 после копирования: \n";
    ArrayInt3.showData();
 
    return 0;
}

Решение задачи: «Перевод кода класса MyArray с C++ на C#»

textual
Листинг программы
using System;
 
class Program
{
    static int Main()
    {
        MyArray ArrayInt = new MyArray(5); //создаем объект класса и записываем в него данные
        ArrayInt[0] = 1; // индексатор, вместо перегруженного []
        ArrayInt[1] = 2;
        ArrayInt[2] = 3;
        ArrayInt[3] = 4;
        ArrayInt[4] = 5;
        Console.Write("Массив ArrayInt:  ");
        ArrayInt.showData(); //вывод данных массива на экран
 
        MyArray ArrayInt2 = new MyArray(5);
        ArrayInt2[0] = 11; // индексатор, вместо перегруженного []
        ArrayInt2[1] = 22;
        ArrayInt2[2] = 33;
        ArrayInt2[3] = 44;
        ArrayInt2[4] = 55;
        Console.Write("Массив ArrayInt2: ");
        ArrayInt2.showData();   //вывод данных массива на экран
 
        if(ArrayInt == ArrayInt2) //сравнение двух объектов класса (перегруженный ==)
            Console.Write("Массив ArrayInt равен массиву ArrayInt2\n");
        else 
            ArrayInt = ArrayInt2;
        Console.WriteLine("Массив ArrayInt после копирования: ");
        ArrayInt.showData();
 
        MyArray ArrayInt3 = new MyArray(10); // третий объект класса с массивом из 10 элементов
        Console.Write("Массив ArrayInt3: ");
        ArrayInt3.showData();
        ArrayInt3.GetCopy(ArrayInt); // копируем массив из ArrayInt в ArrayInt3
        Console.WriteLine("Массив ArrayInt3 после копирования: \n");
        ArrayInt3.showData();
        Console.ReadKey();
        return 0;
    }
}
 
class MyArray
{
    public int[] numbers;
    public int sizeOfArray;
 
    public MyArray()
    {
        sizeOfArray = 0;
    }
 
    public MyArray(int size)
    {
        sizeOfArray = size;
        numbers = new int[sizeOfArray];
        for (int i = 0; i < sizeOfArray; i++)
            numbers[i] = 0;
    }
 
    public void GetCopy(MyArray arrInt2) // вместо перегрузки =  Использование: a.GetCopy(b), вместо a = b (как в С++)
    {
        sizeOfArray = arrInt2.sizeOfArray;
        numbers = new int[sizeOfArray];
        for (int i = 0; i < sizeOfArray; i++)
            numbers[i] = arrInt2.numbers[i];
    }
 
    public void showData()
    {
        for (int i = 0; i < sizeOfArray; i++)
            Console.Write(numbers[i] + " | ");
        Console.Write("\n\n");
    }
 
    public int this[int j]  // вместо перегрузки []
    {
        set { numbers[j] = value; }
        get { 
            if (j < numbers.Length) 
                return numbers[j];
            return 0;
        }
    }
 
    public static bool operator==(MyArray arrInt, MyArray arrInt2)
    {
        if (arrInt.sizeOfArray != arrInt2.sizeOfArray)
        {
            Console.WriteLine("В массивах разное количество элементов");
            return false;
        }
        else
        {
            for (int i = 0; i < arrInt.sizeOfArray; i++)
            {
                if(arrInt.numbers[i] != arrInt2.numbers[i])
                {
                    Console.WriteLine("Значения массивов не равны");
                    return false;
                }              
            }  
        }
        return true;
    }
 
    public static bool operator!=(MyArray arrInt, MyArray arrInt2)
    {
        if (arrInt.sizeOfArray != arrInt2.sizeOfArray)
            return true;
        else
        {
            for (int i = 0; i < arrInt.sizeOfArray; i++)
            {
                if (arrInt.numbers[i] != arrInt2.numbers[i])
                {
                    Console.WriteLine("Значения массивов не равны");
                    return true;
                }
            }
        }
        return false;
    }
}

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


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

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

9   голосов , оценка 4 из 5