Проверить корректность реализации динамического массива - C (СИ)
Формулировка задачи:
Проверьте пожалуйста или я правильно сделал динамический массив!!
И может кто нибудь может сделать этот же код через malloc ,а то я вообще не разобрался с malloc!!
Заранее Спасибо!!!
#include<iostream.h> #include<math.h> #include<stdio.h> #include<iomanip.h> int main() { int a[10][10],i,j,n,m,sum=0,*p; cout<<"Vvedite razmer matrici NxM: "<<endl; cin>>n>>m; p=new int[n,m]; for(i=0;i<n;i++) for(j=0;j<m;j++) { cout<<"Vvedite a["<<i<<"]["<<j<<"]: "; cin>>a[i][j]; } cout<<"Matrica :"<<endl; for(i=0;i<n;i++) { for(j=0;j<m;j++) cout<<setw(5)<<a[i][j]<<" "; cout<<endl; } for(i=1;i<n;i+=2) { for(j=0;j<m;j++) { sum=sum+a[i][j]; } } cout<<"Summa nechetnih: "<<sum<<endl; if(n<=1) { cout<<"V matrice otsutstvyut chetnie stroki"<<endl; } delete [] p; return 0; }
Решение задачи: «Проверить корректность реализации динамического массива»
textual
Листинг программы
#include <stdlib.h> /*...*/ int ** matrix, rows, columns, i, j; /* где-то как-то получить количество строк (rows) и столбцов (columns) */ if ( ( matrix = malloc(sizeof(int*) * rows) ) == NULL ) { /* сообщить об ошибке и выйти */ perror("malloc"); exit(1); } for ( i = 0; i < rows; ++i ) { if ( ( matrix[i] = malloc(sizeof(int) * columns) ) == NULL ) { perror("malloc"); exit(1); } } for ( i = 0; i < rows; ++i ) { for ( j = 0; j < columns; ++j ) { /* matrix[i][j] - очередной элемент матрицы */ } } /*...*/ for ( i = 0; i < rows; ++i ) free(matrix[i]); free(matrix); /*...*/
Объяснение кода листинга программы
- Объявлены переменные:
matrix
- указатель на массив указателей наint
, инициализированный какNULL
.rows
- количество строк в матрице.columns
- количество столбцов в матрице.i
- индекс строки.j
- индекс столбца.
- Проверяется корректность выделения памяти под массив указателей на
int
. Если память не может быть выделена, программа выводит сообщение об ошибке и завершает свое выполнение. - В цикле выделяется память под каждую строку матрицы. Если память не может быть выделена, программа выводит сообщение об ошибке и завершает свое выполнение.
- В цикле заполняются элементы матрицы.
- В цикле освобождается память, выделенная под каждую строку матрицы.
- Освобождается память, выделенная под массив указателей на
int
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д