Создать процедуру, формирующую вектор из максимальных элементов диагоналей целочисленного квадратного массива - 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, которая создает вектор из максимальных элементов диагоналей целочисленного квадратного массива. Список действий:

  1. Ввод размера матрицы с помощью функции scanf.
  2. Ввод элементов матрицы с помощью двух вложенных циклов и функции scanf.
  3. Вывод начальной матрицы с помощью двух вложенных циклов и функции printf.
  4. Создание вектора с помощью функции Vector, которая ищет максимальные элементы по диагонали.
  5. Вывод полученного вектора с помощью функции printf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы