Сформировать целочисленную матрицу по правилу - C (СИ) (76886)
Формулировка задачи:
Даны целые положительные числа M и N. Сформировать целочисленную матрицу размера M на N, у котрой все элементы J-го столбца имеют значение 5*J (J=1,....,N).
Помогите пожалуйтса!!!!
Решение задачи: «Сформировать целочисленную матрицу по правилу»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int m, n, **v, i, j;
printf("enter m n: ");
scanf("%d %d", &m, &n);
if (n <= 0 || m <= 0)
{
fprintf(stderr, "error, invalid input data");
exit(-1);
}
v = (int**)calloc(m, sizeof(int*));
if (v == NULL)
{
fprintf(stderr, "memory allocation error");
exit(-2);
}
for (i = 0; i < m; ++i)
{
v[i] = (int*)calloc(n, sizeof(int));
if (v[i] == NULL)
{
fprintf(stderr, "memory allocation error");
exit(-3);
}
}
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
{
v[i][j] = 5 * (j+1);
}
}
for (i = 0; i < m; ++i)
{
for (j = 0; j < n; ++j)
printf("%3d ", v[i][j]);
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
- m, n - вводные значения количества строк и столбцов матрицы соответственно;
- v - указатель на массив указателей, который будет содержать в себе указатели на каждый из подмассивов матрицы.
- Пользователю предлагается ввести количество строк и столбцов матрицы.
- Если пользователь ввёл некорректные значения (м <= 0 || n <= 0), то выводится сообщение об ошибке и программа завершается.
- Выделяется память под массив указателей на int с помощью функции calloc. Если память выделить не удалось, то выводится сообщение об ошибке и программа завершается.
- В цикле формируются подмассивы матрицы. Для каждого подмассива выделяется память под массив int, если память выделить не удалось, то выводится сообщение об ошибке и программа завершается.
- В цикле заполняются значениями элементов матрицы. Каждое значение элементов матрицы равно 5*(j+1), где j - номер столбца элемента.
- В цикле выводятся значения элементов матрицы на экран.
- Программа завершается.