Правильно оформить двумерный динамический массив. Программа "метод Гаусса" - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите правильно оформить двумерный динамический массив float A[N][M].Ругается компилятор.
Программа "метод Гауса".
#include <stdio.h> #include <stdlib.h> #include <conio.h> void main() { int S; printf("Select size of matrix "); scanf("%d",&S); int N=S,M=S+1; int i,j,x=0,z=0,r,t,c,Index,Max; float K,Q,V[N]; //Змутить динамический массив float **A=(**float)malloc(N*sizeof(float*)); for(i=0;i<N;i++) { A[i]=(*float)malloc(M*sizeof(float)); for(j=0;j<M;j++) { printf("Plese input ellement of matrix A[%d][%d]=",i,j) ; scanf("%f",&A[i][j]); } } printf("\n\nyour matrix\n"); for(i=0;i<N;i++) { printf("\n"); for(j=0;j<M;j++) { printf("%.3f ",A[i][j]); } } //выбор главного элемента for(x=0,z=0;x<N;x++,z++) { K=A[x][z]; if(K==0){ for(i=0,r=0,t=1,Index=0,Max=A[i][r];t<M;r++,t++) { if(Max<=A[x][t])//Поиск индекса максимального элемента в массиве { Max=A[x][t]; Index=t; } } for(c=0;c<N;c++) // V[c ] - временный контейнер под хранение данных { V[c ]=A[c ][z]; } for(c=0;c<N;c++) { A[c ][z]=A[c ][Index]; } for(c=0;c<N;c++) { A[c ][Index]=V[c ]; } // Матрица изменена распечатаем printf("\n\nNEW matrix\n"); for(i=0;i<N;i++) { printf("\n"); for(j=0;j<M;j++) { printf("%.3f ",A[i][j]); } } } } //прямой и обратный ход for(x=0,z=0;x<N;x++,z++) { K=A[x][z]; for(j=z;j<=M;j++) { A[x][j]=A[x][j]/K; } Q=A[x][z]; for(i=x+1;i<=N;i++) { A[i][z]=A[i][z]-Q*A[i][z]; } } for(x=N-1,z=M-2;x!=0,z!=0;z=z-1,x=x-1) { Q=A[x][z]; for(i=x-1;i>=0;i=i-1) { A[i][z]=A[i][z]-Q*A[i][z]; } } printf("\n\nSTUPENCHATYI VID \n"); for(i=0;i<N;i++) { printf("\n"); for(j=0;j<M;j++) { printf("%.3f ",A[i][j]); } } //печатаем РєРѕСЂРЅРё printf("\n\n"); for(i=0;i<N;i++) { Q=A[i][M-1]; printf("x=%f\n",Q); } }
Решение задачи: «Правильно оформить двумерный динамический массив. Программа "метод Гаусса"»
textual
Листинг программы
for (int i=0; i < n; ++i) free(arr[i]); free(arr);
Объяснение кода листинга программы
В данном коде происходит освобождение памяти, выделенной под двумерный динамический массив.
- Создается двумерный динамический массив
arr
с помощью функцииmalloc
. - В цикле
for
происходит освобождение памяти для каждого элемента массиваarr
.- Вызывается функция
free
для каждого элемента массиваarr[i]
.
- Вызывается функция
- После окончания цикла
for
, освобождается память, выделенная под сам массивarr
.- Вызывается функция
free
для переменнойarr
.
- Вызывается функция
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д