Anda di halaman 1dari 20

Kumpulan Soal Dasar-Dasar

Algoritma Dan Pemrograman

Last update: 04 November 2010

51 soal

http://awanrimbawan.wordpress.com

DISCLAIMER

http://awanrimbawan.wordpress.com 04Nov2010
Page 1
- For educational purpose only
- Compiler menggunakan Dev C++ 4.9.9.2
- Mari berbagi,jika menemukan kesalahan tentang
algoritma atau source code, silahkan hubungi
awanrmb@gmail.com.
- Semoga bisa membantu kita untuk belajar algoritma dan
pemrograman 

1. Soal: Lama Bekerja

http://awanrimbawan.wordpress.com 04Nov2010
Page 2
Tulis program untuk menentukan lama bekerja seorang pegawai, jika jam
masuk dan jam pulang diinput. Catatan: jam berupa angka 1-12, dan
seorang pegawai bekerja kurang dari 12 jam.

Contoh Masukan dan keluaran:

Jam Jam Keluaran/


mas keluar tampilan
uk

10 11 Lama bekerja 1
jam

10 2 Lama bekerja 4
jam

10 7 Lama bekerja 9
jam

Algoritma:
Algoritma Lama_Bekerja
{jam berupa angka 1-12, dan seorang pegawai bekerja kurang
dari 12 jam}

KAMUS DATA
iMasuk, iKeluar, iLama: Integer

BEGIN
Input(iMasuk)
Input(iKeluar)

If (iKeluar >= iMasuk) Then


iLama  iKeluar - iMasuk
Else
iLama  (12-iMasuk) + iKeluar
end if

Output(iLama)
END

http://awanrimbawan.wordpress.com 04Nov2010
Page 3
Program:
#include <stdio.h>
#include <stdlib.h>

/*Tulis procgram untuk menentukan lama bekerja seorang


pegawai, jika jam masuk dan jam pulang diinput.
Catatan: jam berupa angka 1-12, dan seorang pegawai bekerja
kurang dari 12 jam.
asumsi jam yang dimasukkan adalah tepat (tidak memasukkan
menit)
*/

int main()
{ int iMasuk, iKeluar, iLama;

printf("Menentukan lama bekerja\n\n");


printf(" Jam Masuk : ");
scanf("%d",&iMasuk);

printf(" \nJam Keluar : ");


scanf("%d",&iKeluar);

if (iKeluar >= iMasuk)


iLama = iKeluar - iMasuk;
else
iLama = (12-iMasuk) + iKeluar;

printf("\n\n Lama bekerja adalah : %d Jam\n", iLama);

system("PAUSE");
return 0;
}

2. Soal: Biaya Parkir


Tulis program untuk menentukan biaya parkir yang dihitung berdasarkan
lama parkir. Lama parkir dihitung dari selisih jam masuk dan jam keluar
diinput. Biaya parkir 2 jam pertama 2000, perjam berikutnya 500.

Contoh Masukan dan keluaran:

Jam Jam keluar Lama keluaran/


masuk tampilan

10 11 1 Biaya = 2000

10 2 4 Biaya = 3000

http://awanrimbawan.wordpress.com 04Nov2010
Page 4
Algoritma:
Algoritma Biaya_Parkir
{menghitung biaya parkir}

KAMUS DATA
iMasuk, iKeluar, iLama, iBiaya: Integer

BEGIN
Input(iMasuk)
Input(iKeluar)

If (iKeluar >= iMasuk) Then


iLama  iKeluar - iMasuk
Else
iLama  (12-iMasuk) + iKeluar
End If

If (iLama > 2) Then


iBiaya  2000 + ((iLama - 2)*500)
else
iBiaya  2000

Output(iBiaya)
END

#include <stdio.h>
#include <stdlib.h>

