Передача двумерного массива в функцию - 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);
Выдает main.cpp:31: error: cannot convert `float (*)[((unsigned int)((int)m))]' to `float**' for argument `4' to `void FILLING(FILE*, int, int, float**)' Как исправить?(

Решение задачи: «Передача двумерного массива в функцию»

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);

Объяснение кода листинга программы

  1. Объявляется двумерный массив типа float **array.
  2. С помощью функции malloc() выделяется память под n строк массива, каждая строка имеет тип float *.
  3. Для каждой строки массива вызывается функция malloc(), которая выделяет память под m элементов типа float.
  4. Выполняется действие FILLING(file,n,m,array).
  5. В конце необходимо освободить выделенную память с помощью функции free().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы