Помогите пожалуйста с задачкой.Для каждого элемента А(i,j) найти наиб.значение среди всех четных элементов в выделенной области.Результат представить в виде таблицы.Помогите пожалуйста,в графе результат появляется не то число,почему то неправильно создается область,кто знает где ошибка в коде
| Код | #include <stdio.h> #include <conio.h>
int A[20][20]; int C[100]; int N,M; int k,s; int poisk_max(int);
void vvod_massiva() {int i,j; printf("\n Vvedite kol-vo strok i stolbcov \n"); scanf("%d %d",&N,&M); printf("\n Vvedite matricy: \n"); for(i=1;i<=N;i++) {for(j=1;j<=M;j++) scanf("%d",&A[i][j]); } }
void vivod_massiva() { int i,j; printf("\n Vasha matrica \n"); for(i=1;i<=N;i++) { for(j=1;j<=M;j++) printf("%d ",A[i][j]); printf("\n"); } }
int postroenieoblasti(int x,int y) {
int W; int i,j; int max;
k=1; for(j=y;j>=1;j--) //прямая { C[k]=A[x][j]; printf("%d",C[k]); k++; }
for(i=x-1,j=y+1;i>=1,j<=M;i--,j++) // верхняя диагональ { C[k]=A[i][j]; k++;
} for(i=x+1,j=y+1;i<=N,j<=M; i++,j++) // нижняя диагональ { C[k]=A[i][j]; k++;} s=k-1; W=poisk_max(s);
return W;
}
int poisk_max(int s) { int max; for(k=1;k<=s;k++) { if(C[k]%2==0) { max=C[k]; break; } } for(k=1;k<=s;k++) {if(C[k]%2==0 && C[k]>max) max=C[k];} return max; }
int main () { int i,j,a,x,y; vvod_massiva(); vivod_massiva();
printf("| N | i | j | rezultat |\n"); printf("| | | | |\n");
a=1; for(x=1;x<=N;x++) for(y=1;y<=M;y++)
{
A[x][y]=postroenieoblasti(x,y);
printf("|%3d|%3d|%3d|%10d|\n",a,x,y,A[x][y]); a++; }
getch();
}
|
|