Đề: liệt kê tất cả các điểm lồi trong mảng 2 chiều(điểm lỗi là điểm mà nó lớn hơn 4 điểm:ở trên, ở dưới, bên trái và bên phải nó, có thể hiểu nó là điểm ngay chính giữa dấu +)
Code của em đây:
Mã:
#include<stdio.h>#include<stdlib.h>#include<time.h> #define N 100 int main(void){ int a[N][N]; int n; srand(time(0)); printf("Nhap n"); scanf("%d",&n); for(int i=0; i<n+2; i++) for(int j=0; j<n+2; j++) a[i][j]=0; for(int i=1; i<n+1; i++) for(int j=1; j<n+1; j++) a[i][j]=rand()%9+1; for(int i=1; i<n+1; i++){ for(int j=1; j<n+1; j++) printf("%d ",a[i][j]); printf("
");} for(int i=1; i<n+1; i++) for(int j=1; j<n+1; j++) if(a[i][j]>a[i][j-1] &&a[i][j]>a[i-1][j] &&a[i][j]>a[i][j+1] &&a[i][j]>a[i+1][j]) { printf("Diem loi %d o vi tri[%d][%d]
",a[i][j],i-1,j-1); } // Cach khac /*int X[4]={0,-1,0,1}; int Y[4]={-1,0,1,0}; for(int i=1; i<n+1; i++) for(int j=1; j<n+1; j++) for(int k=0; k<4; k++) if(a[i][j]>a[i+X[k]][j+Y[k]]) printf("%d",a[i][j]);*/ return 0;}
cách 1 thì làm đc rùi nhưng thầy kêu nên làm theo cách khác vì ở đây chỉ so sanh 4 số nên làm if đc, còn nhiều số hơn thì không nên làm vậy.
Ở cái cách khác
Mã:
// Cach khac /*int X[4]={0,-1,0,1}; int Y[4]={-1,0,1,0}; for(int i=1; i<n+1; i++) for(int j=1; j<n+1; j++) for(int k=0; k<4; k++) if(a[i][j]>a[i+X[k]][j+Y[k]]) printf("%d",a[i][j]);*/
mình muốn cho nó thỏa mãn cả khi k chạy từ 0-->4 mới in ra thì phải làm sao vì nếu như này thi nó chỉ cần thỏa 1 cái nó đã in ra rùi
View more random threads:
Vệ sinh cá nhân là một phần quan yếu của sức khỏe nam giới. Dùng dung dịch vệ sinh mỗi ngày mang lại nhiều ích, giúp loại bỏ vi khuẩn và vi sinh vật gây hại, giúp khu vực cơ quan sinh dục luôn sạch...
Gel vệ sinh cu, bạn trai có nên...