Передача двумерного массива в функцию - C (СИ) (74132)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. void FILLING(FILE *file,int n,int m,float** array){
  2. int i;
  3. int j;
  4. for (i = 0; i < n; ++i)//проход по столбцам
  5. for (j = 0; j < m; ++j)//проход по строкам
  6. fscanf(file, "%f", array[i][j]); //заполнили массив из файла
  7. }
Листинг программы
  1. FILE *file;
  2. char *fname = "system.txt";
  3. file = fopen(fname, "r"); //открыли файл на чтение
  4. if (file == NULL)//проверили на месте ли он
  5. printf("File exist!"); //если нет, то предупредили
  6. int n = 0, m = 0, i = 0, j = 0, k; //заводим переменные
  7. SIZE(file,&n);//вызываем функцию для получения размерности
  8. n = n + 1;//количество строк
  9. m = n + 1; //столбцов столько же, сколько и строк +1
  10. float array[n][m]; //создали массив NxN+1
  11. float decision[n]; //массив, где хранятся решения
  12. 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
Листинг программы
  1. float **array;
  2. array = (float **) malloc(n*sizeof(float *));
  3. for(i=0; i<n; i++) array[i] = (float *)malloc(m*sizeof(float));
  4. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы