Bài giảng Lập trình hướng đối tượng - Chương 11: Ma trận căn bản

pdf 48 trang phuongnguyen 3540
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 11: Ma trận căn bản", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_11_ma_tran_can_ba.pdf

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 11: Ma trận căn bản

  1. Khoa CNTT LTHĐT Chương 11 MA TRẬN CĂN BẢN GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 1 ThS. Nguyễn Tấn Trần Minh Khang
  2. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 − Bài toán: Viết chương trình thực hiện các yêu cầu sau bằng phương pháp lập trình hướng đối tượng + Nhập ma trận một chiều các số nguyên + Xuất ma trận một chiều các số nguyên + Tính tổng các giá trị trong ma trận − Chương trình GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 2 ThS. Nguyễn Tấn Trần Minh Khang
  3. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 11. #include 12. class CMaTranNguyen 13. { 14. private: 15. int a[100][100]; 16. int m, n; 17. public: 18. void Nhap(); 19. void Xuat(); 20. int TinhTong(); 21. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 3 ThS. Nguyễn Tấn Trần Minh Khang
  4. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 11. void main() 12. { 13. CMaTranNguyen a; 14. a.Nhap(); 15. a.Xuat(); 16. int kq = a.TinhTong(); 17. cout<<"Tong = "<<kq; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 11. void CMaTranNguyen::Nhap() 12. { 13. cout >m; 15. cout >n; 17. for (int i=0 ; i >a[i][j]; 22. } 23. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 5 ThS. Nguyễn Tấn Trần Minh Khang
  6. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 11. void CMaTranNguyen::Xuat() 12. { 13. for (int i=0 ; i<m ; i++) 14. { 15. for(int j=0; j<n; j++) 16. cout<<a[i][j]<<" "; 17. cout<<"\n"; 18. } 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 1. VÍ DỤ DẪN NHẬP 1 11. int CMaTranNguyen::TinhTong() 12. { 13. int S = 0; 14. for (int i=0 ; i<m ; i++) 15. for (int j=0; j<n; j++) 16. S = S + a[i][j]; 17. return S; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 7 ThS. Nguyễn Tấn Trần Minh Khang
  8. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 − Bài toán: Viết chương trình thực hiện các yêu cầu sau bằng phương pháp lập trình hướng đối tượng + Nhập ma trận một chiều các số thực + Xuất ma trận một chiều các số thực + Tìm phần tử lớn nhất của ma trận − Chương trình GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 8 ThS. Nguyễn Tấn Trần Minh Khang
  9. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 11. #include 12. #include 13. class CMaTranThuc 14. { 15. private: 16. float a[100][100]; 17. int m, n; 18. public: 19. void Nhap(); 20. void Xuat(); 21. float LonNhat(); 22. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 9 ThS. Nguyễn Tấn Trần Minh Khang
  10. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 11. void main() 12. { 13. CMaTranThuc a; 14. a.Nhap(); 15. a.Xuat(); 16. float kq = a.LonNhat(); 17. printf(" %f", kq); 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 10 ThS. Nguyễn Tấn Trần Minh Khang
  11. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 11. void CMaTranThuc::Nhap() 12. { 13. printf("Nhap m:"); 14. scanf("%d", &m); 15. printf("Nhap n : "); 16. scanf("%d", &n); 17. for (int i=0 ; i<m ; i++) 18. for (int j=0; j<n; j++) 19. { 20. printf(“a[%d][%d]:” ,i,j); 21. scanf("%f", &a[i][j]); 22. } 23. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 11 ThS. Nguyễn Tấn Trần Minh Khang
  12. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 11. void CMaTranThuc::Xuat() 12. { 13. for (int i=0 ; i<m ; i++) 14. { 15. for (int j=0; j<n; j++) 16. printf(“%8.3f”,a[i][j]); 17. printf(“\n”); 18. } 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 12 ThS. Nguyễn Tấn Trần Minh Khang
  13. Khoa CNTT LTHĐT 2. VÍ DỤ DẪN NHẬP 2 11. float CMaTranThuc::LonNhat() 12. { 13. float ln = a[0][0]; 14. for (int i=0 ; i ln) 17. ln = a[i][j]; 18. return ln; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 13 ThS. Nguyễn Tấn Trần Minh Khang
  14. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 − Bài toán: Viết chương trình thực hiện các yêu cầu sau bằng phương pháp lập trình hướng đối tượng + Nhập ma trận một chiều các phân số + Xuất ma trận một chiều các phân số + Đếm số lượng giá trị dương có trong ma trận − Chương trình GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 14 ThS. Nguyễn Tấn Trần Minh Khang
  15. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. #include 12. #include 13. class CPhanSo 14. { 15. private: 16. int tu; 17. int mau; 18. public: 19. void Nhap(); 20. void Xuat(); 21. int KTDuong(); 22. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 15 ThS. Nguyễn Tấn Trần Minh Khang
  16. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. class CMaTranPhanSo 12. { 13. private: 14. CPhanSo a[100][100]; 15. int m, n; 16. public: 17. void Nhap(); 18. void Xuat(); 19. int DemDuong(); 20. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 16 ThS. Nguyễn Tấn Trần Minh Khang
  17. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. void main() 12. { 13. CMaTranPhanSo a; 14. a.Nhap(); 15. a.Xuat(); 16. int kq = a.DemDuong(); 17. printf(" %d:", kq); 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 17 ThS. Nguyễn Tấn Trần Minh Khang
  18. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. void CPhanSo::Nhap() 12. { 13. printf("Nhap tu :"); 14. scanf("%d", &tu); 15. printf("Nhap mau :"); 16. scanf("%d", &mau); 17. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 18 ThS. Nguyễn Tấn Trần Minh Khang
  19. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. void CPhanSo::Xuat() 12. { 13. printf("%d/%d ", tu, mau); 14. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 19 ThS. Nguyễn Tấn Trần Minh Khang
  20. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. int CPhanSo::KTDuong() 12. { 13. if (tu*mau > 0) 14. return 1; 15. return 0; 16. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 20 ThS. Nguyễn Tấn Trần Minh Khang
  21. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. void CMaTranPhanSo::Nhap() 12. { 13. printf("Nhap m : "); 14. scanf("%d", &m); 15. printf("Nhap n : "); 16. scanf("%d", &n); 17. for (int i=0; i<m; i++) 18. for (int j=0; j<n; j++) 19. { 20. printf(“a[%d][%d]:”,i,j) 21. a[i][j].Nhap(); 22. } 23. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 21 ThS. Nguyễn Tấn Trần Minh Khang
  22. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. void CMaTranPhanSo::Xuat() 12. { 13. for (int i=0; i<m ; i++) 14. { 15. for (int j=0; j<n; j++) 16. { 17. a[i][j].Xuat(); 18. printf(“ “); 19. } 20. printf("\n"); 21. } 22. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 22 ThS. Nguyễn Tấn Trần Minh Khang
  23. Khoa CNTT LTHĐT 3. VÍ DỤ DẪN NHẬP 3 11. int CMaTranPhanSo::DemDuong() 12. { 13. int dem = 0; 14. for (int i=0; i<m ; i++) 15. for (int j=0; j<n; j++) 16. if(a[i][j].KTDuong()==1) 17. dem = dem + 1; 18. return dem; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 23 ThS. Nguyễn Tấn Trần Minh Khang
  24. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN − Hãy xây dựng lớp số nguyên với các phương thức như sau: + Phương thức nhập ma trận + Phương thức xuất ma trận + Phương thức liệt kê các giá trị chẵn trong ma trận + Phương thức tính tổng các phần tử trong ma trận + Phương thức tính tổng các giá trị cực đại trong ma trận + Phương thức đếm số lượng giá trị lẻ có trong ma trận + Phương thức đếm số lần xuất hiện của giá trị x trong ma trận GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 24 ThS. Nguyễn Tấn Trần Minh Khang
  25. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN − Hãy xây dựng lớp số nguyên với các phương thức như sau: + Phương thức kiểm tra ma trận có tồn tại giá trị 0 hay không? + Phương thức kiểm tra ma trận có toàn chẵn hay không? + Phương thức sắp xếp các phần tử trong ma trận tăng dần từ trên xuống dưới và từ trái sang phải GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 25 ThS. Nguyễn Tấn Trần Minh Khang
  26. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. class CMaTranNguyen 12. { 13. private: 14. int a[100][100]; 15. int m, n; 16. public: 17. void Nhap(); 18. void Xuat(); 19. void LietKeChan(); 20. int TinhTong(); 21. int TongCucDai(); 22. int DemLe(); 23. int DemXuatHien(int); 24. int KTTonTaiKhong(); 25. int KTToanChan(); 26. void SapTang(); 27. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 26 ThS. Nguyễn Tấn Trần Minh Khang
  27. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. void CMaTranNguyen::Nhap() 12. { 13. printf(“Nhap m : ”); 14. scanf(“%d”, &m); 15. printf(“Nhap n : ”); 16. scanf(“%d”, &n); 17. for (int i=0; i<m; i++) 18. for (int j=0; j<n; j++) 19. { 20. printf(“a[%d]:”, i); 21. scanf(“%d”, &a[i][j]); 22. } 23. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 27 ThS. Nguyễn Tấn Trần Minh Khang
  28. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. void CMaTranNguyen::Xuat() 12. { 13. for (int i=0; i<m; i++) 14. { 15. for (int j=0; j<n; j++) 16. printf(“%4d”,a[i][j]); 17. printf(“\n”); 18. } 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 28 ThS. Nguyễn Tấn Trần Minh Khang
  29. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. void CMaTranNguyen::LietKeChan() 12. { 13. for (int i=0; i<m; i++) 14. for (int j=0; j<n; j++) 15. if (a[i][j]%2 == 0) 16. printf(“%4d”,a[i][j]); 17. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 29 ThS. Nguyễn Tấn Trần Minh Khang
  30. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::TinhTong() 12. { 13. int S=0; 14. for (int i=0; i<m; i++) 15. for (int j=0; j<n; j++) 16. S = S+a[i][j]; 17. return S; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 30 ThS. Nguyễn Tấn Trần Minh Khang
  31. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::LonNhat() 12. { 13. int ln=a[0][0]; 14. for (int i=0; i ln) 17. ln = a[i][j]; 18. return ln; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 31 ThS. Nguyễn Tấn Trần Minh Khang
  32. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::TongCucDai() 12. { 13. int S=0; 14. int ln=LonNhat(); 15. for (int i=0; i<m; i++) 16. for (int j=0; j<n; j++) 17. if (a[i][j]==ln) 18. S = S+a[i][j]; 19. return S; 20. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 32 ThS. Nguyễn Tấn Trần Minh Khang
  33. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::DemLe() 12. { 13. int dem=0; 14. for (int i=0; i<m; i++) 15. for (int j=0; j<n; j++) 16. if (a[i][j]%2 == 1) 17. dem = dem+1; 18. return dem; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 33 ThS. Nguyễn Tấn Trần Minh Khang
  34. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen:: DemXuatHien(int x) 12. { 13. int dem=0; 14. for (int i=0; i<m; i++) 15. for (int j=0; j<n; j++) 16. if (a[i][j] == x) 17. dem = dem+1; 18. return dem; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 34 ThS. Nguyễn Tấn Trần Minh Khang
  35. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen:: KTTonTaiKhong() 12. { 13. for (int i=0; i<m; i++) 14. for (int j=0; j<n; j++) 15. if (a[i][j] == 0) 16. return 1; 17. return 0; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 35 ThS. Nguyễn Tấn Trần Minh Khang
  36. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::KTToanChan() 12. { 13. for (int i=0; i<m; i++) 14. for (int j=0; j<n; j++) 15. if (a[i][j]%2 == 1) 16. return 0; 17. return 1; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 36 ThS. Nguyễn Tấn Trần Minh Khang
  37. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::SapTang() 12. { 13. for (int k=0; i a[l/n][l%n]) 16. { 17. int temp = a[k/n][k%n]; 18. a[k/n][k%n]=a[l/n][l%n]; 19. a[l/n][l%n] = temp; 20. } 21. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 37 ThS. Nguyễn Tấn Trần Minh Khang
  38. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC − Hãy xây dựng lớp số thực với các phương thức như sau: + Phương thức nhập ma trận + Phương thức xuất ma trận + Phương thức tính tổng các phần tử trong ma trận + Phương thức tính tổng các giá trị cực tiểu trong ma trận + Phương thức đếm số lần xuất hiện của giá trị x trong ma trận GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 38 ThS. Nguyễn Tấn Trần Minh Khang
  39. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC − Hãy xây dựng lớp số thực với các phương thức như sau: + Phương thức kiểm tra ma trận có tồn tại giá trị 0 hay không? + Phương thức sắp xếp ma trận tăng dần từ trên xuống dưới và từ trái sang phải. GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 39 ThS. Nguyễn Tấn Trần Minh Khang
  40. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. class CMaTranThuc 12. { 13. private: 14. float a[100][100]; 15. int m, n; 16. public: 17. void Nhap(); 18. void Xuat(); 19. float TinhTong(); 20. float NhoNhat(); 21. float TongCucTieu(); 22. int DemXuatHien(float); 23. int KTTonTaiKhong(); 24. void SapTang(); 25. }; GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 40 ThS. Nguyễn Tấn Trần Minh Khang
  41. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. void CMaTranThuc::Nhap() 12. { 13. printf(“Nhap n : ”); 14. scanf(“%d”, &n); 15. for (int i=0; i<m; i++) 16. for (int j=0; j<n; j++) 17. { 18. printf(“a[%d]:”, i); 19. scanf(“%f”, &a[i][j]); 20. } 21. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 41 ThS. Nguyễn Tấn Trần Minh Khang
  42. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. void CMaTranThuc::Xuat() 12. { 13. for (int i=0; i<m; i++) 14. { 15. for (int j=0; j<n; j++) 16. printf(“%8.3f”,a[i][j]); 17. printf(“\n”); 18. } 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 42 ThS. Nguyễn Tấn Trần Minh Khang
  43. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. float CMaTranThuc::TinhTong() 12. { 13. float S=0; 14. for (int i=0; i<m; i++) 15. for (int j=0; j<n; j++) 16. S = S+a[i][j]; 17. return S; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 43 ThS. Nguyễn Tấn Trần Minh Khang
  44. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. float CMaTranThuc::NhoNhat() 12. { 13. float nn=a[0][0]; 14. for (int i=1; i<m; i++) 15. for (int j=0; j<n; j++) 16. if (a[i][j] < nn) 17. nn = a[i][j]; 18. return nn; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 44 ThS. Nguyễn Tấn Trần Minh Khang
  45. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. float CMaTranThuc::TongCucTieu() 12. { 13. float S=0; 14. float nn=NhoNhat(); 15. for (int i=0; i<m; i++) 16. for (int j=0; j<n; j++) 17. if (a[i][j]==nn) 18. S = S+a[i][j]; 19. return S; 20. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 45 ThS. Nguyễn Tấn Trần Minh Khang
  46. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. int CMaTranThuc:: DemXuatHien(float x) 12. { 13. int dem=0; 14. for (int i=0; i<m; i++) 15. for (int j=0; j<n; j++) 16. if (a[i][j] == x) 17. dem = dem+1; 18. return dem; 19. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 46 ThS. Nguyễn Tấn Trần Minh Khang
  47. Khoa CNTT LTHĐT 5. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. int CMaTranThuc:: KTTonTaiKhong() 12. { 13. for (int i=0; i<m; i++) 14. for (int j=0; j<n; j++) 15. if (a[i][j] == 0) 16. return 1; 17. return 0; 18. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 47 ThS. Nguyễn Tấn Trần Minh Khang
  48. Khoa CNTT LTHĐT 4. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. void CMaTranThuc::SapTang() 12. { 13. for (int k=0; k a[l/n][l%n]) 16. { 17. float temp=a[k/n][k%n]; 18. a[k/n][k%n]=a[l/n][l%n]; 19. a[l/n][l%n]= temp; 20. } 21. } GV. Nguy ễn Sơn Hoàng Quốc Chương 11 - 48 ThS. Nguyễn Tấn Trần Minh Khang