Jumat, 05 Januari 2018

, ,

ALGORITMA & STRUKTUR DATA BAB 3: ADT ARRAY 2 DIMENSI

Laporan Praktikum Algoritma & Struktur Data Bab 3 Fakultas Ilmu Komputer Universitas Brawijaya 2017/2018

Soal :
      1.       Tambahkan method untuk mencari determinan matrik dengan header
double determinan()

      2.       Tambahkan method untuk transpose matrik dengan header
Matrik tranposeMatrik()

      3.       Tambahkan method untuk perkalian matrik dengan header
Matrik kali(Matrik m)
            Interface pemanggilan method di atas sebagai berikut :
Misalkan  dideklarasikan  Matrik A,B, C;
C = A.kali(B)

      4.      Tambahkan method untuk mengambil isi baris tertentu dan is kolom tertentu dari matrik dan               hasilnya dikeluarkan berupa larik dengan header sebagai berikut :
Larik getKolom(int idK)
Larik getBaris(int idK)
       Untuk dapat menjalankan ini tambahkan program Larik pada praktikum 1 diatas program ini               atau anda susun dalam bentuk paket (minta petunjuk pada asisten).  Karena larik pada program 1         tipe itemnya integer maka agar kompatibel dengan program matrik ada dua cara :
·         Lakukan casting (minta petunjuk pada asisten)
·         Anda  edit tipe data itemDt pada larik bertipe float
      5.      Lengkapi program di atas sehingga dengan potongan program berikut akan menghasilkan                    keluaran sebagaimana disamping

Source code :
Class Bab3Array2D
package asdmodul1;

public class Bab3Array2D {

    private int nBaris, nKolom;
    private double[][] itemDt;

    public Bab3Array2D(int nBrs, int nKlm) {
        nBaris = nBrs;
        nKolom = nKlm;
        itemDt = new double[nBaris][nKolom];
    }

    public Bab3Array2D(double[][] dt) {
        nBaris = dt.length;
        nKolom = dt[0].length;
        this.itemDt = new double[nBaris][nKolom];
        for (int i = 0; i < nBaris; i++) {
            for (int j = 0; j < nKolom; j++) {
                this.setItem(i, j, dt[i][j]);
            }
        }
    }

    double determinan() {
        double[][] a = itemDt;
        double d = ((a[0][0] * a[1][1] * a[2][2])
                + (a[0][1] * a[1][2] * a[2][0])
                + (a[0][2] * a[1][0] * a[2][1]))
                - ((a[0][2] * a[1][1] * a[2][0])
                + (a[0][0] * a[1][2] * a[2][1])
                + (a[0][1] * a[1][0] * a[2][2]));
        return d;
    }

    /**
     * Fungsi untuk mendapatakan jumlah baris
     *
     * @return jumlah baris
     */
    public int getNBaris() {
        return nBaris;
    }

    public int getNKolom() {
        return nKolom;
    }

    public double getItem(int idB, int idK) {
        return this.itemDt[idB][idK];
    }

    public void setItem(int idB, int idK, double dt) {
        this.itemDt[idB][idK] = dt;
    }

    public Bab3Array2D tambah(Bab3Array2D x) {
        Bab3Array2D y = null;
        if ((this.nBaris == x.getNBaris()) && (this.nKolom == x.getNKolom())) {
            y = new Bab3Array2D(x.getNBaris(), x.getNKolom());
            for (int i = 0; i < this.nBaris; i++) {
                for (int j = 0; j < this.nKolom; j++) {
                    y.setItem(i, j, this.itemDt[i][j] + x.getItem(i, j));
                }
            }
        }
        return y;
    }

    Bab3Array2D transposeMatrik(Bab3Array2D s) {
        Bab3Array2D sausan = new Bab3Array2D(nKolom, nBaris);
        for (int i = 0; i < nKolom; i++) {
            for (int j = 0; j < nBaris; j++) {
                System.out.print(itemDt[j][i] + " ");
            }
            System.out.println("|");
        }
        return sausan;
    }

    Bab3Array2D kali(Bab3Array2D s) {
        Bab3Array2D sausan = new Bab3Array2D(nBaris, s.nKolom);
        if (nKolom != s.nBaris) {
            return null;
        } else {
            for (int i = 0; i < nBaris; i++) {
                for (int j = 0; j < s.nKolom; j++) {
                    double asuka = 0;
                    for (int z = 0; z < s.nKolom; z++) {
                        asuka = asuka + itemDt[i][z] * s.itemDt[z][j];
                        sausan.setItem(i, j, asuka);
                        //System.out.print(asuka+" ");
                    }//System.out.println("");
                }
            }
        }
        return sausan;
    }

    public Bab2Array1D getBaris(int idK) {
        Bab2Array1D sausan = new Bab2Array1D(nKolom);
        for (int i = 0; i < nKolom; i++) {
            sausan.isiItem(i, (int) itemDt[idK][i]);
        }
        return sausan;
    }

    public Bab2Array1D getKolom(int idK) {
        Bab2Array1D sausan = new Bab2Array1D(nBaris);
        for (int i = 0; i < nBaris; i++) {
            sausan.isiItem(i, (int) itemDt[i][idK]);
        }
        return sausan;
    }

