Posting ini akan memuat beberapa program yang saya buat untuk pembelajaran klub IT. Program ini saya buat dengan bahasa PASCAL menggunakan situs coding ground. Soal program-program berikut saya ambil dari internet, hanya pengerjaan programnya saya lakukan sendiri dengan gaya saya. Full uji coba didalamnya. Boleh di-copy untuk saling belajar dan berbagi... Semoga bermanfaat !
Program berikut merupakan program yang menghitung jumlah tahun, bulan dan hari. Inputnya berupa angka hari kemudian dikonversikan menjadi tahun, bulan dan hari. Contoh :
Input : Masukkan hari: 470
Output : hasil : 1 tahun 3 bulan 15 hari
Input : Masukkan hari: 300
Output : hasil : 0 thaun 10 bulan 0 hari
Program tbh;
{variabel yang digunakan dalam program}
var tahun,bulan,hari,temp:integer;
begin
write('Masukkan hari: ');
readln(hari);
tahun:=0; bulan:=0; {nilai awal}
{jika input hari lebih besar dari 365}
if hari>365 then begin
temp:= hari;
repeat {mencari tahun}
inc(tahun);
temp:=temp-365;
until temp<365;
repeat {mencari bulan}
inc(bulan);
temp:=temp-30;
until temp<30;
hari:=temp;
writeln('hasil : ',tahun,' tahun ',bulan,' bulan ',hari,' hari');
end
{jika input hari <365 jadi tidak ada 1 tahun}
else begin
tahun := 0; {tahun sudah pasti 0}
temp:=hari;
repeat {mencari bulan}
inc(bulan);
temp:=temp-30;
until temp<30;
hari:=temp;
writeln('hasil : ',tahun,' tahun ',bulan,' bulan ',hari,' hari');
end;
end.
Program ini masih paaannjjjaannng ya... nah bisa di sederhanakan hanya dengan mod dan div lo... monggo dicoba ...
Input : Masukkan kata : ariawan
Output : Diurutkan jadi : aaainrw
Program uruthuruf;
uses crt;
{variabel yang digunakan}
var kata:string; temp:char;
i,j:byte;
begin
clrscr;
write('Masukkan kata : '); readln(kata);
{proses pengurutan dengan membandingkan}
for i:= 1 to length(kata) do begin
for j:= i+1 to length(kata) do begin
if ord(kata[i])>ord(kata[j]) then begin
temp:=kata[i];
kata[i]:=kata[j];
kata[j]:=temp;
end;
end;
end;
{menampilkan hasil pengurutan}
write('Diurutkan jadi : ');
for i:=1 to length(kata) do write(kata[i]);
writeln;
end.
Berikut ini adalah soal program yang diambil dari toki, tentang bukit dan lembah. Diberikan data ketinggian yang di catat dalam perjalanan dari suatu posisi awal ke posisi akhir. Data ketinggian adalah bilangan-bilangan integer (bulat) positif. Jalan kadang menaik, kadang menurun, kadang datar saja. Posisi dimana terjadi perubahan menaik kemudian menurun (boleh diselingi jalan datar) didefinisikan sebagai puncak
dari suatu bukit. Sebaliknya, posisi terjadi perubahan dari menurun terus menaik (boleh diselingi bagian jalan yang datar) didefinisikan sebagai titik terbawah suatu lembah. Walaupun perubahan tersebut kecil saja, definisi itu tetap berlaku. Carilah beda ketinggian terbesar antara puncak bukit dengan titik terbawah lembah berikutnya atau sebaliknya antara titik terbawah lembah dengan puncak bukit berikutnya pada data perjalanan tersebut.
Contoh: input data : 9
data : 3 4 7 2 1 5 10 7 3
maka selisih dari 3 ke 7 : 4
selisih dari 7 ke 1 : 6
selisih dari 1 ke 10 : 9
selisih dari 10 ke 3 : 7
maka maksimum selisih adalah 9
dan minimum selisih adalah 4
Program dibawah ini sangat paaaannnnjjjjjaaannngg... soalnya saya membuatnya sambil menguji coba :p
program lbhpck;
uses crt;
var titik,top,bottom,tempt,tempb,deret,datab,selisih:array[1..100]of byte;
data,i,j,k,t,a,b,m,max,min:byte;
begin
clrscr;
{memasukkan jumlah data}
write('masukkan data: '); readln(data);
j:=1; k:=1;
{memasukkan data sambil mendeteksi puncak dan lembah}
for i:=1 to data do begin
readln(titik[i]);
if i>1 then begin
if titik[i]>titik[i-1] then begin
top[j]:=i; inc(k);
end else begin
bottom[k]:=i; inc(j);
end;
end;
end;
{data ke-.. dari puncak dan lembah}
t:=1;
for i:=1 to j do begin
if top[i] <> 0 then begin
tempt[t]:=top[i]; inc(t);
end;
end;
a:=t-1;
for i:=1 to a do begin
writeln('puncak ke ',i,' : ',tempt[i]);
end;
t:=1;
for i:=1 to k do begin
if bottom[i] <> 0 then begin
tempb[t]:=bottom[i]; inc(t);
end;
end;
b:=t-1;
for i:=1 to b do begin
writeln('puncak ke ',i,' : ',tempb[i]);
end;
{memunculkan deret puncak dan lembah}
if (a>b) or (a=b) then m:=a else m:=b;
deret[1]:=1; i:=1; j:=2;
repeat
if (tempt[i]<>0) and (tempb[i]<>0) then begin
deret[j]:=tempt[i];
deret[j+1]:=tempb[i];
j:=j+2; inc(i);
end else if tempt[i]=0 then begin
deret[j]:=tempb[i];
inc(j);inc(i);
end else begin
deret[j]:=tempt[i];
inc(j);inc(i);
end;
until i>m;
for i:=1 to (a+b+1) do writeln('isi deret ke-',i,' : ',deret[i]);
{memunculkan deret angka lembah dan puncak}
for i:=1 to (a+b) do begin
for j:= i+1 to (a+b+1) do begin
if deret[i]>deret[j] then begin
k:=deret[i];
deret[i]:=deret[j];
deret[j]:=k;
end;
end;
end;
for i:=1 to (a+b+1) do begin
k:=deret[i];
datab[i]:=titik[k];
end;
for i:=1 to (a+b+1) do
writeln('data puncak lembah ke-',i,' : ',datab[i]);
{selisih}
for i:=1 to (a+b) do begin
selisih[i]:=abs(datab[i]-datab[i+1]);
writeln('selisih ke-',i,' : ',selisih[i]);
end;
{mencari maksimum dan minimum}
max:=1; min:=selisih[1];
for i:=1 to (a+b) do begin
if selisih[i]>max then max:=selisih[i];
if selisih[i]<min then min:=selisih[i];
end;
writeln('jarak maksimum dan minimum : ',max,' ; ',min);
end.
Monggo diringkas supaya lebih enak dibaca dan dijalankan...
Karena postingannya sudah puaaannnjjjjaaannngg... maka saya potong disini, dan lanjut ke halaman berikutnya ya...
0 komentar:
Posting Komentar
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.