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.

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.

test php

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 đó:

test php

banquyen png

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.

Cùng chuyên nghiệp mục: