RSS

Klub IT

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 ...

Saya mencoba membuat program yang mengaplikasikan pengurutan kecil ke besar, namun dalam urutan huruf. Inputnya berupa kata, kemudian kode ASCII masing-masing huruf dibandingkan dan diurutkan secara ascending. Contoh :
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...
| 1 | 2 | 3 |

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar

Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.