Giáo trình Lập trình hướng đối tượng - Chương 11: Ma trận căn bản
− 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
yễn Tấn Trần Minh Khang 3. VÍ DỤ DẪN NHẬP 3 11.void CPhanSo::Xuat() 12.{ 13. printf("%d/%d ", tu, mau); 14.} LTHĐTKhoa CNTT Chương 11 - 20GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 21GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 22GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 23GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 24GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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 LTHĐTKhoa CNTT Chương 11 - 25GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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 LTHĐTKhoa CNTT Chương 11 - 26GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.}; LTHĐTKhoa CNTT Chương 11 - 27GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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. } LTHĐTKhoa CNTT Chương 11 - 28GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 29GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 30GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 31GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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<m; i++) 15. for (int j=0; j<n; j++) 16. if (a[i][j] > ln) 17. ln = a[i][j]; 18. return ln; 19.} LTHĐTKhoa CNTT Chương 11 - 32GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 33GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 34GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 35GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 36GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 37GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. XÂY DỰNG LỚP MA TRẬN SỐ NGUYÊN 11. int CMaTranNguyen::SapTang() 12. { 13. for (int k=0; i<m*n-2; k++) 14. for (int l=k+1; l<n*n-1; l++) 15. if (a[k/n][k%n]>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. } LTHĐTKhoa CNTT Chương 11 - 38GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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 LTHĐTKhoa CNTT Chương 11 - 39GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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. LTHĐTKhoa CNTT Chương 11 - 40GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.}; LTHĐTKhoa CNTT Chương 11 - 41GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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. } LTHĐTKhoa CNTT Chương 11 - 42GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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. } LTHĐTKhoa CNTT Chương 11 - 43GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 44GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 45GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 46GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 47GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 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.} LTHĐTKhoa CNTT Chương 11 - 48GV. Nguy ễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. XÂY DỰNG LỚP MA TRẬN SỐ THỰC 11. void CMaTranThuc::SapTang() 12. { 13. for (int k=0; k<m*n-2; k++) 14. for (int l=k+1; l<m*n-1; l++) 15. if (a[k/n][k%n]>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. }
File đính kèm:
- Giáo trình Lập trình hướng đối tượng - Chương 11 Ma trận căn bản.pdf