Создать процедуру, формирующую вектор 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"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д