[Java] Xử lý mảng 2 chiều trên Java [Kế thừa trong Java]

Bài tâp: Xây dựng class theo mô hình




[Code Java]

// Class Matran.java
package xuly_matran;
import java.util.Scanner;
public class Matran {
    int [][] a=new int[7][7];
    int n;
   
    // nhap ma tran
    void NhapMT(){
        Scanner t=new Scanner(System.in);
        // nhap kich thuc mang
        System.out.print("\n + Nhap kich thuoc ma tran: \n");
        do{
            System.out.print("\n n= ");
            n=t.nextInt();
            if((n<2||n>7))
                System.out.print("\n Nhap lai n! ");
        }while(n<2||n>7);
        System.out.print("\n + Nhap ma tran: \n");
        for (int i=0;i<n;i++)
            for (int j=0;j<n;j++)
            {
                System.out.print("\n a["+i+"]["+j+"]= ");
                a[i][j]=t.nextInt();
            }
    }
    // In ma tran
    void InMT(){
        System.out.print("\n + In ma tran \n");
        for (int i=0;i<n;i++){
            for (int j=0;j<n;j++)
                System.out.print(a[i][j]+"\t");              
            System.out.print("\n");              
            }
    }
}

// Class SapXep.java
/*
 * Sắp xếp từng dòng của ma trận tăng dân (bubble sort)
 * Sắp xếp từng cột của ma trận giản dần (Insert sort)
 */
package xuly_matran;

public class SapXep extends Matran {
    public SapXep(){
        System.out.print("\n * SAP XEP MA TRAN \n ");
    }
    // sap xep dong tang dan
    void Bubble_sort(){
        System.out.print("\n + In ma tran da sap xep dong tang dan \n");
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                for(int k=n-1;k>j;k--)
                    if(a[i][k]<a[i][k-1])
                    {
                        int temp=a[i][k];
                        a[i][k]=a[i][k-1];
                        a[i][k-1]=temp;
                       
                    }
        super.InMT();
    }
    // sap xep cot giam gan
    void Insert_sort(){
       System.out.print("\n + In ma tran da sap xep cot giam dan \n");
     
       for(int j=0;j<n;j++)
       {
           for(int i=1;i<n;i++)          
           {
           int pos=i-1;
           int t=a[i][j];
           while(pos>=0&&a[pos][j]<t)
           {
               a[pos+1][j]=a[pos][j];
               pos--;
           }
           a[pos+1][j]=t;
           }
       }
       super.InMT();
    }
   
}

// Class Tim_Dem.java
/*
 * Tìm vị trí xuất hiện các số chẵn trong ma trận
 * Đếm số nguyên tố có trong ma trận
 */
package xuly_matran;

public class Tim_Dem extends Matran {
    public Tim_Dem(){
        System.out.print("\n * TIM SO CHAN - DEM SO NGUYEN TO \n");
    }
    // In vi tri so chan trong ma tran
    void InViTRiSoChan(){
        System.out.print("\n + In vi tri so chan trong ma tran:\n");
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                if(a[i][j]%2==0) System.out.print("["+i+"]["+j+"]; ");
    }
    // ham kiem tra so nguyen to
    boolean TestNT(int a){
        for(int i=2;i<a;i++)
            if(a%i==0)
                return false;
        return true;
    }
    // Dem so nguyen to trong ma tran
    void DemSoNT(){      
        int dem=0;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
                if(TestNT(a[i][j])) dem++;
        System.out.print("\n + So nguyen to co trong ma tran la: "+dem);
    }
}

// Class Tach.java
/*
 * Tách đường chéo chính thành ma trận
 */
package xuly_matran;

public class Tach_DCheo extends Matran{
    int[] m=new int [7];
    public Tach_DCheo(){
        System.out.print("\n * TACH DUONG CHEO CHINH THANH MA TRAN");
    }
    // Tach duong cheo
    void Tach(){
        for(int i=0;i<n;i++)
            m[i]=a[i][i];      
        System.out.print("\n + Mang  vua tach: \n");
        for(int i=0;i<n;i++)
            System.out.print(m[i]+"; ");
    }
    // sap xep tang dan
    void SapXep()
    {
        for(int i=0;i<n;i++)
            for(int j=i+1;j<n;j++)
                if(m[i]>m[j])
                {
                    int t=m[i]; m[i]=m[j]; m[j]=t;
                }
        System.out.print("\n + Sap xep mang \n");
        for(int i=0;i<n;i++)
            System.out.print(m[i]+"; ");
    }
   
}

// Class XuLy_Matran.java (class main)

/*
http://lap-trinh-may-tinh.blogspot.com/
*/
package xuly_matran;

public class Xuly_matran {

    public static void main(String[] args) {
        Matran t=new Matran();
        t.NhapMT();
        t.InMT();
       
        // Sap xep
        SapXep t1=new SapXep();
        t1.NhapMT();
        t1.Bubble_sort();
        t1.Insert_sort();
       
        // Tìm - đếm
        Tim_Dem t2=new Tim_Dem();
        t2.NhapMT();
        t2.InViTRiSoChan();
        t2.DemSoNT();
       
        // Tách đường chéo chính
        Tach_DCheo t3=new Tach_DCheo();
        t3.NhapMT();
        t3.Tach();
        t3.SapXep();
    }
}


[Tải code tại đây]

0 nhận xét:

Cảm ơn bạn đã quan tâm tới bài viết này!