Перевести из С++ в С. Вывести матрицу по образцу - C (СИ)
Формулировка задачи:
Должна же вывестись матрица такого вида
12345
01234
00123
00012
00001
Написала программу на С++, преподаватель попросил перевести на С. Помогите пожалуйста
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
printf("Vvedite n: ");
scanf("%d", &n);
if (n <= 0)
{
printf ("Error!");
return 0;
}
int arr = new int[n];
for (int i = 0; i < n; ++i)
{
array[i] = new int[n];
for (int j = n-1; 0 <= j; --j)
{
array[i][j] = ((0 < j+1) ? ((0 < j-i+1) ? (j-i+1) : 0) : 0);
}
}
printf("Матрица: ");
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
printf ("array[i][j] ' '");
}
scanf("%d",&n)
}
for (int i = 0; i < n; ++i)
{
delete [] array[i];
}
delete [] array;
}
}Решение задачи: «Перевести из С++ в С. Вывести матрицу по образцу»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int main()
{
int n, **arr,i, j;
printf("Vvedite n: ");
scanf("%d", &n);
if (n <= 6)
{
printf ("Error!");
return 0;
}
arr = (int **)malloc(n*sizeof(int *));
for (i = 0; i < n; i++)
{
arr[i] = (int *) malloc(n*sizeof(int));
for (j = n-1; 0 <= j; --j)
{
arr[i][j] = ((0 < j+1) ? ((0 < j-i+1) ? (j-i+1) : 0) : 0);
}
}
printf("Матрица: \n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf ("%d ", arr[i][j]);
}
printf("\n");
}
for (i = 0; i < n; ++i) free(arr[i]);
free(arr);
return 0;
}
Объяснение кода листинга программы
- Программа запрашивает у пользователя ввод числа n, которое будет использоваться для определения размеров матрицы.
- Если n меньше или равно 6, программа выводит сообщение об ошибке и завершает работу.
- Программа выделяет память под массив указателей на int, который будет использоваться для хранения адресов строк матрицы.
- Затем программа выделяет память под каждую строку матрицы.
- В каждой строке заполняются значения матрицы согласно заданному образцу.
- Программа выводит матрицу на экран.
- После использования матрицы, память освобождается.