Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы «уголками» - C (СИ)
Формулировка задачи:
Возникла проблема в решении матриц, помогите пожалуйста!!!
1. Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы следующим образом («уголками»): все элементы первого столбца; элементы последней строки, кроме первого (уже выведенного) элемента; оставшиеся элементы второго столбца; оставшиеся элементы предпоследней строки и т. Д.; последним выводится элемент A1,M. Вот что получилось:#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
main()
{
int n,i,j,k,a[n][n],j1;
printf("vvedite razmer matrici: ");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
if (i%2==1)
for(j=i;j<=n;j++)
printf("[%d][%d]",i,j);
if (i%2==0)
for(j1=i;j1<=n;j++)
printf("[%d][%d]",j1,i);
}
}program n4_4;
const m=5;
var a:array[1..m,1..m] of integer;
i,j,j1:integer;
begin
for i:=1 to m do
for j:=1 to m do
a[i,j]:=random(100);
for i:=1 to m do
begin
if i mod 2=1 then
for j:=i to m do
write('[',i,',',j,'] ');
if i mod 2=0 then
for j1:=i to m do
write('[',j1,',',i,'] ');
writeln;
end;
readln;
end.Решение задачи: «Дана квадратная матрица A порядка M. Начиная с элемента A1,1, вывести ее элементы «уголками»»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <conio.h>
main()
{
int n;
srand(time(NULL));
scanf("%d", &n);
int **arr = (int **)malloc(n*sizeof(int*));
if(arr)
{
for(int i = 0; i < n; i++)
{
arr[i] = (int*)malloc(n*sizeof(int));
for (int j = 0; j < n; ++j)
arr[i][j] = rand()%500;
if(!arr[i])
{
for (int i = 0; i < n; ++i)
free(arr[i]);
return 0;
}
}
}
printf("==========\n");
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
printf("%d\t", arr[i][j]);
printf("\n");
}
printf("==========\n\n");
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n - i; ++j)
printf("%d ", arr[j][i]);
for (int j = i + 1; j < n; ++j)
printf("%d ", arr[n-i-1][j]);
}
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлена переменная
nтипаint, которая содержит размерность матрицы. - Выполняется инициализация генератора случайных чисел.
- Выводится приглашение для ввода размера матрицы.
- Под динамическую память выделяется массив указателей на
int. - В цикле заполняются все элементы матрицы случайными числами.
- Выводится приглашение для вывода матрицы.
- В двух вложенных циклах выводятся все элементы матрицы.
- Выводится приглашение для вывода диагоналей матрицы.
- В двух вложенных циклах выводятся элементы главной и побочной диагоналей.
- Программа ожидает нажатия клавиши для завершения работы.