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
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.
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)
Output(iLama)
END
http://awanrimbawan.wordpress.com 04Nov2010
Page 3
Program:
#include <stdio.h>
#include <stdlib.h>
int main()
{ int iMasuk, iKeluar, iLama;
system("PAUSE");
return 0;
}
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)
Output(iBiaya)
END
#include <stdio.h>
#include <stdlib.h>
int main()
{ int iMasuk, iKeluar, iLama;
long int iBiaya;
if (iLama > 2)
iBiaya = 2000 + ((iLama - 2)*500);
else
iBiaya = 2000;
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>
int main()
{ int iPilihan;
float fR1, fR2, fR3;
float fResPengganti;
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");
}
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 :
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");
}
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:
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;
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;
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;
}
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:
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)
5 1
7 1
ALGORITMA Menghitung_Tunjangan
8 2
KAMUS DATA
iPeserta,iMinibus : Integer
BEGIN
Output(iPeserta)
iMinibus0
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;
iMinibus=0;
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’)
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
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");
}
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.
http://awanrimbawan.wordpress.com 04Nov2010
P a g e 20