Создать процедуру, формирующую вектор из максимальных элементов диагоналей целочисленного квадратного массива - C (СИ)
Формулировка задачи:
нужна помощь по переводу кода в СИ
uses crt; type mas=array[1..20, 1..20] of integer; var n, i, j: integer; v:array[1..40] of integer; a:mas; procedure Vector(a:mas); var x, y, i, j, max : integer; begin for i := 1 to 2 * n - 1 do begin if (i <= n) then begin x := i; y := 1; end else begin x := n; y := i - n + 1; end; while((x > 0) and (y <= n)) do begin if a[x, y] > max then max := a[x, y]; x := x - 1; y := y + 1; end; v[i] := max; end; end; begin write('n='); readln(n); writeln(‘Enter ',n*n,' of elements of a matrix:'); for i := 1 to n do for j := 1 to n do begin write('a[',i,',',j,']='); read(a[i,j]); end; writeLn('Initial matrix’); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeLn; end; Vector(a); writeln('Vector:'); for i := 1 to 2 * n - 1 do write(v[i], ' '); writeln; end.
Решение задачи: «Создать процедуру, формирующую вектор из максимальных элементов диагоналей целочисленного квадратного массива»
textual
Листинг программы
#include <stdio.h> int mas[20][20]; int v[40]; void Vector(int a[][20],int n) { int x, y, i, max; for (i = 0; i < n * 2 - 1; i++) { if (i < n) { x = i; y = 0; } else { x = n-1; y = i-n+1; } while (x >= 0 && y < n) { if (a[x][y] > max) max = a[x][y]; x--; y++; } v[i] = max; } } void main() { int i, j,n; printf("n="); scanf("%d", &n); printf("Enter elements of a matrix:\n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("a[%d][%d]= ",i,j); scanf("%d",&mas[i][j]); } } printf("Initial matrix\n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) printf("%4d", mas[i][j]); printf("\n"); } Vector(mas,n); printf("Vector:\n"); for (i = 0; i < n * 2 - 1; i++) printf("%d ", v[i]); printf("\n"); }
Объяснение кода листинга программы
Код представляет собой функцию C, которая создает вектор из максимальных элементов диагоналей целочисленного квадратного массива. Список действий:
- Ввод размера матрицы с помощью функции scanf.
- Ввод элементов матрицы с помощью двух вложенных циклов и функции scanf.
- Вывод начальной матрицы с помощью двух вложенных циклов и функции printf.
- Создание вектора с помощью функции Vector, которая ищет максимальные элементы по диагонали.
- Вывод полученного вектора с помощью функции printf.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д