Операция приведения типов для двумерного массива - C#
Формулировка задачи:
Добрый день. Никак не могу написать рабочий вариант операции приведения типов для двумерного массива.
Вот код.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication12 { class DoubleMass { private int[,] intArray; private int n; private int m; public DoubleMass(int [,] intArray, int n, int m) { this.intArray = intArray; this.n = n; this.m = m; } public void Input() { for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { Console.WriteLine("Введите элемент {0} {1}", i, j); string s = Console.ReadLine(); intArray[i, j] = int.Parse(s); } } } public void Show() { for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { Console.Write("\t {0, 2} ", intArray[i, j]); } Console.WriteLine(); } } public int Summ(int num) { int sum = 0; for (int i = 0; i < n; i++) { sum += intArray[i, num]; } return sum; } public int Zero { get { int zero = 0; for (int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if(intArray[i, j] == 0) { zero++; } } } return zero; } } public int Length { get { return intArray.Length; } } public int MainDeagonal { set { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (i == j) { intArray[i, j] = value; } } } } } public int this[int i, int j] { get { if (i < 0 || i >= intArray.Length && j < 0 || j >= intArray.Length) { Console.WriteLine("Недопустимый индекс."); return 0; } else { return intArray[i, j]; } } set { intArray[i, j] = value; } } public static DoubleMass operator ++(DoubleMass mas) { DoubleMass temp = new DoubleMass(mas.intArray, mas.n, mas.m); for(int i = 0; i < temp.n; i++) { for(int j = 0; j < temp.m; j++) { temp[i, j] += 1; } } return temp; } public static DoubleMass operator --(DoubleMass mas) { DoubleMass temp = new DoubleMass(mas.intArray, mas.n, mas.m); for (int i = 0; i < temp.n; i++) { for (int j = 0; j < temp.m; j++) { temp[i, j] -= 1; } } return temp; } public static bool operator true(DoubleMass mass) { if (mass.m == mass.n) return true; else return false; } public static bool operator false(DoubleMass mass) { if (mass.m != mass.n) return false; else return true; } public static DoubleMass operator +(DoubleMass a, DoubleMass b) { if(a.m == b.m && a.n == b.n) { DoubleMass temp = new DoubleMass(a.intArray, a.n, a.m); for(int i =0; i < a.n; i++) { for(int j = 0; j < a.m; j++) { temp[i, j] = a[i, j] + b[i, j]; } } return temp; } else { Console.WriteLine("Эти массивы невозможно сложить."); return a; } } // вот этот кусок не работает /*public static explicit operator int[,] (DoubleMass mass) { int[,] temp = new int[mass.n, mass.m]; for (int i = 0; i < mass.n; i++) { for (int j = 0; j < mass.m; j++) { temp[i, j] = mass[i, j]; } } return temp; } public static implicit operator DoubleMass(int[,]a) { return new DoubleMass(a, n, m); }*/ } }
Решение задачи: «Операция приведения типов для двумерного массива»
textual
Листинг программы
return new DoubleMass(a, a.GetLength(0), a.GetLength(1));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д