Проверить корректность реализации динамического массива - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д