Trang chủLập trìnhLập trình JavaLập trình Java – Bài tập xử lý ma trận

Lập trình Java – Bài tập xử lý ma trận

Đề bài:

a. Lớp MaTran có các thuộc tính được định nghĩa như sau:
private int soHang, soCot;   // Số hàng, số cột của ma trận
private int M[][];  // Mảng 2 chiều chứa các phần tử của ma trận
Xây dựng lớp MaTran có các thuộc tính như trên và các phương thức sau:
  - Một số toán tử tạo lập
  - Phương thức để nhập thông tin của một ma trận
  - Phương thức để hiển thị thông tin của một ma trận
b. Xây dựng lớp XuLyMaTran có các phương thức thực hiện các công việc sau:
  - Nhập và hiển thị hai ma trận A, B
  - Tính tổng và tích 2 ma trận A, B

Code mẫu

import java.io.DataInputStream;
import java.io.IOException;
import java.util.Scanner;
class MaTran{
    private int soHang;
    private int soCot;
    private int M[][];
    // Toán tử tạo lập
    MaTran(){}
    MaTran(int sh, int sc){ soHang=sh; soCot=sc;}
    MaTran(MaTran X){
        this.soHang=X.soHang;
        this.soCot=X.soCot;
        this.M=new int[this.soHang][this.soCot];
        for(int i=0;i<soHang;i++)
            for(int j=0;j<soCot;j++) 
                this.M[i][j]=X.M[i][j];
    }
    // Các phương thức
      
    public int nhapInt() { // Nhập vào một số nguyên
        Scanner sc=new Scanner(System.in);
        int so;
        String st;
        try {
            st=sc.nextLine();
        }catch(Exception e) {st="0";}
          
        try {
            so=Integer.parseInt(st);
        }catch(NumberFormatException ne) {so=0;}
        return so;
    }
    public int getSH() {return soHang;}
    public int getSC() {return soCot;}
    public void setSH(int sh) {soHang=sh;}
    public void setSC(int sc) {soCot=sc;}
    public void setSH_SC(int sh, int sc) {
        soHang=sh; soCot=sc;
        M=new int[sh][sc];
    }
    public void setPhanTu(int pt, int chiSoHang, int chiSoCot) {
        this.M[chiSoHang][chiSoCot]=pt;
    }
    public int getPhanTu(int chiSoHang, int chiSoCot) {
        return this.M[chiSoHang][chiSoCot];
    }
    public void nhapMT() {
        System.out.print("Nhap so hang :");
        do {
            soHang=nhapInt();
            if(soHang<=0) System.out.print("\t Nhap sai ==> Nhap lai so hang>0 :");
        }while(soHang<=0);
        System.out.print("Nhap so cot :");
        do {
            soCot=nhapInt();
            if(soCot<=0) System.out.print("\t Nhap sai ==> Nhap lai so cot>0 :");
        }while(soCot<=0);
          
        M=new int[soHang][soCot];
        for(int i=0;i<soHang;i++)
        for(int j=0;j<soCot;j++) {
            System.out.print("["+i+"]["+j+"] =");
            M[i][j]=nhapInt();
        }   
    }
    public void hienThiMT() {
        for(int i=0;i<soHang;i++) {
            for(int j=0;j<soCot;j++) 
                System.out.print(M[i][j]+"\t");
            System.out.println();
        }
    }
}
public class XuLyMaTran {
    public MaTran tinhTong(MaTran X, MaTran Y) {
        MaTran tong=new MaTran();
          
        if(X.getSH()!=Y.getSH() || X.getSC()!=Y.getSC()) {
            System.out.println("\t 2 Ma tran khac size ==> Khong the cong!");
            return tong;
        }   
        else {
            int m=X.getSH();
            int n=X.getSC();
              
            tong.setSH_SC(m, n);
              
            for(int i=0;i<m;i++) 
            for(int j=0;j<n;j++) {
                int sum=X.getPhanTu(i, j)+Y.getPhanTu(i, j);
                tong.setPhanTu(sum, i, j);
            }
            return tong;
        }
    }
    public MaTran tinhTich(MaTran X, MaTran Y) {
        MaTran tich=new MaTran();
          
        if(X.getSC()!=Y.getSH()){
            System.out.println("\t Size cua 2 ma tran khong phu hop ==> Khong the nhan!");
            return tich;
        }   
        else {
            int m=X.getSH();
            int n=Y.getSC();
              
            tich.setSH_SC(m, n);
              
            for(int i=0;i<m;i++) 
                for(int j=0;j<n;j++) {
                    int tt=0;
                    for(int k=0;k<Y.getSH();k++)
                        tt+=X.getPhanTu(i, k)*Y.getPhanTu(k, j);
                tich.setPhanTu(tt, i, j);
            }
            return tich;
        }           
    }
    public static void main(String arg[]) {
        MaTran A=new MaTran();
        MaTran B=new MaTran();
        MaTran C=new MaTran();
        MaTran D=new MaTran();
        XuLyMaTran xl=new XuLyMaTran();
          
        System.out.println("\n ======== NHAP MA TRAN A ========" );
        A.nhapMT();
        System.out.println("\n ======== MA TRAN A DA NHAP ========" );
        A.hienThiMT();
        System.out.println("\n ======== NHAP MA TRAN B ========" );
        B.nhapMT();
        System.out.println("\n ======== MA TRAN B DA NHAP ========" );
        B.hienThiMT();
          
        C=xl.tinhTong(A, B);
        System.out.println("\n ======== MA TRAN TICH D=A*B ========" );
        C.hienThiMT();
          
        D=xl.tinhTich(A, B);
        System.out.println("\n ======== MA TRAN TONG D=A*B ========" );
        D.hienThiMT();
    }
}
0 0 Phiếu bình chọn
Xếp hạng bài viết
BÀI VIẾT LIÊN QUAN
Đăng ký nhận thông báo
Thông báo email khi
guest
0 Bình luận
Không thể gửi email
Phản hồi nội tuyến

NÊN ĐỌC THÊM

Bạn muốn tìm kiếm gì?


0
Giáo sư! có thể ném gạch bên dưới nhé!x
()
x