Kamis, 24 Februari 2011

Program Matriks Invers Menggunakan Pascal

Assalamu'alaikum pembaca

Mau ngshare ilmu lagi nich, semester kemaren saya mendapat praktikum di Integrated Labroratorium(Ilab) untuk mata kuliah matematika lanjut. Salah satu pertemuannya membahas tentang matriks invers dan ada soal membuat programnya d Pascal. Di soal saya diminta melengkapi baris-baris yang kosong pada program. Apakah selesai sampai di situ? Ternyata tidak, program yang di berikan setelah dicompile dengan menekan Ctrl+F9 banyak terjadi kesalahan di soal, seperti unknown indentifier dan kesalahan pengetikan. Setelah dikoreksi dan berhasil di run maka barulah program di upload dan pemberian nilai adalah 10 untuk upload yang terlacak dan 90 untuk yang sukses d compile dan berhubung saya mendapat 10 +90 alias 100 makanya saya mau ngshare. Ok itu sedikit curhat  langsung aja ke programnya
untuk algoritmanya adalah sebagai berikut:

- mendeklarasikan variable
- memasukkan beberapa prosedur seperti input,output, invers2x2, dan invers3x3
- untuk tampilan program pertama adalah menu dengan opsi 1. input, 2. invers, 3.exit
- untuk opsi 1 berisi program menginput elemen matriks kemudian mencetak output
- untuk opsi 2 berisi program menampilkan adjoin matriks, determinan beserta inversnya
- untuk opsi 3 menghentikan program

untuk codingnya adalah sebagai berikut

uses wincrt;
type matrik = object
     emat, kof : array [1..3,1..3] of integer;
     procedure input;
     procedure tampil;
     procedure invers;
     procedure invers2;
     procedure invers3;
end;
var        i,j,ordo,det,pil : integer;
       mat : matrik;                                             
procedure matrik.input;
begin
       writeln ;
          write ('Masukan Ordo Matrik ','ordo','X','ordo',' (3/2) : ');readln(ordo);
          writeln;
          for i := 1 to ordo do
          begin
                  for j := 1 to ordo do
             begin
                     write ('Elemen [',i,',',j,'] = ');
                        readln (emat[i,j]);
                end;
      end;
end;
procedure matrik.tampil;
begin
       writeln;
          for i:=1 to ordo do
          begin
                  for j:= 1 to ordo do
             begin
                     write (emat[i,j]:5,' ');
             end;
             writeln;
          end;
       readln;
end;
procedure matrik.invers;
begin
       if ordo = 2 then matrik.invers2
          else matrik.invers3;
end;
procedure matrik.invers2;
begin
       writeln;
          det := (emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]);
          writeln ('Determinan Matrik = ',det);writeln;
          writeln ('Matrik Inversnya :'); writeln;
          writeln (emat[2,2],'/',det,' ','-',emat[1,2],'/',det);
          writeln('-',emat[2,1],'/',det,' ',emat[1,1],'/',det);
          readln;
end;
procedure matrik.invers3;
var detA, detB : integer;
{emat, kof : array [1..3,1..3] of integer;}
begin
       detA:= (emat[1,1] * emat[2,2] * emat[3,3]) + (emat[1,2] * emat[2,3] * emat[3,1]) + (emat[1,3] * emat[2,1] * emat[3,2]);
       detB:= (emat[1,3] * emat[2,2] * emat[3,1]) + (emat[2,3] * emat[3,2] * emat[1,1]) + (emat[1,2] * emat[2,1] * emat[3,3]);
          det := detA - detB;
          writeln;writeln ('Determinan Matrik = ', det);writeln;
          kof[1,1]:=((emat[2,2]*emat[3,3])-(emat[3,2]*emat[2,3]));
          kof[1,2]:=((emat[2,1]*emat[3,3])-(emat[2,3]*emat[3,1]))*-1;
          kof[1,3]:=((emat[2,1]*emat[3,2])-(emat[2,2]*emat[3,1]));
          kof[2,1]:=((emat[1,2]*emat[3,3])-(emat[1,3]*emat[3,2]))*-1;
          kof[2,2]:=((emat[1,1]*emat[3,3])-(emat[1,3]*emat[3,1]));
          kof[2,3]:=((emat[1,1]*emat[3,2])-(emat[1,2]*emat[3,1]))*-1;
          kof[3,1]:=((emat[1,2]*emat[2,3])-(emat[1,3]*emat[2,2]));
          kof[3,2]:=((emat[1,1]*emat[2,3])-(emat[1,3]*emat[2,1]))*-1;
          kof[3,3]:=((emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]));
          writeln ('Matrik Adjoin :');writeln;                          
          for i :=1 to 3 do
          begin
                  for j:= 1 to 3 do
             begin
                     write (kof[j,i]:8,' ');
             end;
             writeln;
          end;
          writeln;writeln ('Matrik Invers :');writeln;
          for i:= 1 to 3 do
          begin
                  for j:= 1 to 3 do
             begin
                     write (kof[i,j],'/',det,' ');
             end;
             writeln;
          end;
          readln;
end;
begin
repeat
       clrscr;
          gotoxy (25,1);writeln ('***** Menu Matrik *****');
          gotoxy (25,2);writeln ('1. Input Matrik');
          gotoxy (25,3);writeln ('2. Matrik Invers');
          gotoxy (25,4);writeln ('3. Keluar');
          gotoxy (25,5);writeln ('************************');
          gotoxy (27,6);write ('Pilihan [1..3] :'); readln (pil);

case pil of
1 : begin
                   mat.input;
                   mat.tampil;
               end;
2 : mat.invers;
end;
until (pil) = 3;
end.

tekan CTRL + F9

outputnya adalah sbb:

Tampilan Menu Utama

mohon maaf klo ada kekurangan, semoga bermanfaat

Tidak ada komentar:

Posting Komentar

007isdead.blogspot.com berbagi ilmu berbagi cerita