int main()
{ int iMasuk, iKeluar, iLama;
long int iBiaya;

printf("Menghitung Biaya Parkir\n\n");


printf(" Jam Masuk : ");
scanf("%d",&iMasuk);

printf(" \nJam Keluar : ");


scanf("%d",&iKeluar);

if (iKeluar >= iMasuk)


iLama = iKeluar - iMasuk;
else
iLama = (12-iMasuk) + iKeluar;

if (iLama > 2)
iBiaya = 2000 + ((iLama - 2)*500);
else
iBiaya = 2000;

printf("\n\n Biaya parkir adalah : Rp %d \n", iBiaya);


Program:
system("PAUSE");
return 0;
http://awanrimbawan.wordpress.com 04Nov2010
P a g e 5}
3. Soal: Penggabungan Resistor
Algoritma
Tulis program Menghitung_Resistor
untuk menghitung resistor pengganti dari 3 buah resistor
yang disusun secara seri atau paralel. Rumus untuk resistor pengganti
KAMUS DATA
sbb:
iPilihan: Integer
Seri: Rgab
fR1, fR2, fR3, = R1 + R2 + R3
fResPengganti: Float
Paralel: 1/Rgab = 1/R1 + 1/R2 + 1/R3
BEGIN
Besar R1, R2 dan R3 serta jenis penyusunan (seri/paralel) diinput oleh
user.Input(fR1,fR2,fR3)
Input(iPilihan)

Case iPilihan
1: fResPengganti  fR1+ fR2+ fR3
2: fResPengganti  (1.0/fR1)+ (1.0/fR2)+ (1.0/fR3)
fResPengganti  1.0/fResPengganti
Otherwise: output(“pilihan salah”)
Algoritma:
End Case

http://awanrimbawan.wordpress.com
Output(fResPengganti) 04Nov2010
Page 6
END
#include <stdio.h>
#include <stdlib.h>

/*Resistor Pengganti. Modul Praktikum Poltek. hal 27*/

int main()
{ int iPilihan;
float fR1, fR2, fR3;
float fResPengganti;

printf("Menghitung Resistor Pengganti");


printf("\n\nMasukkan Nilai R1: ");
scanf("%f",&fR1);
printf("\nMasukkan Nilai R2: ");
scanf("%f",&fR2);
printf("\nMasukkan Nilai R3: ");
scanf("%f",&fR3);

printf(" \n\nPenyusunan Resistor: ");


printf("\n 1.Seri");
printf("\n 2.Paralel");
printf("\nMasukkan pilihan penyusunan (1 atau 2): ");
scanf("%d",&iPilihan);

switch (iPilihan)
{ case 1:
fResPengganti = fR1+ fR2+ fR3;
break;
case 2:
fResPengganti = (1.0/fR1)+ (1.0/fR2)+ (1.0/fR3);
fResPengganti = 1.0/fResPengganti;
break;
default:
printf("inputan salah");
}

printf("\n\nBesar resistor pengganti adalah : %.2f \n",


Program:
fResPengganti);

system("PAUSE");
return 0;
http://awanrimbawan.wordpress.com
} 04Nov2010
Page 7
4. Soal: Harga barang
Buatlah program untuk menyelesaikan masalah berikut :
Program akan menerima masukan berupa kode, jenis dan harga, dengan
jenis adalah "A", "B", dan "C". Untuk setiap jenis, masing-masing akan
diberikan diskon sebesar 10% untuk A, 15% untuk B, dan 20% untuk C.

http://awanrimbawan.wordpress.com 04Nov2010
Page 8
Program akan menghitung berapa harga setelah didiskon.
Contoh masukan :
Jenis = B
kode = 10
harga = 10000
Contoh keluaran :
Jenis barang B mendapat diskon = 15%, Harga setelah didiskon = 8500

