Передача двумерного массива в функцию - C (СИ) (74132)
Формулировка задачи:
void FILLING(FILE *file,int n,int m,float** array){
int i;
int j;
for (i = 0; i < n; ++i)//проход по столбцам
for (j = 0; j < m; ++j)//проход по строкам
fscanf(file, "%f", array[i][j]); //заполнили массив из файла
}FILE *file;
char *fname = "system.txt";
file = fopen(fname, "r"); //открыли файл на чтение
if (file == NULL)//проверили на месте ли он
printf("File exist!"); //если нет, то предупредили
int n = 0, m = 0, i = 0, j = 0, k; //заводим переменные
SIZE(file,&n);//вызываем функцию для получения размерности
n = n + 1;//количество строк
m = n + 1; //столбцов столько же, сколько и строк +1
float array[n][m]; //создали массив NxN+1
float decision[n]; //массив, где хранятся решения
FILLING(file,n,m,array);Решение задачи: «Передача двумерного массива в функцию»
textual
Листинг программы
float **array; array = (float **) malloc(n*sizeof(float *)); for(i=0; i<n; i++) array[i] = (float *)malloc(m*sizeof(float)); FILLING(file,n,m,array);
Объяснение кода листинга программы
- Объявляется двумерный массив типа float **array.
- С помощью функции malloc() выделяется память под n строк массива, каждая строка имеет тип float *.
- Для каждой строки массива вызывается функция malloc(), которая выделяет память под m элементов типа float.
- Выполняется действие FILLING(file,n,m,array).
- В конце необходимо освободить выделенную память с помощью функции free().