Ошибка при создании двумерного динамического массива - C (СИ)

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

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

Нужно создать матрицу (на основе динамики (язык СИ)). В чем ошибка?
Листинг программы
  1. void main()
  2. {
  3. int i,j,n,m;
  4. printf(" input size N:\n");
  5. scanf("%i",&n);
  6. printf(" input size M:\n");
  7. scanf("%i",&m);
  8. int **matrica=(int**)malloc(n* sizeof(int*));
  9. for(i=0;i<n;++i)
  10. matrica[i]=malloc(m*sizeof(int));
  11. for(i=0; i<n; i++)
  12. for(j=0; j<m; j++)
  13. matrica[i][j] = rand()%10;
  14. //conclusion
  15. for(i = 0; i < n; i++)
  16. {
  17. for(j = 0; j < m; j++)
  18. printf("%i",matrica[i][j]);
  19. }
  20. getch();
  21. }

Решение задачи: «Ошибка при создании двумерного динамического массива»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. int main()
  7. {
  8.     int i, j, n, m;
  9.  
  10.     printf("Input size N: ");
  11.     scanf("%d", &n);
  12.     printf("Input size M: ");
  13.     scanf("%d", &m);
  14.  
  15.     int **matrica = (int **)malloc(n * sizeof(int *));
  16.    
  17.     for (i = 0; i < n; i++)
  18.         matrica[i] = (int *)malloc(m * sizeof(int));
  19.  
  20.     srand(time(NULL));
  21.  
  22.     for (i = 0; i < n; i++)
  23.         for (j = 0; j < m; j++)
  24.             matrica[i][j] = rand() % 11;
  25.  
  26.     for(i = 0; i < n; i++)
  27.     {
  28.         for(j = 0; j < m; j++)
  29.             printf("%d ", matrica[i][j]);
  30.  
  31.         printf("\n");
  32.     }
  33.    
  34.     getch();
  35.     return 0;
  36. }

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

В этом коде создается двумерный динамический массив (матрица) на языке C.

  1. В начале кода подключаются необходимые библиотеки:
    • stdio.h используется для работы с вводом/выводом данных;
    • stdlib.h используется для работы с памятью;
    • conio.h используется для работы с клавиатурой и дисплеем;
    • time.h используется для получения текущего времени.
  2. Затем идет объявление переменных:
    • i, j, n, m - это целочисленные переменные, используемые для управления циклами;
    • matrica - это двумерный массив (матрица), который будет заполняться значениями.
  3. Пользователю предлагается ввести размеры матрицы:
    • сначала пользователю предлагается ввести размер первой размерности матрицы (n);
    • затем пользователю предлагается ввести размер второй размерности матрицы (m).
  4. Выделяется память под матрицу и ее элементы:
    • с помощью функции malloc() выделяется память под матрицу (n sizeof(int ));
    • затем с помощью вложенного цикла для каждого элемента матрицы выделяется память под его значения (m * sizeof(int)).
  5. Заполнение матрицы случайными значениями:
    • с помощью функции rand() генерируются случайные числа от 0 до 10 (включительно);
    • полученное случайное число с помощью оператора % (остаток от деления) ограничивается от 0 до 10;
    • полученное число присваивается соответствующему элементу матрицы.
  6. Вывод значений матрицы на экран:
    • с помощью вложенного цикла и функции printf() выводятся значения всех элементов матрицы через пробел.
  7. Ожидание нажатия клавиши:
    • функция getch() ожидает нажатия клавиши на клавиатуре, что позволяет пользователю увидеть результаты работы программы.
  8. Завершение программы:
    • возвращается 0, что означает успешное завершение работы программы.

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


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

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

15   голосов , оценка 3.933 из 5

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

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

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