1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuyên đề mảng 2 chiều phần 3 doc

13 944 16

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 125,12 KB

Nội dung

for (int j=0; j<cot; j++) if (SoHoanThien(a[i][j])==1) dem[i]++; int Max = dem[0]; for (i=1; i<dong; i++) Max = (Max>dem[i])?Max:dem[i]; for (i = 0; i< dong ;i++) if (Max == dem[i]) printf("\nDong %d co so nguyen to nhieu nhat la %d", i,Max); } 390 * Liệt kê các cột có nhiều chữ số nhất void LietKe(int a[][100], int cot, int dong) { int dem[100] = {0}; for (int i=0; i<cot; i++) { for (int j=0; j<dong; j++) { int tam; tam = abs(a[j][i]); do { dem[i]++; tam=tam/10; } while (tam>0); } } int Max = dem[0]; for (i=1; i<cot; i++) Max = (Max>dem[i])?Max:dem[i]; for (i = 0; i<cot ;i++) if (Max == dem[i]) printf("\nCot %d co nhieu chu so nhat la %d", i,Max); } 391 * Tìm ma trận con có tổng lớn nhất Kĩ thuật xử lý ma trận 392 Hoán vị hai dòng ma trận void HoanVi2Dong(int a[][100],int dong, int d1, int d2) { int temp[100]; for (int i=0; i<cot; i++) { temp[i] = a[d1][i]; a[d1][i] = a[d2][i]; a[d2][i] = temp[i]; } } 393 Hoán vị hai cột ma trận void HoanVi2Cot(int a[][100],int cot,int c1, int c2) { int temp[100]; for (int i=0; i<dong; i++) { temp[i] = a[i][c1]; a[i][c1] = a[i][c2]; a[i][c2] = temp[i]; } } 394 Dịch xuống xoay vòng các hàng trong ma trận void DichXuong(int a[][100], int cot, int dong) { int temp[100]; for (int i=0; i<dong; i++) { temp[i] = a[cot-1][i]; } for (i = cot-1; i>=1; i ) { for (int j=0; j<dong; j++) { a[i][j] = a[i-1][j]; } } for (i=0; i<dong; i++) { a[0][i] = temp[i] ; } } 395 Dịch lên xoay vòng các hàng trong ma trận void DichLen(int a[][100], int cot, int dong) { int temp[100]; for (int i=0; i<cot; i++) { temp[i] = a[0][i]; } for (i = 0; i<dong-1; i++) { for (int j=0; j<cot; j++) { a[i][j] = a[i+1][j]; } } for (i=0; i<cot; i++) { a[dong-1][i] = temp[i] ; } } 396 Dịch trái xoay vòng các cột trong ma trận void DichTrai(int a[][100], int cot, int dong) { int temp[100]; for (int i=0; i<dong; i++) { temp[i] = a[i][0]; } for (int j = 0; j<cot-1; j++) { for (i=0; i<dong; i++) { a[i][j] = a[i][j+1]; } } for (i=0; i<dong; i++) { a[i][cot-1] = temp[i] ; } } 397 Dịch phải xoay vòng các cột trong ma trận void DichPhai(int a[][100], int cot, int dong) { int temp[100]; for (int i=0; i<dong; i++) { temp[i] = a[i][cot-1]; } for (int j = cot-1; j>0; j ) { for (i=0; i<dong; i++) { a[i][j] = a[i][j-1]; } } for (i=0; i<dong; i++) { a[i][0] = temp[i] ; } } 398 Dịch phải xoay vòng theo chiều kim đồng hồ các giá trị nằm trên biên void DichPhaiXoayVong(int a[][100], int n, int m) // n dòng m c?t { int i, j; //i dong , j cot int tam = a[0][0]; for (i=0,j=i; i< n-1; i++) //n=4, m = 5 { a[i][j] = a[i+1][j]; //i = 3 > dung, j =0 } for (j,i; j< m -1; j++ ) { a[i][j] = a[i][j+1]; //i=3 > j = 4 } for (i,j; i>0; i ) { a[i][j] = a[i-1][j]; //i = 0 > j =4 } for (i,j; j>1; j ) { a[i][j] = a[i][j-1]; //i = 0 > j = 1 } a[0][1] = tam; } 399 Dịch trái xoay vòng theo chiều kim đồng hồ các giá trị nằm trên biên void DichTraiXoayVong(int a[][100], int cot, int dong) { int i, j; int tam = a[0][0]; for (i=0,j=0; j< cot-1; j++) { a[i][j] = a[i][j+1]; } for (i,j; i< dong-1; i++ ) { a[i][j] = a[i+1][j]; } for (i,j; j>0; j ) { a[i][j] = a[i][j-1]; } for (i,j; i>1; i ) { a[i][j] = a[i-1][j]; } a[1][0] = tam; } 400 Xóa 1 dòng trong ma trận void Xoa(int a[][100], int cot, int &dong) { printf("Nhap chi so dong ban muon xoa"); int x,i,j; do { scanf("%d", &x); } while ( x<0 || x>=dong); for ( i=x;i<dong-1;i++ ) { for (j=0; j<cot;j++) { a[i][j] = a[i+1][j]; } } dong ; } 401 Xóa 1 cột trong ma trận void Xoa(int a[][100], int &cot, int dong) { printf("Nhap chi so cot ban muon xoa"); int x,i,j; do { scanf("%d", &x); } while ( x<0 || x>=cot); for ( i=x;i<cot-1;i++ ) { for (j=0; j<dong;j++) { a[j][i] = a[j][i+1]; } } cot ; } 402 Xoay ma trận 1 góc 90 độ void XoayMaTran(int a[][100], int cot, int dong) { for (int i=0;i<cot; i++) { for (int j=dong-1; j>=0; j ) { printf("%4d",a[j][i]); } printf("\n"); } } 403 Xoay ma trận 1 góc 180 độ void XoayMaTran(int a[][100], int cot, int dong) { for (int i=dong-1;i>=0; i ) { for (int j=0; j<cot; j++) { printf("%4d",a[i][j]); } printf("\n"); } } 404 Xoay ma trận 1 góc 270 độ void XoayMaTran(int a[][100], int cot, int dong) { for (int i=cot-1;i>=0; i ) { for (int j=0; j<dong; j++) { printf("%4d",a[j][i]); } printf("\n"); } } 405 Chiếu gương ma trận theo trục dọc void XoayMaTran(int a[][100], int cot, int dong) { for (int i=0;i<dong; i++) { for (int j=cot-1; j>=0; j ) { printf("%4d",a[i][j]); } printf("\n"); } } 406 Chiếu gương ma trận theo trục ngang void XoayMaTran(int a[][100], int cot, int dong) { for (int i=dong-1;i>=0; i ) { for (int j=0; j<cot; j++) { printf("%4d",a[i][j]); } printf("\n"); } } Kĩ thuật sắp xếp 407 Sắp xếp ptử trên 1 dòng tăng dần từ trái sang phải void SapXep(int a[][100], int cot, int dong) { int x; printf("Nhap dong muon sap xep: "); scanf("%d",&x); for (int j=0; j<cot-1; j++) { for (int k=j+1; k<cot;k++) { if (a[x][j]>a[x][k]) { int temp = a[x][j]; a[x][j] = a[x][k]; a[x][k] = temp; } } } } 408 Sắp xếp ptử trên 1 dòng giảm dần từ trái sang phải void SapXep(int a[][100], int cot, int dong) { int x; printf("Nhap dong muon sap xep: "); scanf("%d",&x); for (int j=0; j<cot-1; j++) { for (int k=j+1; k<cot;k++) { if (a[x][j]<a[x][k]) { int temp = a[x][j]; a[x][j] = a[x][k]; a[x][k] = temp; } } } } 409 Sắp xếp ptử trên 1 cột tăng dần từ trên xuống dưới void SapXep(int a[][100], int cot, int dong) { int x; printf("Nhap cot muon sap xep: "); scanf("%d",&x); for (int i=0; i<dong-1; i++) { for (int j=i+1; j<dong;j++) { if (a[i][x]>a[j][x]) { int temp = a[i][x]; a[i][x] = a[j][x]; a[j][x] = temp; } } } } 410 Sắp xếp ptử trên 1 cột giảm dần từ trên xuống dưới void SapXep(int a[][100], int cot, int dong) { int x; printf("Nhap cot muon sap xep: "); scanf("%d",&x); for (int i=0; i<dong-1; i++) { for (int j=i+1; j<dong;j++) { if (a[i][x]<a[j][x]) { int temp = a[i][x]; a[i][x] = a[j][x]; a[j][x] = temp; } } } } 411 Xuất giá trị chẵn trong ma trận theo thứ tự giảm dần 412 Xuất các số nguyên tố theo thứ tự tăng dần 413 Sắp xếp theo yêu cầu: Dòng có chỉ số chẵn tăng dần, lẻ giảm dần void SapXep(int a[][100], int cot, int dong) { for (int i=0; i<dong; i++) { for (int j=0; j<cot-1; j++) { for (int k=j+1; k<cot;k++) { if (i%2==0) { if (a[i][j]>a[i][k]) { int temp = a[i][j]; a[i][j] = a[i][k]; a[i][k] = temp; } } else { if (a[i][j]<a[i][k]) { int temp = a[i][j]; a[i][j] = a[i][k]; a[i][k] = temp; } } } } } } 414 Sắp xếp theo yêu cầu: Cột có chỉ số chẵn giảm từ trên xuống, lẻ tăng từ trên xuống void SapXep(int a[][100], int cot, int dong) { for (int i=0; i<cot; i++) { for (int j=0; j<dong-1; j++) { for (int k=j+1; k<dong;k++) { if (i%2==0) { if (a[j][i]<a[j][i]) { int temp = a[j][i]; a[j][i] = a[k][i]; a[k][i] = temp; } } else { if (a[j][i]>a[j][i]) { int temp = a[j][i]; a[j][i] = a[k][i]; a[k][i] = temp; } } } } } } 415 Sắp xếp ptử tăng dần theo hàng và cột: Dùng 2 phương pháp: sử dụng mảng phụ và ko dùng mảng phụ void GanMaTranVaoMang(int a[][10], int cot,int dong,int b[], int &nb) { for (int i=0;i<dong;i++) { for (int j=0; j<cot; j++) { b[nb] = a[i][j]; nb++; } } } void SapXepMangPhu(int b[], int nb) //S?p x?p t?ng d?n { for (int i=0; i<nb-1; i++) { for (int j=i+1; j<nb; j++) { if (b[i] > b[j]) { int temp = b[i]; b[i] = b[j]; b[j] = temp; } } } } void GanMangVaoMaTran(int a[][10], int cot,int dong,int b[]) { int n=0; for (int i=0;i<dong;i++) { for (int j=0; j<cot; j++) { a[i][j] = b[n]; n++; } } } void SapXep(int a[10][10], int cot, int dong) { int b[100],nb=0; GanMaTranVaoMang(a,cot,dong,b,nb); SapXepMangPhu(b,nb); GanMangVaoMaTran(a,cot,dong,b); } 416 Sắp xếp ptử dương tăng dần theo cột và dòng. Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng phụ (như bài 415 thêm điều kiện xét ptử dương) 417 Sắp xếp ptử chẵn giảm dần theo cột và dòng. Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng phụ (như bài 415 thêm điều kiện xét ptử chẵn và đổi dấu > thành <) 418 Sắp xếp âm tăng dần, dương giảm dần, 0 giữ nguyên void SapXepSoAm(int a[][10], int cot, int dong) { int i,j,k,h,d=0,temp; for (i=0;i<dong;i++) { for (j=0; j<cot; j++) { if (a[i][j]<0) { for (k=i; k<dong; k++) { if (d==0) h=j; else h=0; for (; h<cot; h++) { if (a[i][j] > a[k][h] && a[k][h]<0) { temp = a[i][j]; a[i][j] = a[k][h]; a[k][h] = temp; } } if (h==cot) d=1; } d=0; } } } } void SapXepSoDuong(int a[][10], int cot, int dong) { int i,j,k,h,d=0,temp; for (i=0;i<dong;i++) { for (j=0; j<cot; j++) { if (a[i][j]>0) { for (k=i; k<dong; k++) { if (d==0) h=j; [...]... GanMangVaoBien(a,cot,dong,b); } 421 Sắp xếp các giá trị dương nằm trên biên ma trận tăng dần(như bài 420 chỉ thêm điều kiện dương) 422 Sắp xếp các dòng dựa vào: tổng các ptử trong 1 dòng: sắp tăng dần void TongCacDong(int a[][10],int cot,int dong, int b[]) { for (int i=0; i . temp[i] = a[d1][i]; a[d1][i] = a[d2][i]; a[d2][i] = temp[i]; } } 39 3 Hoán vị hai cột ma trận void HoanVi2Cot(int a[][100],int cot,int c1, int c2) { int temp[100]; for (int i=0;. %d", i,Max); } 39 1 * Tìm ma trận con có tổng lớn nhất Kĩ thuật xử lý ma trận 3 92 Hoán vị hai dòng ma trận void HoanVi2Dong(int a[][100],int dong, int d1, int d2) { int temp[100];. dòng. Dùng 2 phương pháp: Sử dụng mảng phụ và ko sử dụng mảng phụ (như bài 415 thêm điều kiện xét ptử dương) 417 Sắp xếp ptử chẵn giảm dần theo cột và dòng. Dùng 2 phương pháp: Sử dụng mảng phụ

Ngày đăng: 29/07/2014, 21:20

TỪ KHÓA LIÊN QUAN