Đề 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();
}
}