Tạo Và Sử Dụng Lớp Matrix Trong Java | Tìm ở đây

Đề bài: Viết chương trình sử dụng ngôn ngữ lập trình Java tạo và sử dụng lớp Matrix để biểu diễn lớp ma trận bao gồm các phương thức sau:

  1. Matrix(int m, int n): Hàm khởi tạo, với m: số hàng và n: số cột
  2. display(): Hiển thị ma trận theo đúng định dạng
  3. add(Matrix mt2): Cộng 2 ma trận
  4. sub(Matrix mt2): Trừ 2 ma trận
  5. prod(Matrix mt2): Nhân 2 ma trận
  6. transpose(): Chuyển vị ma trận
  7. isSquare(): Kiểm tra ma trận vuông
  8. rowSwap(int h1, int h2): Hoán đổi giữa 2 hàng h1 và h2
  9. colSwap(int c1, int c2): Hoán đổi giữa 2 cột c1 và c2
  10. sumRow(int h): Tính tổng các phần tử trên hàng h
  11. sumCol(int c): Tính tổng các phần tử trên cột c
  12. max(): Tìm phần tử lớn nhất của ma trận
  13. min(): Tìm phần tử nhỏ nhất của ma trận
  14. maxRow(int h): Tìm phần tử lớn nhất của hàng h
  15. minRow(int h): Tìm phần tử nhỏ nhất của hàng h
  16. maxCol(int c): Tìm phần tử lớn nhất của cột c
  17. minCol(int c): Tìm phần tử nhỏ nhất của cột c

Yêu cầu kiến thức:

  • Xác định, chuyển từ đối tượng thực tế sang đối tượng chương trình
  • Xác định thuộc tính và phương thức cho lớp và đối tượng
  • Xác định kiểu dữ liệu cho các thuộc tính và phương thức

Cấu trúc thư mục: src |——BuildClass    |——Matrix.java |——UseClass    |——MainClass.java Code tham khảo dưới đây được viết trên JDK ver 8.x: File Matrix.java:

