Цитата(thermit @ Dec 12 2013, 18:49)

Зачем передавать в виде двумерного массива? Решателю достаточно передать адрес начала матрицы и ее размерность.
У топик-стартера матрица аллокируется не одним блоком памяти, а построчно:
Код
double **copy_mass = new double *[cnt_str]; // создаем копию матрицы, так как элементы матрицы будут модифицированы
for(i = 0; i < cnt_str; i++){
copy_mass[i] = new double [cnt_str + 1]; // N столбцов = N строк + 1
for(j = 0; j < cnt_str + 1; j++) copy_mass[i][j] = mass[i][j];
}
Однако это обстоятельство ничуть не мешает ее передавать через указатель double**, а еще лучше, как &double**.
Хотя на C++ можно было бы создать для матрицы класс, где кроме указателя double**, хранились бы и обе ее размерности. А конструктор и деструктор память под эту матрицу аллокировали и деаллокировали. В этом случае ссылку (здесь она удобнее указателя) на матрицу можно передавать одним единственным парамером. Кроме того, данный класс можно снабдить фукциями членами класса дял матричного умножения, сложения и т.п.