Создать процедуру, формирующую вектор vector2n-1 из максимальных элементов диагоналей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задание: создать процедуру, формирующую вектор vector2n-1 из максимальных элементов диагоналей целочисленного квадратного массива matrixnn, параллельных его главной диагонали. Есть код, но он работает немного неправильно, строит вектор неверно, помогите исправить, у кого какие соображения? Код:
#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");
}

Решение задачи: «Создать процедуру, формирующую вектор vector2n-1 из максимальных элементов диагоналей»

textual
Листинг программы
#include <stdio.h>
 
int vect[40];
int massiv[50][50];
 
void Vector(int massiv[50][50], int n, int vect[40])
{
int i, j, k, max;
 
   for (j = 1; i < n * 2 - 1; j++)
   {
     if (j <= n)
         {
        max=massiv[n-j+1][1];
           for(i=n-j+1; i<n; i++)
                if(massiv[i][i-n+j]>max)
                      max=massiv[i,i-n+j];
                      vect[j]=max;
          }
     else
         {
         max=massiv[1][j-n+1];
            for(i=1; i<n*2-j;i++)
                if (massiv[i][i+j-n]>max)
                  max=massiv[i][i+j-n];
                  vect[j]=max;
         }
     }
 
}
int main()
{
int i, j, n, massiv_min, massiv_max;
 
    printf("\nInput number of rows and columns: "); scanf("%d", &n);
    printf("\nInput the lower border of range: ");  scanf("%d", &massiv_min);
    printf("\nInput the upper border of range: ");  scanf("%d", &massiv_max);
 
    int massiv[n][n];
 
    printf("\nSource massive:\n");
 
    for (i=0; i<n; i++) // getting of random number in range
     {
        for (j=0; j<n; j++)
            {
                massiv[i][j]=rand()%(massiv_max-massiv_min + 1) + massiv_min;
                printf("%7d", massiv[i][j]);
            }
    printf("\n");
    }
 
 Vector(massiv,n,vect);
 
  printf("Vector:\n");
    for (i = 1; i < n * 2 - 1; i++)
  printf("%d",vect);
  printf("\n");
}

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


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

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

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