Ошибка при создании двумерного динамического массива - C (СИ)
Формулировка задачи:
Нужно создать матрицу (на основе динамики (язык СИ)).
В чем ошибка?
Листинг программы
- void main()
- {
- int i,j,n,m;
- printf(" input size N:\n");
- scanf("%i",&n);
- printf(" input size M:\n");
- scanf("%i",&m);
- int **matrica=(int**)malloc(n* sizeof(int*));
- for(i=0;i<n;++i)
- matrica[i]=malloc(m*sizeof(int));
- for(i=0; i<n; i++)
- for(j=0; j<m; j++)
- matrica[i][j] = rand()%10;
- //conclusion
- for(i = 0; i < n; i++)
- {
- for(j = 0; j < m; j++)
- printf("%i",matrica[i][j]);
- }
- getch();
- }
Решение задачи: «Ошибка при создании двумерного динамического массива»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <time.h>
- int main()
- {
- int i, j, n, m;
- printf("Input size N: ");
- scanf("%d", &n);
- printf("Input size M: ");
- scanf("%d", &m);
- int **matrica = (int **)malloc(n * sizeof(int *));
- for (i = 0; i < n; i++)
- matrica[i] = (int *)malloc(m * sizeof(int));
- srand(time(NULL));
- for (i = 0; i < n; i++)
- for (j = 0; j < m; j++)
- matrica[i][j] = rand() % 11;
- for(i = 0; i < n; i++)
- {
- for(j = 0; j < m; j++)
- printf("%d ", matrica[i][j]);
- printf("\n");
- }
- getch();
- return 0;
- }
Объяснение кода листинга программы
В этом коде создается двумерный динамический массив (матрица) на языке C.
- В начале кода подключаются необходимые библиотеки:
- stdio.h используется для работы с вводом/выводом данных;
- stdlib.h используется для работы с памятью;
- conio.h используется для работы с клавиатурой и дисплеем;
- time.h используется для получения текущего времени.
- Затем идет объявление переменных:
- i, j, n, m - это целочисленные переменные, используемые для управления циклами;
- matrica - это двумерный массив (матрица), который будет заполняться значениями.
- Пользователю предлагается ввести размеры матрицы:
- сначала пользователю предлагается ввести размер первой размерности матрицы (n);
- затем пользователю предлагается ввести размер второй размерности матрицы (m).
- Выделяется память под матрицу и ее элементы:
- с помощью функции malloc() выделяется память под матрицу (n sizeof(int ));
- затем с помощью вложенного цикла для каждого элемента матрицы выделяется память под его значения (m * sizeof(int)).
- Заполнение матрицы случайными значениями:
- с помощью функции rand() генерируются случайные числа от 0 до 10 (включительно);
- полученное случайное число с помощью оператора % (остаток от деления) ограничивается от 0 до 10;
- полученное число присваивается соответствующему элементу матрицы.
- Вывод значений матрицы на экран:
- с помощью вложенного цикла и функции printf() выводятся значения всех элементов матрицы через пробел.
- Ожидание нажатия клавиши:
- функция getch() ожидает нажатия клавиши на клавиатуре, что позволяет пользователю увидеть результаты работы программы.
- Завершение программы:
- возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д