Bài giảng Các thuật toán trên mảng hai chiều

Tài liệu Bài giảng Các thuật toán trên mảng hai chiều: Các thuật toán trên mảng hai chiều Nguyễn Đông Hà Khoa CNTT – ĐH KHTN Sưu tầm bởi: www.daihoc.com.vn Nội dung „ Duyệt mảng 2 chiều „ Tính tổng số, tích số „ Đếm „ Tìm kiếm „ Tìm phần tử lớn nhất, nhỏ nhất Sưu tầm bởi: www.daihoc.com.vn Duyệt hết các phần tử của mảng 1 1 2 2 5 7 5 4 2 5 7 8 9 3 8 „ Mảng a[3][5]: „ so_dong = 3; „ so_cot = 5; Sưu tầm bởi: www.daihoc.com.vn Duyệt hết các phần tử của mảng for(i = 0; i < so_dong; i++) for(j = 0; j < so_cot; j++) { /* Xử lý phần tử a[i][j] */ .... } Sưu tầm bởi: www.daihoc.com.vn Duyệt các phần tử trên cùng dòng hoặc cột for(j = 0; j < so_cot; j++) { /* Xử lý phần tử a[k][j] */ .... } „ Duyệt các phần tử trên dòng có chỉ số k „ Duyệt các phần tử trên cột có chỉ số k for(i = 0; i < so_dong; i++) { /* Xử lý phần tử a[i][k] */ .... } Sưu tầm bởi: www.daihoc.com.vn Đường chéo của ma trận vuông for(i = 0; i < n; i++) { /* Xử lý phần tử a[i][i] */ .... } „ Đường chéo chính „...

pdf16 trang | Chia sẻ: honghanh66 | Lượt xem: 1106 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Các thuật toán trên mảng hai chiều, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Các thuật toán trên mảng hai chiều Nguyễn Đông Hà Khoa CNTT – ĐH KHTN Sưu tầm bởi: www.daihoc.com.vn Nội dung „ Duyệt mảng 2 chiều „ Tính tổng số, tích số „ Đếm „ Tìm kiếm „ Tìm phần tử lớn nhất, nhỏ nhất Sưu tầm bởi: www.daihoc.com.vn Duyệt hết các phần tử của mảng 1 1 2 2 5 7 5 4 2 5 7 8 9 3 8 „ Mảng a[3][5]: „ so_dong = 3; „ so_cot = 5; Sưu tầm bởi: www.daihoc.com.vn Duyệt hết các phần tử của mảng for(i = 0; i < so_dong; i++) for(j = 0; j < so_cot; j++) { /* Xử lý phần tử a[i][j] */ .... } Sưu tầm bởi: www.daihoc.com.vn Duyệt các phần tử trên cùng dòng hoặc cột for(j = 0; j < so_cot; j++) { /* Xử lý phần tử a[k][j] */ .... } „ Duyệt các phần tử trên dòng có chỉ số k „ Duyệt các phần tử trên cột có chỉ số k for(i = 0; i < so_dong; i++) { /* Xử lý phần tử a[i][k] */ .... } Sưu tầm bởi: www.daihoc.com.vn Đường chéo của ma trận vuông for(i = 0; i < n; i++) { /* Xử lý phần tử a[i][i] */ .... } „ Đường chéo chính „ Đường chéo phụ for(i = 0; i < n; i++) { /* Xử lý phần tử a[n-1-i][i] */ .... } Sưu tầm bởi: www.daihoc.com.vn Tính tổng các phần tử trên 1 dòng int tong = 0; for(j = 0; j < so_cot; j++) { tong = tong + a[k][j] } „ Tính tổng các phần tử trên dòng chỉ số k Sưu tầm bởi: www.daihoc.com.vn Tính tổng các số chẵn trên đường chéo chính int Cheo1Chan (int a[5][5]) { int tong = 0; for(i = 0; i < 5; i++) { if(a[i][i]%2 == 0) tong = tong + a[i][i]; } return tong; } „ Tính tổng các số chẵn trên đường chéo chính Sưu tầm bởi: www.daihoc.com.vn Tính tích các số lẻ trên đường chéo phụ int Cheo2Phu (int a[5][5]) { int tong = 0; for(i = 0; i < 5; i++) { if(a[i][i]%2 == 1) tong = tong + a[5-1-i][i]; } return tong; } „ Tính tổng các số lẻ trên đường chéo phụ Sưu tầm bởi: www.daihoc.com.vn Tính tích các số lẻ trên đường chéo phụ int Cheo2Phu (int a[5][5]) { int tong = 0; int i,j; for(i = 0; i < 5; i++) { if(a[i][i]%2 == 1) tong = tong + a[5-1-i][i]; } return tong; } „ Tính tổng các số lẻ trên đường chéo phụ Sưu tầm bởi: www.daihoc.com.vn Đếm các số dương trong phần tam giác phía trên đường chéo chính int TamGiacTrenDuong (int a[5][5]) { int dem = 0; int i,j; for(i = 0; i < 5; i++) for(j = 0; j < 5; j++) { if(i 0) dem++; } return dem; } „ Sử dụng 1 biến đếm để ghi nhận số phần tử thỏa điều kiện „ Điều kiện của các phần tử phía trên đường chéo chính là i >j „ Điều kiện số dương là a[i][j] > 0 Sưu tầm bởi: www.daihoc.com.vn Tìm kiếm #define SIZE 5 int TimTrenCheo2 (int a[SIZE][SIZE], int x) { int i,j; for(i = 0; i < SIZE; i++) for(j = 0; j < SIZE; j++) { if(i+j<=SIZE-1 && a[i][j] == x) return 1; } return 0; } „ Tìm xem một số x có xuất hiện trong phần tam giác phía trên đường chéo phụ của mảng hay không Sưu tầm bởi: www.daihoc.com.vn Tìm phần tử lớn nhất trong mảng #define SIZE 5 int LonNhat (int a[SIZE][SIZE]) { int i,j; int max = a[0][0]; for(i = 0; i < SIZE; i++) for(j = 0; j < SIZE; j++) { if(a[i][j] > max) max = a[i][j]; } return max; } „ Duyệt qua tất cả các phần tử, dùng một biến max để lưu trữ giá trị lớn nhất Sưu tầm bởi: www.daihoc.com.vn Tìm phần tử lớn nhất trong mảng #define SIZE 5 int LonNhat (int a[SIZE][SIZE]) { int i,j; int max = a[0][0]; for(i = 0; i < SIZE; i++) for(j = 0; j < SIZE; j++) { if(a[i][j] > max) max = a[i][j]; } return max; } „ Duyệt qua tất cả các phần tử, dùng một biến max để lưu trữ giá trị lớn nhất Sưu tầm bởi: www.daihoc.com.vn Bài tập „ Chương 5: 6,7,8,9 Sưu tầm bởi: www.daihoc.com.vn Sưu tầm bởi: www.daihoc.com.vn

Các file đính kèm theo tài liệu này:

  • pdfthuattoanmang2chieu_1316.pdf