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

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

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

Кто может перевести это на С#. Заранее благодарен.
Листинг программы
  1. #include <iostream>
  2. using namespace std;
  3. class MyArray
  4. {
  5. int *numbers;
  6. int sizeOfArray;
  7. public:
  8. MyArray() //конструктор без параметров
  9. {
  10. sizeOfArray = 0;
  11. numbers = 0;
  12. }
  13. //-----------------------------------------------
  14. MyArray(int size) //конструктор с параметрами
  15. {
  16. sizeOfArray = size;
  17. numbers = new int [sizeOfArray];
  18. for(int i = 0; i < sizeOfArray; i++)
  19. {
  20. numbers[i] = 0;
  21. }
  22. }
  23. //-----------------------------------------------
  24. ~MyArray() //деструктор
  25. {
  26. delete [] numbers;
  27. }
  28. //-----------------------------------------------
  29. void showData() //вывод данных массива на экран
  30. {
  31. for(int i = 0; i < sizeOfArray; i++)
  32. {
  33. cout << numbers[i] << " | ";
  34. }
  35. cout << endl << endl;
  36. }
  37. //-----------------------------------------------
  38. // на место вызова [] вернется по ссылке сам объект
  39. int &operator[](int j) //перегрузка []
  40. {
  41. return numbers[j];
  42. }
  43. //-----------------------------------------------
  44. MyArray& operator=( MyArray &arrInt2 ) //перегрузка оператора присваивания
  45. {
  46. delete [] numbers;
  47. sizeOfArray = arrInt2.sizeOfArray;
  48. numbers = new int [sizeOfArray];
  49. for (int i = 0; i < sizeOfArray; i++)
  50. {
  51. numbers[i] = arrInt2.numbers[i];
  52. }
  53. return *this;
  54. }
  55. //-----------------------------------------------
  56. friend bool operator ==( MyArray &arrInt, MyArray &arrInt2 ); //перегрузка ==
  57. };
  58. bool operator == ( MyArray &arrInt, MyArray &arrInt2 )
  59. {
  60. if(arrInt.sizeOfArray != arrInt2.sizeOfArray) //сравниваем размеры массивов объектов
  61. {
  62. cout << "В массивах разное количество элементов\n";
  63. return 0;
  64. }
  65. else //проверяем равны ли данныев в ячейках массивов
  66. {
  67. for (int i = 0; i < arrInt.sizeOfArray; i++)
  68. {
  69. if(arrInt.numbers[i] != arrInt2.numbers[i])
  70. {
  71. cout << "Значения массивов не равны\n";
  72. return 0;
  73. }
  74. }
  75. }
  76. return 1;
  77. }
  78. int main()
  79. {
  80. setlocale(LC_ALL, "rus");
  81. MyArray ArrayInt(5); //создаем объект класса и записываем в него данные
  82. ArrayInt[0] = 1; //перегруженный []
  83. ArrayInt[1] = 2;
  84. ArrayInt[2] = 3;
  85. ArrayInt[3] = 4;
  86. ArrayInt[4] = 5;
  87. cout << "Массив ArrayInt: ";
  88. ArrayInt.showData(); //вывод данных массива на экран
  89. MyArray ArrayInt2(5); //создаем второй объект класса
  90. ArrayInt2[0] = 11; //перегруженный []
  91. ArrayInt2[1] = 22;
  92. ArrayInt2[2] = 33;
  93. ArrayInt2[3] = 44;
  94. ArrayInt2[4] = 55;
  95. cout << "Массив ArrayInt2: ";
  96. ArrayInt2.showData(); //вывод данных массива на экран
  97. if(ArrayInt == ArrayInt2){ //сравнение двух объектов класса (перегруженный ==)
  98. cout << "Массив ArrayInt равен массиву ArrayInt2\n";
  99. }
  100. else {
  101. ArrayInt = ArrayInt2;
  102. }
  103. cout << "Массив ArrayInt после копирования: ";
  104. ArrayInt.showData();
  105. MyArray ArrayInt3(10); // третий объект класса с массивом из 10 элементов
  106. cout << "Массив ArrayInt3: ";
  107. ArrayInt3.showData();
  108. ArrayInt3 = ArrayInt; // копируем массив из ArrayInt в ArrayInt3
  109. cout << "Массив ArrayInt3 после копирования: \n";
  110. ArrayInt3.showData();
  111. return 0;
  112. }

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

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     static int Main()
  6.     {
  7.         MyArray ArrayInt = new MyArray(5); //создаем объект класса и записываем в него данные
  8.         ArrayInt[0] = 1; // индексатор, вместо перегруженного []
  9.         ArrayInt[1] = 2;
  10.         ArrayInt[2] = 3;
  11.         ArrayInt[3] = 4;
  12.         ArrayInt[4] = 5;
  13.         Console.Write("Массив ArrayInt:  ");
  14.         ArrayInt.showData(); //вывод данных массива на экран
  15.  
  16.         MyArray ArrayInt2 = new MyArray(5);
  17.         ArrayInt2[0] = 11; // индексатор, вместо перегруженного []
  18.         ArrayInt2[1] = 22;
  19.         ArrayInt2[2] = 33;
  20.         ArrayInt2[3] = 44;
  21.         ArrayInt2[4] = 55;
  22.         Console.Write("Массив ArrayInt2: ");
  23.         ArrayInt2.showData();   //вывод данных массива на экран
  24.  
  25.         if(ArrayInt == ArrayInt2) //сравнение двух объектов класса (перегруженный ==)
  26.             Console.Write("Массив ArrayInt равен массиву ArrayInt2\n");
  27.         else
  28.             ArrayInt = ArrayInt2;
  29.         Console.WriteLine("Массив ArrayInt после копирования: ");
  30.         ArrayInt.showData();
  31.  
  32.         MyArray ArrayInt3 = new MyArray(10); // третий объект класса с массивом из 10 элементов
  33.         Console.Write("Массив ArrayInt3: ");
  34.         ArrayInt3.showData();
  35.         ArrayInt3.GetCopy(ArrayInt); // копируем массив из ArrayInt в ArrayInt3
  36.         Console.WriteLine("Массив ArrayInt3 после копирования: \n");
  37.         ArrayInt3.showData();
  38.         Console.ReadKey();
  39.         return 0;
  40.     }
  41. }
  42.  
  43. class MyArray
  44. {
  45.     public int[] numbers;
  46.     public int sizeOfArray;
  47.  
  48.     public MyArray()
  49.     {
  50.         sizeOfArray = 0;
  51.     }
  52.  
  53.     public MyArray(int size)
  54.     {
  55.         sizeOfArray = size;
  56.         numbers = new int[sizeOfArray];
  57.         for (int i = 0; i < sizeOfArray; i++)
  58.             numbers[i] = 0;
  59.     }
  60.  
  61.     public void GetCopy(MyArray arrInt2) // вместо перегрузки =  Использование: a.GetCopy(b), вместо a = b (как в С++)
  62.     {
  63.         sizeOfArray = arrInt2.sizeOfArray;
  64.         numbers = new int[sizeOfArray];
  65.         for (int i = 0; i < sizeOfArray; i++)
  66.             numbers[i] = arrInt2.numbers[i];
  67.     }
  68.  
  69.     public void showData()
  70.     {
  71.         for (int i = 0; i < sizeOfArray; i++)
  72.             Console.Write(numbers[i] + " | ");
  73.         Console.Write("\n\n");
  74.     }
  75.  
  76.     public int this[int j]  // вместо перегрузки []
  77.     {
  78.         set { numbers[j] = value; }
  79.         get {
  80.             if (j < numbers.Length)
  81.                 return numbers[j];
  82.             return 0;
  83.         }
  84.     }
  85.  
  86.     public static bool operator==(MyArray arrInt, MyArray arrInt2)
  87.     {
  88.         if (arrInt.sizeOfArray != arrInt2.sizeOfArray)
  89.         {
  90.             Console.WriteLine("В массивах разное количество элементов");
  91.             return false;
  92.         }
  93.         else
  94.         {
  95.             for (int i = 0; i < arrInt.sizeOfArray; i++)
  96.             {
  97.                 if(arrInt.numbers[i] != arrInt2.numbers[i])
  98.                 {
  99.                     Console.WriteLine("Значения массивов не равны");
  100.                     return false;
  101.                 }              
  102.             }  
  103.         }
  104.         return true;
  105.     }
  106.  
  107.     public static bool operator!=(MyArray arrInt, MyArray arrInt2)
  108.     {
  109.         if (arrInt.sizeOfArray != arrInt2.sizeOfArray)
  110.             return true;
  111.         else
  112.         {
  113.             for (int i = 0; i < arrInt.sizeOfArray; i++)
  114.             {
  115.                 if (arrInt.numbers[i] != arrInt2.numbers[i])
  116.                 {
  117.                     Console.WriteLine("Значения массивов не равны");
  118.                     return true;
  119.                 }
  120.             }
  121.         }
  122.         return false;
  123.     }
  124. }

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


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

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

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

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

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

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