Как изменять элементы двумерного массива?
В функции над элементами двумерного массива не проводятся арифметические операции. Грешу на путаницу с использованием указателей.
void gauss(float*** arr, int m, int n, int st, int sc)
{
float del = 0;
del = (*arr)[sc][st];
for (int i = 0; i<(m+2); i++)
{
(*arr)[sc][i]/=del;
}
for (int i =0; i<(n+1); i++)
{
if (i!=sc)
{
del = (*arr)[i][st];
for (int j =0; j<(m+2); j++)
{
(*arr)[i][j] -= del*(*arr)[sc][i];
}
}
}
}
(Кратко про функцию: передаю указатель на двумерный массив, количество его строчек и столбцов, ведущий столбец и ведущую строчку. Сама функция должна осуществлять работу метода Гаусса над нашей матрицей. То есть все элементы ведущей строчки мы делим на элемент, стоящий на пересечении ведущего столбца и строчки. После этого из всех остальных строчек мы вычитаем элемент ведущей строки умноженный на элемент, расположенный на пересечении текущей строчки и ведущего столбца)
Создание и заполнение массива
float** arr;
arr = (float**)malloc(sizeof(float*)*(n+1));
for (int i =0; i<(n+1); i++)
{
arr[i] = (float*)malloc(sizeof(float)*(m+2));
}
for (int i =0; i<(n+1); i++)
{
for (int j =0; j<(m+2); j++)
{
scanf("%f", &arr[i][j]);
}
}
Вызов функции
gauss(&arr, m, n, st, sc);