Портится содержимое матрицы - C#

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

есть такой кусок текста: static int Opredelitel(int[,] Matr, int Razm ) { int Opr=0; //определитель int t = 0; int[,] Polo= new int [Razm,Razm]; Polo = Matr; if (Razm == 1) Opr = Polo[0, 0]; // если матрица из 1ого элемента, то он и есть определитель else //вычисление определителя методом разложения по строке { int [,] M = new int [ Razm-1,Razm-1]; for (int i = 0; i < Razm; i++)//текущий столбец { for (int j = 1; j < Razm; j++)//меняем текущий столбец с первым { int p = Polo[j, 0]; Polo[j, 0] = Polo[j, i]; Polo[j, i] = p; } for (int h = 0; h < Razm - 1; h++) { for (int k = 0; k < Razm - 1; k++) { M[h, k] = Polo[h + 1, k + 1]; } } if ((i + 2) % 2 == 0) { t = 1; } else t = (-1); Opr = Opredelitel(M, Razm - 1) * Polo[0, i] * t + Opr;//непосредственно вычисление определителя if (Razm == 4) { Print(Matr,Razm, "****");//пользов процедура - распеч. матрицу int y = 1; } } } return Opr; } Проблема в том, что Исходня матрица static int Opredelitel(int[,] Matr, int Razm ) { int Opr=0; //определитель int t = 0; int[,] Polo= new int [Razm,Razm]; // Print(Matr, Razm, "Вход в Opredelitel"); Polo = Matr; if (Razm == 1) Opr = Polo[0, 0]; // если матрица из 1ого элемента, то он и есть определитель else //вычисление определителя методом разложения по строке { int [,] M = new int [ Razm-1,Razm-1]; for (int i = 0; i < Razm; i++)//текущий столбец { for (int j = 1; j < Razm; j++)//меняем текущий столбец с первым { int p = Polo[j, 0]; Polo[j, 0] = Polo[j, i]; Polo[j, i] = p; } for (int h = 0; h < Razm - 1; h++) { for (int k = 0; k < Razm - 1; k++) { M[h, k] = Polo[h + 1, k + 1]; } } if ((i + 2) % 2 == 0) { t = 1; } else t = (-1); Opr = Opredelitel(M, Razm - 1) * Polo[0, i] * t + Opr;//непосредственно вычисление определителя if (Razm == 4) { Print(Matr,Razm, "****"); int y = 1; } } } return Opr; } Проблема в том, что исходная матрица меняется, хотя при входе в прогу она сохраняется и больше к ней обращений нет. Может я что-то не погимаю?

Код к задаче: «Портится содержимое матрицы - C#»

textual
Polo = (int[]) Matr.Clone();
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

13   голосов, оценка 4.000 из 5


СДЕЛАЙТЕ РЕПОСТ