Viết công tác tiến hành những việc làm sau:
- Tạo 2 quái trận hai phía A và B sở hữu độ cao thấp theo thứ tự là m1 * n1 và mét vuông * n2 (với m1, n1, mét vuông, n2 > 0), độ quý hiếm của những thành phần được nhập kể từ keyboard. Xuất 2 quái trận vừa vặn nhập đi ra screen.
- Tính và in đi ra screen quái trận C = A * B. Lưu ý: Điều khiếu nại nhằm quái trận A nhân được với quái trận B là số cột của quái trận A ngay số dòng sản phẩm của quái trận B.
- Nếu tồn bên trên quái trận tích C, hãy mò mẫm quái trận D là quái trận trả vị của quái trận C. hiểu rằng: Ma trận D = CT là quái trận trả vị của quái trận C nếu như những sản phẩm của quái trận C phát triển thành những cột của quái trận D và ngược lại. Tức Dij = Cji. Ví dụ:
Bạn đang xem: Java - Thực hiện phép nhân hai ma trận và tìm ma trận chuyển vị của ma trận tích vừa tính được.
Bài giải
-------------------- ######## --------------------
Hướng dẫn về quy tắc nhân hai ma trận: Cho nhị quái trận Am1 * n1, Bm2 * n2 .Khi tê liệt quái trận cn1 * m2 = A * B gọi là tích của nhị quái trận A, B. Trong đó:
Bài viết lách này được đăng bên trên framesi.com.vn, ko được copy bên dưới từng mẫu mã.
Như vậy cij = thành phần ở sản phẩm loại i của quái trận A nhân ứng với thành phần ở cột loại j của quái trận B rồi nằm trong lại.
Ví dụ:
Bài viết lách này được đăng bên trên [free tuts .net]
Bài giải
public static void main(String[] args) { int m1, n1; // số dòng sản phẩm và số cột của quái trận A int mét vuông, n2; // số dòng sản phẩm và số cột của quái trận B char choose; Scanner scanner = new Scanner(System.in); System.out.println("Nhập vô số dòng sản phẩm của quái trận A: "); m1 = scanner.nextInt(); System.out.println("Nhập vô số cột của quái trận A: "); n1 = scanner.nextInt(); System.out.println("Nhập vô số dòng sản phẩm của quái trận B: "); m2 = scanner.nextInt(); System.out.println("Nhập vô số cột của quái trận B: "); n2 = scanner.nextInt(); int[][] A = new int[m1][n1]; int[][] B = new int[m2][n2]; // quái trận tích C = A * B // sẽ sở hữu được số dòng sản phẩm là số dòng sản phẩm của quái trận A // và số cột là số cột của quái trận B int C[][] = new int[m1][n2]; while (m1 > 0 && n1 > 0 && mét vuông > 0 && n2 > 0) { if (n1 != m2) { System.out.println("Để nhân hai ma trận thì " + "số cột của quái trận A nên ngay số dòng sản phẩm của quái trận B"); System.out.println("Nhập lại số cột của quái trận A: "); n1 = scanner.nextInt(); System.out.println("Nhập vô số dòng sản phẩm của quái trận B: "); m2 = scanner.nextInt(); } else { // nhập độ quý hiếm của những thành phần cho tới 2 quái trận A System.out.println("Nhập vô những thành phần của quái trận A: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n1; j++) { System.out.print("A[" + i + "]["+ j + "] = "); A[i][j] = scanner.nextInt(); } } // nhập độ quý hiếm của những thành phần cho tới 2 quái trận B System.out.println("Nhập vô những thành phần của quái trận A: "); for (int i = 0; i < m2; i++) { for (int j = 0; j < n2; j++) { System.out.print("B[" + i + "]["+ j + "] = "); B[i][j] = scanner.nextInt(); } } // hiển thị 2 quái trận vừa vặn nhập System.out.println("Ma trận A: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n1; j++) { System.out.print(A[i][j] + "\t"); } System.out.println("\n"); } System.out.println("Ma trận B: "); for (int i = 0; i < m2; i++) { for (int j = 0; j < n2; j++) { System.out.print(B[i][j] + "\t"); } System.out.println("\n"); } // tính và in đi ra quái trận C = A * B for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { C[i][j] = 0; for (int k = 0; k < n1; k++) { C[i][j] = C[i][j] + A[i][k] * B[k][j]; } } } // hiển thị quái trận tích C System.out.println("Ma trận tích C: "); for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { System.out.print(C[i][j] + "\t"); } System.out.println("\n"); } // mò mẫm quái trận D là quái trận trả vị của quái trận C // quái trận D là quái trận trả vị của quái trận C // thì những dòng sản phẩm của quái trận C tiếp tục trở thành // những cột của quái trận D và ngược lại // ví dụ: quái trận C sở hữu số dòng sản phẩm m1 = 3 và số cột n2 = 4 thì // quái trận D sẽ sở hữu được số dòng sản phẩm n2 = 4 và số cột m1 = 3 int D[][] = new int[n2][m1]; for (int i = 0; i < m1; i++) { for (int j = 0; j < n2; j++) { D[j][i] = C[i][j]; } } // hiển thị quái trận D System.out.println("Ma trận trả vị của quái trận C là: "); for (int i = 0; i < n2; i++) { for (int j = 0; j < m1; j++) { System.out.print(D[i][j] + "\t"); } System.out.println("\n"); } System.out.println("Bạn cũng muốn nối tiếp không? Bấm nó nhằm nối tiếp, n nhằm thoát!"); choose = scanner.next().charAt(0); if (choose == 'y') { continue; } else { System.out.println("Goodbye!"); break; } } } }
Kết trái ngược sau thời điểm biên dịch chương trình:
Nếu nhập vô số cột của quái trận A ko ngay số dòng sản phẩm của quái trận B thì công tác tiếp tục đòi hỏi chúng ta nhập lại:
Nếu nhập vô số cột của quái trận A ngay số dòng sản phẩm của quái trận B:
Câu chất vấn thông thường bắt gặp liên quan:
- Java - Tìm độ quý hiếm lớn số 1 vô một quái trận 2 chiều với những thành phần được nhập kể từ keyboard.
- Java - Viết công tác tính tổng những thành phần phía trên đàng chéo cánh chủ yếu của một quái trận vuông.
- Java - Tìm thành phần có mức giá trị lớn số 1 và nhỏ nhất bên trên đàng chéo cánh chủ yếu của một quái trận vuông.
- Java - Thực hiện nay quy tắc nhân hai ma trận và mò mẫm quái trận trả vị của quái trận tích vừa vặn tính được.
- Java - Thực hiện nay nhập vào trong 1 quái trận vuông và đánh giá quái trận tê liệt liệu có phải là quái trận tam giác bên trên không?
- Java - Viết công tác tính độ quý hiếm khoảng của những thành phần nhỏ nhất bên trên từng cột của một quái trận.
- Java - Viết công tác mò mẫm và in đi ra screen thành phần lớn số 1 và địa điểm của thành phần tê liệt vô quái trận số nguyên
- Java - Viết công tác mò mẫm và in đi ra thành phần chẵn dương nhỏ nhất vô quái trận.
- Java - Viết công tác xóa dòng sản phẩm sở hữu tổng lớn số 1 của một quái trận số thực.