Bài 347(*): Đếm số lượng giá trị “Yên Ngựa” ma trận Một phần tử gọi Yên Ngựa lớn dòng nhỏ cột #include #include #include #include #include #define MAX 100 void NhapMang(int a[][MAX], int &dong, int &cot) { //Nhập số dòng { printf("\nNhap vao so dong: "); // Cách tà đạo: scanf("dong =%d",&dong); // Lúc nhập phải viết thêm scanf("%d",&dong); if(dong < || dong > MAX) { printf("\nSo dong khong hop le Xin kiem tra lai!"); } }while(dong < || dong > MAX); //Nhập số cột chữ ( dong = ) khung console { printf("\nNhap vao so cot: "); scanf("%d",&cot); if(cot < || cot > MAX) { printf("\nSo cot khong hop le Xin kiem tra lai!"); } }while(cot < || cot > MAX); for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { printf("\nNhap a[%d][%d] = ", i, j); scanf("%d", &a[i][j]); } } } void XuatMang(int a[][MAX], int dong, int cot) { for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { printf("%4d", a[i][j]); } printf("\n\n"); } } int TimPhanTuNhoNhatDong(int a[][MAX], int vtdong, int vtcot, int dong, int cot) { int x = a[vtdong][vtcot]; for(int i = 0; i < cot; i++) { if(a[vtdong][i] < x) { return false; } } return true; } int TimPhanTuLonNhatCot(int a[][MAX], int vtdong, int vtcot, int dong, int cot) { int x = a[vtdong][vtcot]; for(int j = 0; j < dong; j++) { if(a[j][vtcot] > x) { return false; } } return true; } void DemSoPhanTuYenNgua(int a[][MAX], int dong, int cot) { int dem = 0; for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { if(TimPhanTuNhoNhatDong(a, i, j, dong, cot) && TimPhanTuLonNhatCot(a, i, j, dong, cot)) { printf ("A[%d][%d] = %d la mot diem yen ngua \n", i, j, a[i][j]); dem++; } } } printf("\nSo phan tu yen ngua la %d", dem); } int main() { int a[MAX][MAX], dong, cot; NhapMang(a, dong, cot); XuatMang(a, dong, cot); DemSoPhanTuYenNgua(a, dong, cot); getch(); return 0; }