Разобрать код по созданию динамического массива, который заполняется из файла - C (СИ)
Формулировка задачи:
Собственно хочу спросить у вас правильно ли я понимаю одну вещь...
есть код по созданию динамического массива , в который мы помещаем матрицу чисел , считанных из файла.
Правильно ли я понимаю ... мы работаем с указателем на массив указателей , именно поэтому **mas. А чтобы отправить всё это в функцию ввод мы ставим третью * в определение функции? это был первый момент. Второе что хотелось бы убедиться что я правильно понимаю, как заполняют массив , тоесть обращение к его элементам
(*(mas)+i) - это увеличение адреса второго измерения, и мы перемещаемся по столбцам.
*(*(mas)+i)+j) - это увеличение адреса внешнего массива и мы перемещаемся по строкам.
Попытался объяснить. Скажите правильно я понимаю или нет?
#include<stdio.h> #include<stdlib.h> #include<math.h> void vvod(float ***mas,int *n, int *k,float **mas3,float **mas2); main() { int n,k,p; float **mas,*mas2,*mas3; vvod(&mas,&n,&k,&mas3,&mas2); vivod(mas,n,k); pxod(mas,n,k,mas3,p); vivod(mas,n,k); korni(mas,n,k,mas2,mas3,p); } void vvod(float ***mas,int *n,int *k, float **mas3, float **mas2) { int i,j; FILE* in; in=fopen("text_in.txt","r"); fscanf(in,"%d",n); fscanf(in,"%d",k); *(mas)=(float**)malloc(*n*sizeof(float*)); for(i=0;i<*n;i++) *(*(mas)+i)=(float*)malloc(*k*sizeof(float)); for(i=0;i<*n;i++) for(j=0;j<*k;j++) fscanf(in,"%f",*(*(mas)+i)+j); fclose(in); *mas3=(float*)malloc(*n*sizeof(float)); *mas2=(float*)malloc(*n*sizeof(float)); }
fscanf(in,"%f",*(*(mas)+i)+j);
Решение задачи: «Разобрать код по созданию динамического массива, который заполняется из файла»
textual
Листинг программы
void vvod(float ***mas,int *n, int *k,float **mas3,float **mas2);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д