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

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

Đ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

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

Tài liệu cùng người dùng

Tài liệu liên quan