Rabu, 21 Januari 2015

Algoritma pemrograman Matrik dalam JAVA

Matrik adalah struktur penyompanan data di dalam memori utama yang setiap individu elemenya diacu dengan menggunakan 2 buah indeks (indeks baris dan indeks kolom ).

1234  --> baris
2345
1234
kolom.

indeks baris dan kolom dapat juga kita asumsikan sebagai tabel 2 dimensi sejajar sumbu x dan sejajar sumbu y.


 algoritma program untuk menggeser matrik.

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
          System.out.print(ori[a][b]);  
      }
       System.out.println();
   }
   for (a=0;a<3;a++){              //di geser ke kanan 1x(SHL)
       for(b=2;b>=0;b--){
          c=b-1; // 
          if (c==-1&&b==0){
              q[a][2]=ori[a][0];
          }else{
               q[a][c]=ori[a][b];
          }   
        }
    }              
    for (a=0;a<3;a++){             
        for(b=0;b<3;b++){
           ori[a][b]=q[a][b];
           System.out.print(ori[a][b]);  
        }
        System.out.println();

    }
}

dalam program diatas menggunakan 2 variabel  dalam perulangan dengan maksud untuk memisahkan indeks dengan sumbu y dan x.
c sebagai variabel bantu untuk menggeser nilai dari indeks. matrik q aadalah tempat penyimpanan sementara matrik ori. matrik tersebut dapat di geser pada kolom karena indeks b(kolom) mempunyai 1 pergeseran dengan c .

hasil :

512   matrik ini adalah nilai awal
794
291

125 matrik ini adalah nilai setelah digeserke kiri 1 step.
147
912
 algoritma program untuk menukar kolom dan baris

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
         q=[a][b]=ori[a][b]; // menyimpan ori dalam q 
      }
       System.out.println();
   }
   for (a=0;a<3;a++){              //menukar kolom dan baris TRANS
            for(b=0;b<3;b++){
                ori[a][b]=q[b][a];
             System.out.print(ori[a][b]);  
            }
            System.out.println();
        }System.out.println();
}


untuk nenukar kolom dan baris kita hanya menukar indeks matrik asal dan matrik penampung. pertama matriks harus disimpan dahulu ke dalam matriks lain untuk menghindari kesalahan saat penukaran. lalu kita tinggal menukar indeks asal (matriks ori ) dengan indeks pada matrik penyimpan (matrik q),

hasil 
512   matrik ini adalah nilai awal
794
291

572 matrik setelah dirotasi
199
241


algoritma program untuk merotasi matrik

package matriks;
import java.util.Scanner;
public class Matriks {

public static void main(String[] args) {
   int [][] ori ={{5,1,2},{7,9,4},{2,9,1}};
// ini adalah isi dari      matrik yang pertama atau nilai originalnya
   int [][]q= new int [3][3]; 
// matrik untuk menampung data yang      sudah di proses.

   for (a=0;a<3;a++){
//menampilkan matrik awal                   
       for(b=0;b<3;b++){
          System.out.print(ori[a][b]);  
      }
       System.out.println();
   }
   for (a=0;a<3;a++){  //rotasi cw       
       for(b=0;b<3;b++){
           c=0;d=0;
           if(a!=0 && a!= 2&& b!=0 && b!=2){
              c=b;d=a;
           }else if(a==0&&b!=2){// baris paling atas geser kiri
              c=b+1;d=a;  
           }else if (a!=2&&b==2){//ujung kanan atas turun
               d=a+1;c=b;
           }else if(b==0&&a!=0){// kolom kiri naik
               d=a-1;c=b;
           }else if(a==2&&b!=0){// baris bawah ke kiri
               c=b-1;d=a;
           }
       q[a][b]=ori[d][c];
       }  
   }         
  for (a=0;a<3;a++){             
      for(b=0;b<3;b++){
         ori[a][b]=q[a][b];
          System.out.print(ori[a][b]);  
       }
       System.out.println();

   } System.out.println();
}

  algoritma untuk merotasi matrik ini merupakan gabungan dari algoritma penggeseran matrik. dimana dalam prosesnya mengalami 4 pergeseran kekiri kekanan keatas dan kebawah. karena ini lebih komples maka seleksi programnya lebih banyak. kita perlu mengidentifikasi mana yang harus bergeser kekiri, kekanan keatas maupun ke bawah dengan tepat.

512   matrik ini adalah nilai awal
794
291

751 hasil dari rotasi searah dengan jarum jam
292
914

demikian 3 algoritma seputar matrik yang saya sampaikan semoga bermanfaat ^_^

1 komentar:

  1. Tutarni : Terima kasih atas tutorial yang diberikan, akan coba saya praktikan semoga berhasil. Sekali lagi terima kasih :)

    BalasHapus