package BuildClass; import java.util.Scanner; public class Matrix { // Gioi han so hang va so cot private final int SIZE = 50; // Thuoc tinh private int m; // so hang private int n; // so cot private int[][] a; // Phuong thuc // Ham khoi tao khong doi so public Matrix() { m = 0; n = 0; a = new int[m][n]; } // Ham khoi tao co doi so public Matrix(int m, int n) { if (m >= SIZE || n >= SIZE) { m = 3; n = 3; a = new int[m][n]; } else { this.m = m; this.n = n; a = new int[m][n]; } } // Ham lay thong tin so hang public int getRowNum() { return m; } // Ham lay thong ton so cot public int getColNum() { return n; } // Nhap ma tran public void enterMatrix(Scanner sc) { System.out.print("Nhap vao so hang: "); m = sc.nextInt(); System.out.print("Nhap vao so cot: "); n = sc.nextInt(); a = new int[m][n]; System.out.println("Nhap vao gia tri cho ma tran:"); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { System.out.print("\tPhan tu thu [" + (i + 1) + "][" + (j + 1) + "]: "); a[i][j] = sc.nextInt(); } } } // Hien thi ma tran public void display() { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { System.out.print(a[i][j] + "\t"); } System.out.println(); } } // Cong ma tran public Matrix add(Matrix mt2) { Matrix mtTong = new Matrix(m, n); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { mtTong.a[i][j] = a[i][j] + mt2.a[i][j]; } } return mtTong; } // Tru ma tran public Matrix sub(Matrix mt2) { Matrix mtTru = new Matrix(m, n); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { mtTru.a[i][j] = a[i][j] - mt2.a[i][j]; } } return mtTru; } // Nhan 2 ma tran public Matrix prod(Matrix mt2) { Matrix mtTich = new Matrix(m, mt2.n); for (int i = 0; i < m; i++) { for (int j = 0; j < mt2.n; j++) { mtTich.a[i][j] = 0; for (int k = 0; k < n; k++) { mtTich.a[i][j] += a[i][k] * mt2.a[k][j]; } } } return mtTich; } // Chuyen vi ma tran public Matrix transpose() { Matrix mtTran = new Matrix(n, m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { mtTran.a[i][j] = a[j][i]; } } return mtTran; } // Kiem tra ma tran vuong public boolean isSquare() { return (m == n ? true : false); } // Hoan doi giua 2 hang h1 va h2 public void rowSwap(int h1, int h2) { for (int i = 0; i < n; i++) { int tg = a[h1 - 1][i]; a[h1 - 1][i] = a[h2 - 1][i]; a[h2 - 1][i] = tg; } } // Hoan doi giua 2 cot c1 va c2 public void colSwap(int c1, int c2) { for (int i = 0; i < m; i++) { int tg = a[i][c1 - 1]; a[i][c1 - 1] = a[i][c2 - 1]; a[i][c2 - 1] = tg; } } // Tinh tong phan tu tren hang h public int sumRow(int h) { int s = 0; for (int i = 0; i < n; i++) { s += a[h - 1][i]; } return s; } // Tinh tong phan tu tren cot c public int sumCol(int c) { int s = 0; for (int i = 0; i < m; i++) { s += a[i][c - 1]; } return s; } // Tim phan tu lon nhat cua ma tran public int max() { int max = a[0][0]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (max < a[i][j]) { max = a[i][j]; } } } return max; } // Tim phan tu nhho nhat cua ma tran public int min() { int min = a[0][0]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (min > a[i][j]) { min = a[i][j]; } } } return min; } // Tim phan tu lon nhat cua hang h public int maxRow(int h) { int max = a[h - 1][0]; for (int i = 1; i < n; i++) { if (max < a[h - 1][i]) { max = a[h - 1][i]; } } return max; } // Tim phan tu nho nhat cua hang h public int minRow(int h) { int min = a[h - 1][0]; for (int i = 1; i < n; i++) { if (min > a[h - 1][i]) { min = a[h - 1][i]; } } return min; } // Tim phan tu lon nhat cua cot c public int maxCol(int c) { int max = a[0][c - 1]; for (int i = 1; i < m; i++) { if (max < a[i][c - 1]) { max = a[i][c - 1]; } } return max; } // Tim phan tu nho nhat cua cot c public int minCol(int c) { int min = a[0][c - 1]; for (int i = 0; i < m; i++) { if (min > a[i][c - 1]) { min = a[i][c - 1]; } } return min; } }

File MainClass.java:

package UseClass; import BuildClass.Matrix; import java.util.Scanner; public class MainClass { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // Khai bao doi tuong Matrix mt1 = new Matrix(); Matrix mt2 = new Matrix(); Matrix mtTong; Matrix mtTich; // Khai bao bien int h1, h2; // Nhap ma tran System.out.println("Nhap vao ma tran thu nhat:"); mt1.enterMatrix(sc); System.out.println("Nhap vao ma tran thu hai:"); mt2.enterMatrix(sc); // Tinh tong 2 ma tran mtTong = mt1.add(mt2); // Tinh tich 2 ma tran mtTich = mt1.prod(mt2); // Hien thi System.out.println("Ma tran thu nhat vua nhap la:"); mt1.display(); System.out.println("Ma tran thu hai vua nhap la:"); mt2.display(); System.out.println("Ma tran tong la:"); mtTong.display(); System.out.println("Ma tran tich la:"); mtTich.display(); // Hoan giua 2 dong h1 va h2 trong ma tran 1 System.out.println("Hoan doi hang trong ma tran 1:"); do { System.out.print("Nhap vao hang hoan doi thu nhat: "); h1 = sc.nextInt(); System.out.print("Nhap vao hang hoan doi thu hai: "); h2 = sc.nextInt(); if (h1 > mt1.getRowNum() || h2 > mt1.getRowNum()) { System.out.println("Hay nhap lai thon tin so hang can hoan doi!"); } } while (h1 > mt1.getRowNum() || h2 > mt1.getRowNum()); // Hoan doi mt1.rowSwap(h1, h2); System.out.println("Ma tran 1 sau khi hoan doi la:"); mt1.display(); // Hoan doi hang 1 va hang 3 cua mt1 mt1.colSwap(1, 3); // Minh gia su ma tran vuong 3x3 nhe System.out.println("Ma tran 1 sau khi hoan doi cot 1 va cot 2 la:"); mt1.display(); // Tinh tong cac phan tu tren hang 3 cua mt1 mt1.sumRow(3); // Minh gia su ma tran vuong 3x3 nhe // Tim max cua mt1 System.out.println("Phan tu lon nhat cua ma tran 1 la: " + mt1.max()); sc.close(); } }

Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Ôn tập OOP cơ bản trong Java. Xem tại đây

Từ khóa » Nhân 2 Ma Trận Java