RSS

Matriks-2

Pada halaman ini Anda akan belajar tentang operasi matriks Transpose, Refleksix, Refleksiy dan Rotasi.

Transpose matriks :
transpose disini adalah baris jadi kolom dan vice versa. Misalnya nih ada matriks dimensi 3 x 2 sebagai berikut :
     2     3
     4     5
     6     7
jika matriks tersebut di transpose maka yang terjadi adalah matriks dimensi 2 x 3 sebagai berikut :
     2     4     6
     3     5     7
Kuncinya yang semula baris jadi kolom dan yang semula kolom jadi baris.

Alur program :

  • Masukkan ordo/dimensi matriks, misalnya baris = i dan kolom = j
  • Gunakan perulangan sejumlah baris dan kolom
    • Masukkan nilai matrik[baris,kolom]
  • Gunakan perulangan sejumlah kolom dan baris -- kebalikan dari perulangan sebelumnya
    • Tuliskan nilai matrik[kolom,baris]

Listing Program :

program matriks;
uses crt;
var matrik:array[1..50,1..50] of byte;
    i,j,baris,kolom:byte;
begin
   clrscr;
   {memasukkan ordo matrik}
   readln(baris,kolom);

   {memasukkan nilai matrik}
   for i:= 1 to baris do
      for j:= 1 to kolom do readln(matrik[i,j]);

   {mencetak transpose matrik}
    for i:= 1 to kolom do begin
       for j:= 1 to baris do write(matrik[j,i],'  ');
       writeln;
    end;

    writeln;

   readkey;
end.

Refleksi / Pencerminan Matrik Horisontal :
Refleksi / pencerminan matrik ini dapat dibedakan menjadi 2 macam, yaitu pencerminan terhadap sumbu x (horisontal) dan pencerminan terhadap sumbu y (vertikal).

Dalam refleksi dengan sumbu x (horisontal), dapat diilustrasikan sebagai berikut :
input adalah matrik dengan ordo tertentu, contoh 3 x 3sebagai berikut :
     1     2     3
     4     5     6
     7     8     9
setelah di refleksikan terhadap sumbu x maka matrik berubah menjadi :
     7     8     9
     4     5     6
     1     2     3

Jika hanya ditampilkan saja, maka program refleksi matrik menjadi :
program matriks;
uses crt;
var matrik:array[1..50,1..50] of byte;
    i,j,baris,kolom:byte;
begin
   clrscr;
   {memasukkan ordo matrik}
   readln(baris,kolom);

   {memasukkan nilai matrik}
   for i:= 1 to baris do
      for j:= 1 to kolom do readln(matrik[i,j]);

   {menampilkan refleksi matrik sumbu x}
    for i:= baris downto 1 do begin
       for j:= 1 to kolom do write(matrik[i,j],'  ');
       writeln;
    end;

    writeln;

   readkey;
end.

Jika hendak membentuk matrik refleksi maka program menjadi :
program matriks;
uses crt;
var matrik,matx:array[1..50,1..50] of byte;
    i,j,baris,kolom,brs:byte;
begin
   clrscr;
   {memasukkan ordo matrik}
   readln(baris,kolom);

   {memasukkan nilai matrik}
   for i:= 1 to baris do
      for j:= 1 to kolom do readln(matrik[i,j]);

   {refleksi matrik sumbu x}
    brs:=1;
    for i:= baris downto 1 do begin
       for j:= 1 to kolom do matx[brs,j]:=matrik[i,j];
       inc(brs);
    end;

    writeln;

   {mencetak matrik refleksi}
   for i:= 1 to baris do begin
      for j:= 1 to kolom do write(matx[i,j],'  ');
      writeln;
   end;

   readkey;
end.

Refleksi / Pencerminan Matrik Vertikal :

Dalam refleksi / pencerminan matrik terhadap sumbu y (vertikal), dapat diilustrasikan sebagai berikut :
Contoh masukan matrik dengan ordo 3 x 3 :
     1     2     3
     4     5     6
     7     8     9
setelah di refleksikan terhadap sumbu y maka matrik berubah menjadi :
     3     2     1
     6     8     4
     9     5     7

Program berikut membentu matrik refleksi yang baru :
program matriks;
uses crt;
var matrik,maty:array[1..50,1..50] of byte;
    i,j,baris,kolom,klm:byte;
begin
   clrscr;
   {memasukkan ordo matrik}
   readln(baris,kolom);

   {memasukkan nilai matrik}
   for i:= 1 to baris do
      for j:= 1 to kolom do readln(matrik[i,j]);

   {refleksi matrik sumbu y}
    for i:= 1 to baris do begin
       klm:=0;
       for j:= kolom downto 1 do begin
          inc(klm);
          maty[i,klm]:=matrik[i,j];
       end;
    end;

    writeln;

   {mencetak matrik refleksi}
   for i:= 1 to baris do begin
      for j:= 1 to kolom do write(maty[i,j],'  ');
      writeln;
   end;

   readkey;
end.

Rotasi matrik 90 derajat :

Rotasi /perputaran matrik ini memutar matrik sebesar 90 derajat, dapat diilustrasikan sebagai berikut :
Contoh input matrik dengan ordo 3 x 3 :
     1     2     3
     1     2     3
     1     2     3
Setelah di rotasi kan 90 derajat menjadi  :
     1     1     1
     2     2     2
     3     3     3
Jika dilihat maka perpindahan letak tersebut adalah sebagai berikut :
     posisi matrik rotasi (1,1) diisi dari matrik asal (3,1)
     posisi matrik rotasi (1,2) diisi dari matrik asal (2,1)
     posisi matrik rotasi (1,3) diisi dari matrik asal (1,1)
... dst
...
     posisi matrik rotasi (3,2) diisi dari matrik asal (2,3)
     posisi matrik rotasi (3,3) diisi dari matrik asal (1,3)

Program berikut membentuk matrik rotasi 90 derajat :
program matriks;
uses crt;
var matrik,matr:array[1..50,1..50] of byte;
    i,j,baris,kolom:byte;
begin
   clrscr;
   {memasukkan ordo matrik}
   readln(baris,kolom);

   {memasukkan nilai matrik}
   for i:= 1 to baris do
      for j:= 1 to kolom do readln(matrik[i,j]);

   {rotasi matrik}
    for i:= 1 to baris do begin
       for j:= 1 to kolom do begin
          matr[i,j]:=matrik[kolom-j+1,i];
       end;
    end;

    writeln;

   {mencetak matrik rotasi}
   for i:= 1 to baris do begin
      for j:= 1 to kolom do write(matr[i,j],'  ');
      writeln;
   end;

   readkey;
end.

Baris program rotasi matrik, memutar matrik sebesar 90 derajat, agar sebuah matrik dapat diputar 180 derajat atau 270 derajat, maka baris program rotasi tersebut dapat ditampung menjadi sebuah procedure, sehingga dapat dijalankan berulang-ulang.

>> kembali ke halaman PASCAL


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.