Передача двумерного массива в функцию - 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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д