Google

Sabtu, 21 Agustus 2010

Mencari kata terpanjang dengan Pascal

Jika kita ingin mengetahui mana kata terpanjang dalam suatu kalimat, tentu bukanlah hal yang sulit untuk dilakukan. Contoh: Saya suka sekali berburu. Jika dihitung secara langsung kita tahu berburu adalah kata yang terpanjang.

Tapi ini akan menjadi masalah jika kita membuatkan program komputer. Perkara ini tidak mudah. Walaupun boleh dibilang tingkat kesulitannya masih rendah. Yang pertama kita harus pahami, bahwa suatu kalimat adalah kumpulan kata - kata yang dipisahkan oleh karakter spasi. Sehingga langkah - langkah yang harus kita lakukan adalah:

1. Kita hitung jumlah spasi yang ada dalam suatu kalimat, untuk menentukan jumlah kata.
2. Kita ambil satu persatu kata, dan ditampung kedalam array.
3. Kita hitung panjang karakter setiap kata yang sudah ditampung.
4. Urutkan kata tersebut dari yang panjangnya terpendek ke terendah.

Dari langkah - langkah diatas kita sudah bisa membuat programnya

1. Menghitung jumlah spasi.

for i:=1 to length(s) do
if s[i]=' ' then count:=count+1;

2. Menampung setiap kata kedalam array. Untuk melakukan kita harus melalui 2 langkah berikut:
a. Membuat prosedur untuk memotong kata dalam suatu kalimat.

procedure ambil(n:integer; st:string; var stout1:string; var stout2:string);
var
i,j:integer;
begin
j:=1;
while st[j] <> ' ' do begin
stout1:=copy(st,1,j);
inc(j);
end;
stout2:=copy(st,j+1,n);
end;

b. Menampung potongan - potongan kata kedalam array.

for i:=1 to count+1 do begin
n:=length(c[i]);
ambil(n,c[i],g[i],c[i+1]);
end;

3. Menghitung setiap kata.

b[i]:=length(g[i]);

4. Mengurutkan kata

for k:=1 to i do
for j:=k+1 to i do
if b[k]>b[j] then begin
t:=b[k];
l:=g[k];
b[k]:=b[j];
g[k]:=g[j];
b[j]:=t;
g[j]:=l;
end;

Setelah itu kita tinggal cetak kata yang urutannya terbawah untuk kata terpanjang. Berikut kode lengkapnya.

program hitung_kata;
uses crt;
var
s,l:string;
c,g:array[1..100] of string;
b:array[1..100] of integer;
n,i,j,k,t,p,count:integer;

procedure ambil(n:integer; st:string; var stout1:string; var stout2:string);
var
i,j:integer;
begin
j:=1;
while st[j]<>' ' do begin
stout1:=copy(st,1,j);
inc(j);
end;
stout2:=copy(st,j+1,n);
end;

begin
clrscr;
write('Masukkan kalimat: '); readln(s);
c[1]:=s;
count:=0;
for i:=1 to length(s) do
if s[i]=' ' then count:=count+1;
for i:=1 to count+1 do begin
n:=length(c[i]);
ambil(n,c[i],g[i],c[i+1]);
b[i]:=length(g[i]);
end;
for k:=1 to i do
for j:=k+1 to i do
if b[k]>b[j] then begin
t:=b[k];
l:=g[k];
b[k]:=b[j];
g[k]:=g[j];
b[j]:=t;
g[j]:=l;
end;
writeln('kata terpanjang adalah: ',g[i]);
readln;
end.

Semoga Bermanfaat.

0 komentar:

Poskan Komentar