|
Область действия имен?
|
|||
---|---|---|---|
#18+
есть такой кусок текста: 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; } Проблема в том, что исходная матрица меняется, хотя при входе в прогу она сохраняется и больше к ней обращений нет. Может я что-то не погимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 20:11 |
|
Область действия имен?
|
|||
---|---|---|---|
#18+
glamisесть такой кусок текста: static int Opredelitel(int[,] Matr, int Razm ) Однако, это не похоже на С++... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 20:23 |
|
Область действия имен?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, на самом деле c#. жаль здесь нет такого форума. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 20:26 |
|
Область действия имен?
|
|||
---|---|---|---|
#18+
glamisжаль здесь нет такого форума. Значит тебе дорога на другой форум. Posted via ActualForum NNTP Server 1.5 Модератор: Тема перенесена из форума "C++". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 20:29 |
|
Область действия имен?
|
|||
---|---|---|---|
#18+
glamisDimitry Sibiryakov, на самом деле c#. жаль здесь нет такого форума. поддерживаю, пора сделать бы такой форум ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 20:52 |
|
Область действия имен?
|
|||
---|---|---|---|
#18+
glamisПроблема в том, что исходная матрица меняется, хотя при входе в прогу она сохраняется и больше к ней обращений нет. .... int[,] Polo= new int [Razm,Razm]; Polo = Matr; Массив является ссылочным типом. Ты сначала выделяешь память под новый массив, сразу её отбрасываешь и переменные Polo и Matr указывают на одну и ту же область памяти. Поэтому когда ниже в цикле ты меняешь содержимое Polo ты одновременно меняешь Matr. Если нужно сохранить оригинал, то скопируй его с помощью Array.Copy() . Winnipuhglamisна самом деле c#. жаль здесь нет такого форума. поддерживаю, пора сделать бы такой форум В этом нет необходимости. Такой форум у нас уже есть. Единственное что имеет смысл сделать это переименовать форум "WinForms, .Net Framework" в ".Net Framework (C#/VB.NET), WinForms" чтобы было меньше путаницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2013, 22:27 |
|
|
start [/forum/topic.php?fid=20&msg=38249529&tid=1404719]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 324ms |
total: | 567ms |
0 / 0 |