Thursday, June 24, 2010

mencari modus dengan pascal

uses crt;

var a,count: array[1..100] of byte;
k,i,n,j,modus,max: integer;

begin
write('masukkan jumlah angka : ');
readln(i);

n:=1;

//menginputkan nilai random variabel array

repeat
a[n]:=random(100);
n:=n+1;
until (n>i);

//menceteak nilai yang diinputkan dari random

writeln('data yang belum di shorting');
for n:=1 to i do
write(a[n],' ');

writeln;writeln;

//mensorting nilai random yang di inputkan

for n:=1 to i do
for k:=n+1 to i do
if (a[n] > a[k])then
begin
j:=a[n];
a[n]:=a[k];
a[k]:=j;
end;


//mencetak data yang sudah di sorting

writeln('data yang sudah di shorting');
for n:=1 to i do
write(a[n],' ');

writeln;
writeln;

max:=0;

//menciptakan nilai count setiap data
for n:=1 to i-1 do
count[a[n]]:=1;

//memposisikan count per nilai
for n:=1 to i-1 do
begin
if (a[n]=a[n+1]) then
count[a[n]]:=count[a[n]]+1
else
if (count[a[n]]>max) then
begin
max:=count[a[n]]; // menyimpan nilai max modus & nilai modusnya
modus:=a[n];
end;
end;

writeln('nilai modusnya adalah ',modus,' sejumlah ',max); //mencetak nilai
modus


//cek ulang jika ada nilai modus lebih dari 1
for n:=1 to i-1 do
begin
if ((count[a[n]]=max)and(a[n]<>modus)) then
begin
modus:=a[n];
writeln('nilai modusnya adalah ',modus,' sejumlah ',max);
end;
end;

writeln;
end.

No comments: