CĂN BẢN
CHUỖI
VÒNG LẶP
NUMBER
INPUT / OUTPUT
CALCULATE
SẮP XẾP - TÌM KIẾM
KHÁC
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách tìm ma trận chuyển vị trong Java

Trong bài viết này chúng ta làm bài tập tìm ma trận chuyển vị trong Java. Đây là một bài toán liên quan đến mảng hai chiều, vì vậy các bạn hãy tìm hiểu về nó trước khi đi vào bài này nhé.

Quá trình hoán đổi giữa hàng và cột được gọi là chuyển vị của ma trận.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ví dụ: ta có ma trận A = [2x3], tức là 2 hàng và 3 cột. Như vậy chuyển vị của nó sẽ là A = [3x2], tức là 3 hàng và 2 cột.

1. Tìm ma trận chuyển vị trong Java có sẵn

Để tìm chuyển vị của một ma trân, trước tiên ta cần khai báo và khởi tạo các giá trị cho phần tử của ma trận. Ma trận matrix có row = 2 (hai hàng), column = 3 (ba cột).

int row = 2, column = 3;
int[][] matrix = { {2, 3, 4}, {5, 6, 4} };

Ta cần thêm một ma trận transpose là ma trận chuyển vị của matrix. Với số hàng bằng số cột của matrix và số cột bằng số hàng của matrix.

int[][] transpose = new int[column][row];

Bây giờ sử dụng vòng lặp for để gán các phần tử trong matrix sang cho các phần tử tương ứng trong transpose.

for(int i = 0; i < row; i++) {
  for (int j = 0; j < column; j++) {
    transpose[j][i] = matrix[i][j];
  }
}

Cuối cùng sẽ là một hàm print() để in các phần tử trong ma trận, hàm nhận vào một mảng đa chiều làm tham số.

public static void print(int[][] matrix) {
    for(int[] row : matrix) {
      for (int column : row) {
        System.out.print(column + "    ");
      }
      System.out.println();
    }
  }

Full code:

class Main {
  public static void main(String[] args) {
    //khai báo hai biến row và column là hàng, cột của ma trận
    int row = 2, column = 3;
    //khai báo một mảng hai chiều matrix và gán phần tử cho nó
    int[][] matrix = { {2, 3, 4}, {5, 6, 4} };
    //gọi hàm print để in các phần tử trong mảng hai chiều ra màn hình
    System.out.printf("\nCác phần tử trong ma trận %dx%d:\n", row, column);
    print(matrix);

    // tạo một mảng hai chiều transpose với: 
    // số hàng = số cột của mảng matrix
    // số cột bằng số hàng của mảng matrix
    int[][] transpose = new int[column][row];
    //sử dụng vòng lặp for để gán các phần tử trong mảng matrix cho mảng transpose
    for(int i = 0; i < row; i++) {
      for (int j = 0; j < column; j++) {
        transpose[j][i] = matrix[i][j];
      }
    }
    //gọi hàm print để in mảng transpose ra màn hình
    System.out.printf("\nCác phần tử trong ma trận chuyển vị:\n", row, column);
    print(transpose);

    System.out.println("\n---------------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
  //hàm in các phần tử trong mảng hai chiều
  public static void print(int[][] matrix) {
    for(int[] row : matrix) {
      for (int column : row) {
        System.out.print(column + "    ");
      }
      System.out.println();
    }
  }
}

Kết quả:

bai12 01 PNG

2. Tìm ma trận chuyển vị trong Java được nhập từ bàn phím

Để nhận dữ liệu từ bàn phím chúng ta cần khai báo thư viện Scanner: import java.util.Scanner;.

Bây giờ sử dụng đối tượng thuộc class Scanner để yêu cầu người dùng nhập vào số dòng và số cột cho ma trận.

int row, column;
Scanner scanner = new Scanner(System.in);
System.out.println("\nNhập vào số dòng của ma trận: ");
row = scanner.nextInt();
System.out.println("Nhập vào số cột của ma trận: ");
column = scanner.nextInt();

Sau khi đã có số dòng và số cột, ta khai báo mảng đa chiều matrix và cấp phát bộ nhớ cho nó.

int[][] matrix = new int[row][column];

Sử dụng vòng lặp for để nhập giá trị cho các phần tử của ma trận matrix.

for (int i = 0; i < row; i++) {
   for (int j = 0; j < column; j++) {
       System.out.print("Nhập phần tử thứ [" + i + ", " + j + "]: ");
       matrix[i][j] = scanner.nextInt();
   }
}

Như vậy là chúng ta đã có dữ liệu cho ma trận matrix. Tương tự như phần 1, ta chỉ cần gán giá trị của phần tử matrix cho phần tử tương ứng trong transpose.

Full code:

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    int row, column;
    Scanner scanner = new Scanner(System.in);
    System.out.println("\nNhập vào số dòng của ma trận: ");
    row = scanner.nextInt();
    System.out.println("Nhập vào số cột của ma trận: ");
    column = scanner.nextInt();
         
    // khai báo và cấp phát bộ nhớ cho mảng
    int[][] matrix = new int[row][column];

    // Để nhập giá trị các phần tử cho mảng
    // chúng ta sẽ sử dụng 2 vòng lặp for
    // vòng lặp for bên ngoài sẽ duyệt i từ 0 đến row - 1
    // và vòng lặp for bên trong sẽ duyệt j từ 0 đến column - 1
    // mỗi lần như vậy thì sẽ nhập vào phần tử tại vị trí i, j
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            System.out.print("Nhập phần tử thứ [" + i + ", " + j + "]: ");
            matrix[i][j] = scanner.nextInt();
        }
    }
    // gọi hàm print để hiển thị ma trận
    System.out.println("Ma trận vừa nhập: ");
    print(matrix);

    // tạo một mảng hai chiều transpose với: 
    // số hàng = số cột của mảng matrix
    // số cột bằng số hàng của mảng matrix
    int[][] transpose = new int[column][row];
    //sử dụng vòng lặp for để gán các phần tử trong mảng matrix cho mảng transpose
    for(int i = 0; i < row; i++) {
      for (int j = 0; j < column; j++) {
        transpose[j][i] = matrix[i][j];
      }
    }
    //gọi hàm print để in mảng transpose ra màn hình
    System.out.printf("\nCác phần tử trong ma trận chuyển vị:\n", row, column);
    print(transpose);

    System.out.println("\n---------------------------------------");
    System.out.println("Chương trình này được đăng tại Freetuts.net");
  }
  //hàm in các phần tử trong mảng hai chiều
  public static void print(int[][] matrix) {
    for(int[] row : matrix) {
      for (int column : row) {
        System.out.print(column + "    ");
      }
      System.out.println();
    }
  }
}