    public void cetak(String kom) {
        System.out.println(kom);
        for (int i = 0; i < this.nBaris; i++) {
            for (int j = 0; j < this.nKolom; j++) {
                System.out.print(this.itemDt[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Bab3Array2D A, B, C, D;
        double[][] X = {{1, 2, 3}, {2, 14, 5}, {16, 8, 13}};
        double[][] Y = {{10, 12, 0}, {5, 1, 5}, {3, 1, 10}};
        A = new Bab3Array2D(X);
        B = new Bab3Array2D(Y);
        A.cetak("Matrik A");
        B.cetak("Matrik B");
        C = A.tambah(B);
        C.cetak("Matrik C = A + B");
        A.determinan();
        A.cetak("Determinan matriks A = " + A.determinan());
        B.determinan();
        B.cetak("Determinan matriks B = " + B.determinan());
        A.cetak("Matriks transpose A");
        A.transposeMatrik(A);
        B.cetak("Matriks transpose B");
        B.transposeMatrik(B);
        A.cetak("Perkalian matriks A & B");
        C = A.kali(B);
        D = new Bab3Array2D(X);
        Bab2Array1D lb, lk;
        lb = D.getBaris(1);
        lb.cetak("Larik baris ke-1 pada matriks A");
        lk = D.getKolom(1);
        lk.cetak("Larik kolom ke-1 pada matriks A");
    }
}

Class Bab3Matrix
package asdmodul1;

public class Bab3Matrix {

    private int nBaris, nKolom;
    private double[][] itemDt;

    public Bab3Matrix(int nBrs, int nKlm) {
        nBaris = nBrs;
        nKolom = nKlm;
        itemDt = new double[nBaris][nKolom];
    }

    public Bab3Matrix(double[][] A) {
        this(A.length, A[0].length); // panggil contructor
        this.nBaris = A.length;
        this.nKolom = A[0].length;
        for (int i = 0; i < nBaris; i++) {
            for (int j = 0; j < nKolom; j++) {
                this.itemDt[i][j] = A[i][j];
            }
        }
    }

    public int getNBaris() {
        return nBaris;
    }

    public int getNKolom() {
        return nKolom;
    }

    public double getItem(int idB, int idK) {
        return this.itemDt[idB][idK];
    }

    public void setItem(int idB, int idK, double dt) {
        this.itemDt[idB][idK] = dt;
    }

    public static Bab3Matrix tambah(Bab3Matrix A, Bab3Matrix B) {
        Bab3Matrix C = null;
        if ((B.nBaris == A.getNBaris()) && (B.nKolom == A.getNKolom())) {
            C = new Bab3Matrix(A.getNBaris(), A.getNKolom());
            for (int i = 0; i < B.nBaris; i++) {
                for (int j = 0; j < B.nKolom; j++) {
                    C.setItem(i, j, B.itemDt[i][j] + A.getItem(i, j));
                }
            }
        }
        return C;
    }

    public static Bab2Array1D VektorKaliMatrik(Bab2Array1D L, Bab3Matrix M) {
        Bab2Array1D lHasil = null;
        Bab2Array1D lKolom = null;
        if (L.getSize() == M.getNBaris()) {
            lHasil = new Bab2Array1D(M.getNKolom());
            for (int i = 0; i < M.getNKolom(); i++) {
                lKolom = M.getKolom(i);
                double hasil = Bab2Array1D.LarikKaliLarik(L, lKolom);
                System.out.println(hasil);
                lHasil.isiItem(i, (int) hasil);
            }
        }
        return lHasil;
    }

    public double determinan() {
        double d = 0;
        if (nBaris == nKolom) {
            double[][] a = itemDt;
            d = ((a[0][0] * a[1][1]) + (a[0][1] * a[1][2]) + (a[0][2] * a[1][0]))
                    - ((a[1][0] * a[0][1]) + (a[1][1] * a[0][2]) + (a[2][2] * a[0][0]));
        } else {
            System.out.print("Bukan matriks persegi");
        }
        return d;
    }

    public static Bab3Matrix tranpos(Bab3Matrix A) {
        Bab3Matrix sausan = new Bab3Matrix(A.nKolom, A.nBaris);
        for (int i = 0; i < A.nKolom; i++) {
            for (int j = 0; j < A.nBaris; j++) {
                sausan.setItem(i, j, A.itemDt[j][i]);
            }
        }
        return sausan;
    }

    public Bab2Array1D getBaris(int idBaris) {
        Bab2Array1D sausan = new Bab2Array1D(nKolom);
        for (int i = 0; i < nKolom; i++) {
            sausan.isiItem(i, (int) itemDt[idBaris][i]);
        }
        return sausan;
    }

    public Bab2Array1D getKolom(int idKolom) {
        Bab2Array1D l = new Bab2Array1D(this.nBaris);
        for (int i = 0; i < this.nBaris; i++) {
            double itemKolom = this.getItem(i, idKolom);
            l.isiItem(i, (int) itemKolom);
        }
        return l;
    }

    public void cetak(String kom) {
        System.out.println(kom);
        for (int i = 0; i < this.nBaris; i++) {
            for (int j = 0; j < this.nKolom; j++) {
                System.out.printf("%.2f ", this.itemDt[i][j]);
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        Bab3Matrix A, B, C;
        double[][] data1 = {{1, 2, 3}, {3, 4, 7}};
        double[][] data2 = {{4, 5, 1}, {6, 1, 9}};
        A = new Bab3Matrix(data1);
        B = new Bab3Matrix(data2);
        A.cetak("A");
        B.cetak("B");
        C = Bab3Matrix.tambah(A, B);
        C.cetak("C");
        System.out.println("Determinan C : " + C.determinan());
        Bab3Matrix CT = Bab3Matrix.tranpos(C);
        CT.cetak("Tranpos");
        Bab2Array1D l1 = C.getBaris(1);
        l1.cetak("Baris ke 1 dari C");
        Bab2Array1D l2 = Bab3Matrix.VektorKaliMatrik(l1, CT);
        l2.cetak("Hasil kali C.L1");
    }
}


Download the file here
Share:

0 comments:

Posting Komentar