Algoritma:
Algoritma Menghitung_Barang
#include <stdio.h>
KAMUS DATA
#include <stdlib.h>
iKode,iHarga:integer
#include <conio.h>
cJenis: character
int main()
BEGIN
{ int iKode,iDiskon;
Input(cJenis)
char cJenis;
Input(iKode)
long int iHarga, iHDiskon;
Input(iHarga)
printf(" Jenis : ");
Case(cJenis)
scanf("%c",&cJenis);
'A': iHDiskon  0,9 * iHarga
'B': iHDiskon  0,85 * iHarga
printf(" Kode : ");
'C': iHDiskon  0,8 * iHarga
scanf("%d",&iKode);
End Case
printf(" Harga : ");
output(iHDiskon)
scanf("%d",&iHarga);
END
switch (cJenis)
{ case 'A':
iDiskon=10;
iHDiskon = 0.9 * iHarga;
break;
case 'B':
iDiskon=15;
iHDiskon = 0.85 * iHarga;
break;
case 'C':
iDiskon=20;
iHDiskon = 0.8 * iHarga;
break;
default:
printf("inputan salah");
}

Program:
printf("\n\n Jenis barang %c mendapat diskon %d %%, Harga
setelah didiskon : Rp %d \n", cJenis, iDiskon, iHDiskon);

system("PAUSE");
return 0;
}
http://awanrimbawan.wordpress.com 04Nov2010
Page 9
5. Soal: Gaji karyawan mingguan
Sebuah perusahaan swasta menggaji karyawannya secara mingguan
dengan hitungan sebagai berikut :

golongan 1 dengan upah per jam 3.000 rupiah

http://awanrimbawan.wordpress.com 04Nov2010
P a g e 10
golongan 2 dengan upah per jam 3.500 rupiah
golongan 3 dengan upah per jam 4.000 rupiah
golongan 4 dengan upah per jam 5.000 rupiah

Bila seorang karyawan bekerja kurang atau sama dengan 40 jam per
minggu, akan dihitung dengan upah per jam seperti di atas, tetapi apabila
bekerja lebih dari 40 jam, maka lebihnya akan dihitung sebagai lembur
dengan upah per jam 1½ kali upah biasa.
Tulis algoritma untuk menghitung gaji mingguan karyawan, bila golongan
dan jam kerja diinput dari keyboard.

Algoritma:
#include
Algoritma<stdio.h>
Menghitung_Gaji
#include <stdlib.h>
#include <conio.h>
KAMUS DATA
iGol, iJam, iUpah, iGaji : Integer
int main()
{ int iGol,iJam, iUpah;
BEGIN
int iGaji;
Input(iGol)
iUpah=0;
Input(iJam)
printf("
iUpah Jumlah
0 Jam Kerja : ");
scanf("%d",&iJam);
Case(iGol)
printf(" Golongan(1,2,3,4)
1: iUpah  3000 : ");
scanf("%d",&iGol);
2: iUpah  3500
3: iUpah  4000
switch (iGol)  5000
4: iUpah
{ case
End case 1:
iUpah=3000;
If (iJambreak;
> 40) Then
case 2: 40 * iUpah + ((iJam - 40) * 1.5 * iUpah)
iGaji
Else iUpah=3500;
break;
iGaji  iJam * iUpah
End if 3:
case
iUpah=4000;
break;
Output(iGaji)
case 4:
END iUpah=5000;
break;
default:
printf("inputan golongan salah");
}

if (iJam > 40)


iGaji = 40 * iUpah + ((iJam - 40) * 1.5 * iUpah);
else
Program:
iGaji = iJam * iUpah;

printf("\n\n Gaji : Rp %d \n", iGaji);

system("PAUSE");
return 0;
http://awanrimbawan.wordpress.com 04Nov2010
}
P a g e 11
6. Soal: Menghitung selisih waktu dalam jam dan
menit
Buat program menghitung selisih waktu (dalam jam dan menit)
berdasarkan jam mulai (jam,menit) dengan jam selesai (jam,menit). Data
yang diinput adalah jam dan menit mulai, jam dan menit selesai.

http://awanrimbawan.wordpress.com 04Nov2010
P a g e 12
Contoh Masukan dan Keluaran:

Mulai Selesai Lama Lama


(jam,menit) (jam,menit) (menit) (jam,menit
)

10:30 12:10 100 1 jam 40


menit

10:30 1:40 130 3 jam 10


menit

Algoritma:
ALGORITMA MENGHITUNG_JAM_MENIT

KAMUS DATA
iJamStart,iMenitStart,iMenitStop,iJamStop: integer
iTotMenit1,iTotMenit2,iSelangMenit,iJamDurasi,iMenitDurasi:
integer

BEGIN
Input(iJamStart)
#include <stdio.h>
Input(iMenitStart)
#include <stdlib.h>
#include <conio.h>
Input(iJamStop)
Input(iMenitStop)
int main()
{ int iJamStart,iMenitStart,iJamStop,iMenitStop,iSelangMenit,
iTotMenit1  iJamStart * 60 + iMenitStart
iJamDurasi, iMenitDurasi ;
iTotMenit2  iJamStop * 60 + iMenitStop
long int iTotMenit1, iTotMenit2;
If (iTotMenit2 >= iTotMenit1) Then
iSelangMenit  iTotMenit2 - iTotMenit1
printf(" Masukkan Waktu Mulai (contoh 10:05) : ");
Else
scanf("%d:%d",&iJamStart,&iMenitStart);
iSelangMenit  ((12*60)-iTotMenit1) + iTotMenit2
End if
printf(" Masukkan Waktu Berhenti (contoh 11:04) : ");
scanf("%d:%d",&iJamStop,&iMenitStop);
iJamDurasi  iSelangMenit div 60
iMenitDurasi  iSelangMenit mod 60;
iTotMenit1 = iJamStart * 60 + iMenitStart;
iTotMenit2 = iJamStop * 60 + iMenitStop;
Output(iJamDurasi)
Output(iMenitDurasi)
if (iTotMenit2 >= iTotMenit1)
iSelangMenit = iTotMenit2 - iTotMenit1;
END
else
iSelangMenit = ((12*60)-iTotMenit1)+iTotMenit2;
Program:
iJamDurasi = iSelangMenit / 60;
iMenitDurasi = iSelangMenit % 60;

printf("\n\n Durasi adalah %d Jam %d Menit\n", iJamDurasi,


iMenitDurasi);

system("PAUSE");
http://awanrimbawan.wordpress.com 04Nov2010
return 0;
P a g e 13
}
7. Soal: Kuadran dari koordinat titik
Buat program dengan masukan koordinat sebuah titik (x,y) dalam sebuah
system koordinat kartesian, kemudian ditentukan di kuadran mana titik
tersebut.

Contoh Masukan :
ALGORITMA Menghitung_Kuadran
Koordinat titik (x,y) : 10 -20
KAMUS DATA
Contoh keluaran:
ix, iy: Integer
Titik 10,-20 berada pada kuadran 4
BEGIN
Input(ix,iy)

If (ix >= 0)
Algoritma:
If (iy >=0)
Output(“Kuadran I”)
else
Output(“Kuadran IV”)
else
if (iy >=0)
Output(“Kuadran II”)
http://awanrimbawan.wordpress.com 04Nov2010
else
P a g e 14 Output(“Kuadran III”)
END
Program:
#include <stdio.h>
#include <stdlib.h>

int main()
{ int ix, iy;

printf(" Masukkan koordinat x,y : ");


scanf("%d,%d",&ix,&iy);

if (ix >= 0)
if (iy >=0)
printf("\nKuadran I\n");
else
printf("\nKuadran IV\n");
else
if (iy >=0)
printf("\nKuadran II\n");
else
printf("\nKuadran III\n");

system("PAUSE");
return 0;
}

8. Soal: Tunjangan Anak


Pemerintah hanya memberikan tunjangan anak dari PNS maksimal sampai
3 anak saja. Setiap anak diberikan tunjangan sebesar 10% dari gaji pokok.

Tulis program untuk menghitung total tunjangan anak, bila gaji pokok dan
jumlah anak diinput oleh user.

http://awanrimbawan.wordpress.com 04Nov2010
P a g e 15
Contoh Masukan dan Keluaran:

Jumla Gaji Pokok Tunjangan Anak


h
anak

0 1.000.000 0

1 1.000.000 100.000

3 1.000.000 300.000

5 1.000.000 300.000

Algoritma:
ALGORITMA Menghitung_Tunjangan

KAMUS DATA
iGajiPokok, iTunjangan, iJmlAnak: Integer

BEGIN

Input(iGajiPokok)
Input(iJmlAnak)

If (iJmlAnak <= 3 && iJmlAnak > 0) Then


iTunjangan  iJmlAnak * 0.1 * iGajiPokok
Else If (iJmlAnak > 3)
iTunjangan  3 * 0.1 * iGajiPokok
Else
iTunjangan  0
End
#include if <stdio.h>
#include <stdlib.h>
Output ( iTunjangan)
int main()
END
{ int iGajiPokok, iTunjangan, iJmlAnak;

printf(" Masukkan Gaji Pokok : ");


scanf("%d",&iGajiPokok);

printf(" Masukkan JmlAnak : ");


scanf("%d",&iJmlAnak);
Program:
if (iJmlAnak<=3 && iJmlAnak>0)
iTunjangan = iJmlAnak * 0.1 * iGajiPokok;
else if (iJmlAnak>3)
iTunjangan = 3 * 0.1 * iGajiPokok;
else
iTunjangan =0;

printf("\nTunjangan Anak adalah sebesar Rp.%d \n",


iTunjangan);
http://awanrimbawan.wordpress.com 04Nov2010
system("PAUSE");
P a g e 16 return 0;
}
9. Soal: Minibus pariwisata
Sebuah acara wisata digunakan minibus kapasitas 7 penumpang per
mobil. Apabila terjadi kelebihan penumpang (walaupun cuma 1), maka
minibus yang digunakan ditambah 1. Tulis program untuk menghitung
jumlah minibus yang diperlukan, bila jumlah pesertanya diinput.

Contoh Masukan dan Keluaran:

Jumlah Jumlah Minibus


Peserta

5 1

7 1
ALGORITMA Menghitung_Tunjangan
8 2
KAMUS DATA
iPeserta,iMinibus : Integer

BEGIN
Output(iPeserta)

iMinibus0
Algoritma:
If (iPeserta > 7) Then
iMinibus  iPeserta / 7
If (iPeserta % 7 != 0) Then
iMinibus  iMinibus + 1
End If
Else if (iPeserta > 0) Then
iMinibus  1
End if
http://awanrimbawan.wordpress.com
Output(iMinibus) 04Nov2010
P a g e 17
END
Program:
#include <stdio.h>
#include <stdlib.h>

int main()
{ int iPeserta,iMinibus;

printf(" Masukkan jml peserta : ");


scanf("%d",&iPeserta);

iMinibus=0;

if (iPeserta > 7){


iMinibus = iPeserta / 7;
if (iPeserta % 7 != 0)
iMinibus++;
}else if (iPeserta > 0)
iMinibus=1;

printf("Minibus yg diperlukan: %d\n",iMinibus);

system("PAUSE");
return 0;
10. } Soal: Menentukan N hari yang lalu tanpa
menginputkan Hari Ini
Diinput jumlah berapa hari yang lalu, kemudian ditentukan nama harinya.
Tulis program untuk menentukan nama hari dari sekian hari yang lalu
yang diinput. (Catatan, gunakan Hari ini = ‘Senin’)

Contoh Masukan dan Keluaran:

N hari yang lalu Nama Hari

http://awanrimbawan.wordpress.com 04Nov2010
P a g e 18
0 Senin

1 Minggu

10 Jumat

20 Selasa

Algoritma:
#include <stdio.h>
#include <stdlib.h>
#include
ALGORITMA<string.h>
Menentukan_Nama_Hari_1

int main()
KAMUS DATA
{ iNHari,iBelakang
int iNHari,iBelakang;
: Integer
char cNamaHari[15];
cNamaHari[15]: String

printf("Masukkan N Hari yg lalu : ");


BEGIN
scanf("%d",&iNHari);
Input(iNHari)

iBelakang =
 (iNHari+1) ;
( iNHari + 1)

switch (iBelakang){
Case (iBelakang)
case 1:
1: cNamaHari "Senin"
strcpy(cNamaHari,"Senin");
2: cNamaHari "Selasa"
break;
3: cNamaHari "Rabu"
case 2:
4: cNamaHari "Kamis"
strcpy(cNamaHari,"minggu");
5: cNamaHari "Jumat"
break;
6: cNamaHari "Sabtu"
case 3:
7: cNamaHari "Minggu"
strcpy(cNamaHari,"sabtu");
Otherwise: cNamaHari  "Inputan salah"
End Casebreak;
case 4:
strcpy(cNamaHari,"jumat");
Output(cNamaHari)
break;
END case 5:
strcpy(cNamaHari,"kamis");
break;
case 6:
strcpy(cNamaHari,"rabu");
break;
case 7:
strcpy(cNamaHari,"selasa");
break;
default:
Program:strcpy(cNamaHari,"Inputan salah");
}

printf("\n Sekarang Hari Senin. %d Hari yang lalu adalah hari


%s \n",iNHari,cNamaHari);

system("PAUSE");
return 0;
}
http://awanrimbawan.wordpress.com 04Nov2010
P a g e 19
11. Soal: Menentukan N hari yang lalu dengan
menginputkan Hari Ini
Diinput jumlah berapa hari yang lalu, kemudian ditentukan nama harinya.
Tulis program untuk menentukan nama hari dari sekian hari yang lalu dan
nomor hari ini yang diinput.

Contoh Masukan dan Keluaran:

N hari yang Hari ini Nama Hari

http://awanrimbawan.wordpress.com 04Nov2010
P a g e 20

Anda mungkin juga menyukai