Kết quả:

bai12 02 PNG

Như vậy là chúng ta đã tìm hiểu xong hai chương trình tìm ma trận chuyển vị trong Java. Các bạn có thể tìm hiểu về các bài tập Java khác tại đây, chúc các bạn thành công !!!

Cùng chuyên mục:

Khi nào dùng Default Methods trong Java 8

Khi nào dùng Default Methods trong Java 8

Ở 2 bài trước chúng ta đã tìm hiểu 2 tính năng mới của Java…

Cách chuyển chữ hoa thành chữ thường trong Java

Cách chuyển chữ hoa thành chữ thường trong Java

Trong bài viết này chúng ta sẽ tìm hiểu về cách chuyển đổi chữ in…

Bài tập tính tổng các số tự nhiên trong Java

Bài tập tính tổng các số tự nhiên trong Java

Các số dương 1, 2, 3, 4, ... được gọi là các số tự nhiên,…

Cách chuyển chữ thường thành chữ hoa trong Java

Cách chuyển chữ thường thành chữ hoa trong Java

Trong chuỗi có thể vừa có ký tự thường vừa có ký tự hoa, nhưng…

Cách viết hoa ký tự đầu tiên trong Java

Cách viết hoa ký tự đầu tiên trong Java

Để hiểu được bài này, các bạn cần có kiến thức căn bản về Java…

Hướng dẫn chuyển đổi giờ phút giây trong Java

Hướng dẫn chuyển đổi giờ phút giây trong Java

Để hiểu được chương trình, các bạn cần có kiến thức cơ bản về Java.…

Cách lấy thời gian hiện tại trong Java

Cách lấy thời gian hiện tại trong Java

Để hiểu được bài viết này, các bạn cần có kiến thức cơ bản sau…

Cách làm tròn số trong Java

Cách làm tròn số trong Java

Khi thực hiện tính toán, việc kết quả ra một con số thập phân dài…

Cách chuyển ArrayList thành mảng và ngược lại trong Java

Cách chuyển ArrayList thành mảng và ngược lại trong Java

Để hiểu được bài này, các bạn cần có kiến thức cơ bản về mảng…

Cách nối hai mảng trong Java

Cách nối hai mảng trong Java

Mình sẽ thực hiện hai chương trình nối mảng. Chương trình thứ nhất nối hai…

Cách xóa khoảng trắng của chuỗi trong Java

Cách xóa khoảng trắng của chuỗi trong Java

Mình sẽ thực hiện hai chương trình khác nhau để các bạn có thể hiểu…

In ra tam giác bằng ký tự * và số trong Java

In ra tam giác bằng ký tự * và số trong Java

Mình sẽ giới thiệu cách để in ra các tam giác bằng ký tự *…

Tìm số lớn nhất trong mảng Java

Tìm số lớn nhất trong mảng Java

Các bạn cần tìm hiểu về mảng, cách khởi tạo và in mảng trong Java…

Tìm ước của một số nguyên trong Java

Tìm ước của một số nguyên trong Java

Trong bài viết này chúng ta sẽ tìm hiểu cách tìm tất cả các ước…

Cách kiểm tra số hoàn hảo trong Java

Cách kiểm tra số hoàn hảo trong Java

Cách kiểm tra số đối xứng trong Java

Cách kiểm tra số đối xứng trong Java

Trong bài viết này chúng ta sẽ kiểm tra một số có phải là số…

Đảo ngược một số trong Java

Đảo ngược một số trong Java

Mình sẽ giới thiệu các bạn cách đảo ngược một số sử dụng vòng lặp…

Tìm bội chung nhỏ nhất trong Java

Tìm bội chung nhỏ nhất trong Java

Mình sẽ sử dụng hai cách khác nhau để tìm BCNN. Cách thứ nhất mình…

Cách hoán đổi hai số trong Java

Cách hoán đổi hai số trong Java

Trong phần này mình sẽ sử dụng một biến tạm temp() làm biến trung gian…

Các phương thức xử lý Object trong Java

Các phương thức xử lý Object trong Java

Trong bài viết này mình sẽ giới thiệu các phương thức xử lý Object trong…

Top