Google

Sabtu, 30 April 2011

Multi Palindrom di Pascal

Kali ini kita akan belajar Multi Palindrom. Multi Palindrom sering kita gunakan untuk mempelajari logika dasar string di Pascal. Palindrome itu berasal dari bahasa Yunani yaitu Palindromos A Palindrome. Palindromos A Palindrome adalah kata atau kalimat yang sama dieja maju atau mundur(bacaan yang sama dieja pada kedua arah). Sebagai contoh sederhana adalah beberapa kata yang sederhana yaitu rotor, rotator, civic, madam, racecar, level, dan lain-lain. Untuk contoh lain yaitu kalimat palindrome adalah No lemon no melon, No devil lived on, dan sebagainya.Palindrom Latin "Sator Arepo Tenet Opera Rotas" sangat unik karena ia akan megulang kalimatnya lagi jika kita membentuk kata dari huruf pertama setiap kata kemudian disambung dengan huruf kedua setiap kata, dan seterusnya. Karena itu ia juga dapat disusun dalam sebuah kotak yang dapat dibaca secara vertikal maupun horisontal:

S A T O R

A R E P O

T E N E T

O P E R A

R O T A S


INPUT YANG DIBUTUHKAN

Input yang dibutuhkan untuk menghasilkan program yang dimaksud sebuah kata atau kalimat. Dimungkinkan kata atau kalimat tersebut mengandung fungsi palindrom sehingga hasilnya akan kelihatan.

Kode Programnya sebagai berikut:


Uses Crt;

type recin = record

data:String;

end;

recout = record

data:String;

jml:byte;

end;

Var

count:byte;

temp:recin;

tem:recout;

fi:file of recin;

fo:file of recout;

alpha:String;

Function Tango(s:String):String;

Var k:byte;

p:String;

Begin

p:=s;

For k:=1 To Length(s) Do

Begin

s[k]:=p[Length(s)-(k-1)];

End;

Tango:=s;

End;

procedure sneak(l:string);

var

i,j,n:byte;

bravo,beta,charlie:String;

begin

n:=length(l);

count:=0;

for j:= 1 to n-1 do

for i:= 2 to (n+1)-j do begin

bravo:=copy(l,j,i);

beta:=Tango(bravo);

if bravo=beta then begin

count:=count+1;

writeln('Polindrom ke-',count);

writeln(bravo);

end;

end;

end;

writeln('Jumlah Polindrom: ',count);

end;

Begin

Clrscr;

assign(fi,'multipal.in');

rewrite(fi);

Write('Masukkan Suatu Kalimat: '); Readln(alpha);

temp.data:=alpha;

write(fi,temp);

close(fi);

sneak(alpha);

assign(fo,'multipal.out');

rewrite(fo);

tem.data:=alpha;

tem.jml:=count;

write(fo,tem);

close(fo);

writeln;

writeln;

writeln('============');

writeln('MULTIPAL.IN');

assign(fi,'multipal.in');

reset(fi);

read(fi,temp);

close(fi);

writeln(temp.data);

writeln;

writeln('=============');

writeln('MULTIPAL.OUT');

assign(fi,'multipal.out');

reset(fo);

read(fo,tem);

close(fo);

writeln(tem.jml);

Readln;

End.

0 komentar:

Poskan Komentar