Проверить корректность реализации динамического массива - C (СИ)

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

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

Проверьте пожалуйста или я правильно сделал динамический массив!!
#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;
}
И может кто нибудь может сделать этот же код через malloc ,а то я вообще не разобрался с malloc!! Заранее Спасибо!!!

Решение задачи: «Проверить корректность реализации динамического массива»

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);
/*...*/

Объяснение кода листинга программы

  1. Объявлены переменные:
    • matrix - указатель на массив указателей на int, инициализированный как NULL.
    • rows - количество строк в матрице.
    • columns - количество столбцов в матрице.
    • i - индекс строки.
    • j - индекс столбца.
  2. Проверяется корректность выделения памяти под массив указателей на int. Если память не может быть выделена, программа выводит сообщение об ошибке и завершает свое выполнение.
  3. В цикле выделяется память под каждую строку матрицы. Если память не может быть выделена, программа выводит сообщение об ошибке и завершает свое выполнение.
  4. В цикле заполняются элементы матрицы.
  5. В цикле освобождается память, выделенная под каждую строку матрицы.
  6. Освобождается память, выделенная под массив указателей на int.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы