Wednesday, May 25, 2011

Syntak Program Matrik Pascal


uses wincrt;
var
a : array [0..100,0..100] of integer;
b : array [0..100,0..100] of integer;
c : array [0..10,0..10] of integer;
p,ca,ck,ss,bk,i,h,j,k,r,x,y: integer;
procedure tambah;
begin
write ('matriks A+B');
if (ck=bk)and(ca=ss) then
begin
j:=1;
for h:=1 to ca do
begin
k:=1;
for i:=1 to ck do
begin
write (' ',(a[h,i]+b[j,k]),' ');
k:=k+1;
end;
writeln; j:=j+1;
end;
end;
if ck<>bk then writeln('maaf.. jumlah kolom kedua matrik berbeda');
if ca<>ss then writeln('maaf.. jumlah baris kedua matrik berbeda');
end;
procedure kurang;
begin
writeln ('matrik A-B');
if (ck=bk)and(ca=ss) then
begin
j:=1;
for h:=1 to ca do
begin
k:=1;
for i:=1 to ck do
begin
write (' ',(a[h,i]-b[j,k]),' ');
k:=k+1;
end;
writeln; j:=j+1;
end;
end;
if ck<>bk then writeln('maaf.. jumlah kolom kedua matrik berbeda');
if ca<>ss then writeln('maaf.. jumlah baris kedua matrik berbeda');
end;
procedure kali;
begin
writeln ('Matrik A*B');
if ca=ss then begin
for h:=1 to ca do
begin
for k:=1 to ck do
begin
r:=0;
j:=1;
for i:=1 to ck do
begin
r:= r+ a[h,i]*b[j,k];
j:= j+1
end;
write (r,' ');
end;writeln;
end;
end
else begin
writeln;writeln('Maaf!! Jumlah KOLOM matrik A tidak sama dengan BARIS matrik B');end;
end;
procedure transpose;
begin
writeln ('Transpose matrik a');
for i:=1 to ca do
begin
for h:=1 to ck do
write (' ',a[h,i],' ');
writeln;
end;
writeln;
gotoxy(27,y+2);writeln ('Transpose matrik b');
y:=y+3;
for k:=1 to ca do
begin
x:=27;
for j:=1 to ck do begin
gotoxy(x,y);write (' ',b[j,k],' ');x:=x+3; end;y:=y+1;
writeln;
end;writeln;
end;
Procedure cetak;
begin
clrscr;
gotoxy(10,1);writeln ('####### PERHITUNGAN MATRIK 2 ORDO #######') ; writeln;
writeln ('Data yang anda masukan adalah :');writeln;
writeln ('Matrik a');
for h:=1 to ca do
begin
for i:=1 to ck do
write (' ',a[h,i],' ');
writeln;
end;
writeln;
gotoxy (27,5);writeln ('Matrik b');
y:=6;
for j:=1 to ss do
begin
x:=27;
for k:=1 to ck do begin
gotoxy(x,y);write (' ',b[j,k],' '); x:=x+3;end; y:=y+1;
end;writeln;
end;
procedure input;
begin
writeln (' -== PERHITUNGAN MATRIK ORDO 2 ==- ') ; writeln;
write ('Masukan jumlah baris matrik A: '); readln (ca);
write ('Masukan jumlah kolom matrik A: '); readln (ck);writeln;
write ('Masukan jumlah baris matrik B: '); readln (ss);
write ('Masukan jumlah kolom matrik B: '); readln (bk);
writeln;
writeln ('Masukan komponen data Matrik A');
for h:=1 to ca do
begin
for i:=1 to ck do
begin
write ('Data ke-(',h,',',i,')= ');
readln (a[h,i]);
end;
end;
writeln;
writeln ('Masukan komponen data matrik B');
for j:=1 to ss do
begin
for k:=1 to ck do
begin
write ('Data ke-(',j,',',k,')= ');
readln (b[j,k]);
end;
end;
end;
procedure keluar;
begin
gotoxy(0,10);
writeln(' Terima kasih telah menggunakan program ini'); writeln;writeln;
write('***************(SAMPUN CEKAP)***************'); exit;
end;
procedure garis;
begin
writeln ('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
writeln ('###############################################################################');
end;
procedure menu;
begin
writeln;
writeln ('Menu Operasi');
writeln ('1. Penambahan Matrik');
writeln ('2. Pengurangan Matrik');
writeln ('3. Perkalian Matrik');
writeln ('4. Transpose Matrik');
writeln ('5. Input matrik yang baru');
writeln ('6. Keluar');writeln;
write ('Masukan nomor pilihan anda :'); readln (p);
if p= 1 then begin cetak; garis; tambah; garis; menu; end;
if p= 2 then begin cetak; garis; kurang; garis; menu; end;
if p= 3 then begin cetak; garis; kali; garis; menu; end;
if p= 4 then begin cetak; garis; transpose; garis; menu; end;
if p= 5 then begin clrscr; input ; cetak; garis; writeln; writeln; garis; menu; end;
if p= 6 then begin clrscr; keluar; end else begin
cetak; writeln('Maaf!! angka yang anda masukan tidak sesuai perintah');menu; end;
end;
{program Utama}
begin
input;
cetak;
garis;
writeln;writeln;
writeln;
garis;
menu;
end.

SYNTAK PROGRAM KOMBINASI DANPERMUTASI

uses wincrt;                                 
ar fn,fk,fn_k:real;                     
    n,k:byte;                                   
    lagi:char;
    pil:1..3;
function kombinasi1(x,y:byte):real;
var i:byte;
   kmb:real;
begin
fn:=1;
fk:=1;
fn_k:=1;
if (x=0) and (y=0) then begin fn:=1;fk:=1;fn_k:=1; end
else
for i:=1 to x do
fn:=fn*i;
for i:=1 to y do
fk:=fk*i;
for i:=1 to (x-y) do
fn_k:=fn_k*i;
kmb:=fn/(fk*fn_k);
kombinasi1:=kmb;
end;
function permutasi(x,y:byte):real;
var i:byte;
    komb:real;
begin
 fn:=1;
 fk:=1;
 fn_k:=1;
 if (x=0) and (y=0) then begin fn:=1;fk:=1;fn_k:=1; end
 else
 for i:=1 to x do
     fn:=fn*i;
 for i:=1 to (x-y) do
fn_k:=fn_k*i;
komb:=fn/fn_k;
permutasi:=komb;
end;
begin
repeat
clrscr;
writeln;
writeln(' PERGHITUNGAN KOMBINASI & PERMUTASI DENGAN LOGIKA FAKTORIAL ');
writeln;
writeln(' 1. Penghitungan Kombinasi ');
writeln(' 2. Penghitungan Permutasi ');
writeln(' 3. Pernyataan ');
writeln;
writeln(' Masukan pilihan anda[1..3] ');readln(pil);
case pil of
1:
begin
write(' masukkan bilangan n = ');readln(n);
write(' masukkan bilangan r = ');readln(k);
writeln(' dengan lop hasil ',n,' kombinasi ',k,' adalah ',kombinasi1(n,k):0:0);
end;
2:
begin
write(' masukkan bilangan n = ');readln(n);
write(' masukkan bilangan r = ');readln(k);
writeln(' dengan lop hasil ',n,' permutasi ',k,' adalah ',permutasi(n,k):0:0);
end;
3:
begin
writeln;
writeln(' *********** program sukses ************ ');
writeln(' ########## untuk berhenti tekan ==> t ######### ');
end;
end;
writeln;write(' coba lagi<y/t> ==> ');readln(lagi);
until (lagi='t');
end.

Adsens