Матрицадагы барлык диагональдарын максимумдарын табу
#include <stdio.h>
#include <conio.h>
#define nmax 100
void main()
{
clrscr();
int a[nmax][nmax];
int b[100];
int min,max;
int n,i,j,c,sum,k,l,p,k1;
printf("Vvedite n->");
scanf("%d",&n);//
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
printf("\n Matrisa a \n\n");
for (i=1;i<=n;i++){
for (j=1;j<=n;j++){
printf( " %d ",a[i][j]);
}
printf("\n");}
////
printf("\nbasti dioganal max\n");
for (l=1;l<=2*n-1;l++){
sum=0;
if(l<=n){
max=a[n][l];
for(i=n-l+1;i<=n;i++)
if (a[i][i-n+l]>max) max=a[i][i-n+l];
b[l]=max;
printf("\n max diagonal %i",max);
}
else{
if(l>n){
max=a[1][l-n+1];
for (i=1;i<=2*n-l;i++)
if (a[i][i+l-n]>max) max=a[i][i+l-n];
b[l]=max;
printf("\n max diagonal %i",max);
}
}
}
/// pobochny
printf("\n\n pobochnyi diagonal max \n");
for (l=1;l<=2*n-1;l++){
sum=0;if(l<=n)
{
max=a[l][1];
for (i=1;i<=l;i++)
if (a[i][l-i+1]>max) max=a[i][l-i+1];
b[l+(2*n-1)]=max;
printf("\n max diagonal %i",max);
}
else {
if(l>n){
max=a[l-n+1][n];
for (i=l-n+1;i<=n;i++)
if (a[i][l-i+1]>max) max=a[i][l-i+1];
b[l+(2*n-1)]=max;
printf("\n max diagonal %i",max);
}
}
}
printf("\n");
for (i=1;i<=2*(2*n-1);i++)
printf("%i ",b[i]);
getch();
}