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

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

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

Проверьте пожалуйста или я правильно сделал динамический массив!!
Листинг программы
  1. #include<iostream.h>
  2. #include<math.h>
  3. #include<stdio.h>
  4. #include<iomanip.h>
  5. int main()
  6. {
  7. int a[10][10],i,j,n,m,sum=0,*p;
  8. cout<<"Vvedite razmer matrici NxM: "<<endl;
  9. cin>>n>>m;
  10. p=new int[n,m];
  11. for(i=0;i<n;i++)
  12. for(j=0;j<m;j++)
  13. {
  14. cout<<"Vvedite a["<<i<<"]["<<j<<"]: ";
  15. cin>>a[i][j];
  16. }
  17. cout<<"Matrica :"<<endl;
  18. for(i=0;i<n;i++)
  19. {
  20. for(j=0;j<m;j++)
  21. cout<<setw(5)<<a[i][j]<<" ";
  22. cout<<endl;
  23. }
  24. for(i=1;i<n;i+=2)
  25. {
  26. for(j=0;j<m;j++)
  27. {
  28. sum=sum+a[i][j];
  29. }
  30. }
  31. cout<<"Summa nechetnih: "<<sum<<endl;
  32. if(n<=1)
  33. {
  34. cout<<"V matrice otsutstvyut chetnie stroki"<<endl;
  35. }
  36. delete [] p;
  37. return 0;
  38. }
И может кто нибудь может сделать этот же код через malloc ,а то я вообще не разобрался с malloc!! Заранее Спасибо!!!

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

textual
Листинг программы
  1. #include <stdlib.h>
  2. /*...*/
  3. int ** matrix, rows, columns, i, j;
  4. /* где-то как-то получить количество строк (rows) и столбцов (columns) */
  5. if ( ( matrix = malloc(sizeof(int*) * rows) ) == NULL ) {
  6.     /* сообщить об ошибке и выйти */
  7.     perror("malloc");
  8.     exit(1);
  9. }
  10. for ( i = 0; i < rows; ++i ) {
  11.     if ( ( matrix[i] = malloc(sizeof(int) * columns) ) == NULL ) {
  12.         perror("malloc");
  13.         exit(1);
  14.     }
  15. }
  16. for ( i = 0; i < rows; ++i ) {
  17.     for ( j = 0; j < columns; ++j ) {
  18.         /* matrix[i][j] - очередной элемент матрицы */
  19.     }
  20. }
  21. /*...*/
  22. for ( i = 0; i < rows; ++i )
  23.     free(matrix[i]);
  24. free(matrix);
  25. /*...*/

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

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

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


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

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

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы