August 13, 2017 | Author: akandimazu | Category: N/A
Download Kumpulan Soal Dan Jawaban Algoritma Dan Pemrograman (2)...
Kumpulan Soal Dasar-Dasar Algoritma Dan Pemrograman Last update: 04 November 2010 51 soal http://awanrimbawan.wordpress.com
DISCLAIMER http://awanrimbawan.wordpress.com Page 1
04Nov2010
- For educational purpose only -
Compiler menggunakan Dev C++ 4.9.9.2
-
Mari berbagi,jika menemukan kesalahan tentang algoritma atau source code, silahkan hubungi
[email protected].
-
Semoga bisa membantu kita untuk belajar algoritma dan pemrograman
1.
Soal: Lama Bekerja
http://awanrimbawan.wordpress.com Page 2
04Nov2010
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 mas uk
Jam keluar
Keluaran/tampila n
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 Page 3
04Nov2010
Program: #include #include /*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 masuk
Jam keluar
Lama
keluaran/tamp ilan
10
11
1
Biaya = 2000
10
2
4
Biaya = 3000
http://awanrimbawan.wordpress.com Page 4
04Nov2010
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 #include 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 P a g e 5}
04Nov2010
3.
Soal: Penggabungan Resistor Tulis program untuk menghitung resistor pengganti dari 3 buah resistor Algoritma Menghitung_Resistor yang disusun secara seri atau paralel. Rumus untuk resistor pengganti sbb: KAMUS DATA iPilihan: Integer Seri: Rgab = R1 + R2 + R3 fR1, fR2, fR3, 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) Page 6 END
04Nov2010
#include #include /*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 } Page 7
04Nov2010
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 Page 8
04Nov2010
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 KAMUS DATA #include iKode,iHarga:integer #include 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': Kode iHDiskon printf(" : "); 0,85 * iHarga '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 Page 9
04Nov2010
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 golongan 2 dengan upah per jam 3.500 rupiah
http://awanrimbawan.wordpress.com P a g e 10
04Nov2010
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: Algoritma Menghitung_Gaji #include #include KAMUS DATA #include iGol, iJam, iUpah, iGaji : Integer int main() BEGIN { int iGol,iJam, iUpah; int iGaji; Input(iGol) Input(iJam) iUpah=0; iUpah 0 printf(" Jumlah Jam Kerja : "); scanf("%d",&iJam); Case(iGol) 1: iUpah 3000 printf(" Golongan(1,2,3,4) : "); 2: iUpah 3500 scanf("%d",&iGol); 3: iUpah 4000 4: iUpah switch (iGol) 5000 End case { case 1: iUpah=3000; If (iJam > 40) Then break; iGaji case 2: 40 * iUpah + ((iJam - 40) * 1.5 * iUpah) Else iUpah=3500; iGaji iJam * iUpah break; End if 3: case iUpah=4000; Output(iGaji) break; case 4: END iUpah=5000; break; default: printf("inputan golongan salah"); } if (iJam > 40) iGaji = 40 * iUpah + ((iJam - 40) * 1.5 * iUpah); Program: else iGaji = iJam * iUpah; printf("\n\n Gaji : Rp %d \n", iGaji); system("PAUSE"); return 0; http://awanrimbawan.wordpress.com } P a g e 11
04Nov2010
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. Contoh Masukan dan Keluaran:
http://awanrimbawan.wordpress.com P a g e 12
04Nov2010
Mulai (jam,menit)
Selesai (jam,menit)
Lama (menit)
Lama (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) Input(iMenitStart) #include Input(iJamStop) #include Input(iMenitStop) #include iJamStart * 60 + iMenitStart intiTotMenit1 main() iTotMenit2 iJamStop * 60 + iMenitStop { int iJamStart,iMenitStart,iJamStop,iMenitStop,iSelangMenit, iJamDurasi, iMenitDurasi ; If (iTotMenit2 >= iTotMenit1) Then iTotMenit2 longiSelangMenit int iTotMenit1, iTotMenit2;- iTotMenit1 Else iSelangMenit ((12*60)-iTotMenit1) + iTotMenit2 printf(" MasukkanWaktu Mulai (contoh 10:05) : "); End if scanf("%d:%d",&iJamStart,&iMenitStart); printf(" Masukkan iJamDurasi iSelangMenit Waktu Berhenti div 60 (contoh 11:04) : "); scanf("%d:%d",&iJamStop,&iMenitStop); iMenitDurasi iSelangMenit mod 60; iTotMenit1 = iJamStart * 60 + iMenitStart; Output(iJamDurasi) iTotMenit2 = iJamStop * 60 + iMenitStop; Output(iMenitDurasi) if (iTotMenit2 >= iTotMenit1) END iSelangMenit = iTotMenit2 - iTotMenit1; Program: else iSelangMenit = ((12*60)-iTotMenit1)+iTotMenit2; iJamDurasi = iSelangMenit / 60; iMenitDurasi = iSelangMenit % 60; printf("\n\n Durasi adalah %d Jam %d Menit\n", iJamDurasi, iMenitDurasi); system("PAUSE"); http://awanrimbawan.wordpress.com return 0; P a g e 13 }
04Nov2010
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 : Koordinat titik (x,y) : 10 -20 Contoh keluaran: Titik 10,-20 berada pada kuadran 4 ALGORITMA Menghitung_Kuadran KAMUS DATA ix, iy: Integer
Algoritma: BEGIN Input(ix,iy) If (ix >= 0) If (iy >=0) Output(“Kuadran I”) else Output(“Kuadran IV”) else if (iy >=0) Output(“Kuadran II”) http://awanrimbawan.wordpress.com else P a g e 14 Output(“Kuadran III”) END
04Nov2010
Program: #include #include int main() { int ix, iy; printf(" Masukkan koordinat x,y : "); scanf("%d,%d",&ix,&iy); if (ix >= 0) if (iy >=0) printf("\nKuadran else printf("\nKuadran else if (iy >=0) printf("\nKuadran else printf("\nKuadran
I\n"); IV\n"); II\n"); 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. Contoh Masukan dan Keluaran: Jumla
Gaji Pokok
Tunjangan Anak
http://awanrimbawan.wordpress.com P a g e 15
04Nov2010
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 0) Then iTunjangan iJmlAnak * 0.1 * iGajiPokok Else If (iJmlAnak > 3) iTunjangan 3 * 0.1 * iGajiPokok Else iTunjangan 0 End if Output ( iTunjangan) #include END #include int main() { int iGajiPokok, iTunjangan, iJmlAnak; printf(" Masukkan Gaji Pokok : "); scanf("%d",&iGajiPokok);
Program:
printf(" Masukkan JmlAnak : "); scanf("%d",&iJmlAnak); if (iJmlAnak0) 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 system("PAUSE"); P a g e 16 return 0; }
04Nov2010
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 Peserta
Jumlah Minibus
5
1
7
1
8
2
ALGORITMA Menghitung_Tunjangan KAMUS DATA iPeserta,iMinibus : Integer
Algoritma: BEGIN Output(iPeserta) iMinibus0 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) P a g e 17 END
04Nov2010
Program: #include #include 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
0
Senin
1
Minggu
http://awanrimbawan.wordpress.com P a g e 18
04Nov2010
10
Jumat
20
Selasa
Algoritma: ALGORITMA Menentukan_Nama_Hari_1 KAMUS DATA iNHari,iBelakang #include : Integer cNamaHari[15]: String #include #include BEGIN intInput(iNHari) main() { int iNHari,iBelakang; iBelakang ( iNHari + 1) char cNamaHari[15]; Case (iBelakang) N Hari yg lalu : "); printf("Masukkan 1: cNamaHari "Senin" scanf("%d",&iNHari); 2: cNamaHari "Selasa" iBelakang = (iNHari+1) ; 3: cNamaHari "Rabu" 4: cNamaHari "Kamis" switch (iBelakang){ 5: cNamaHari "Jumat" case 1: 6: cNamaHari "Sabtu" strcpy(cNamaHari,"Senin"); 7: cNamaHari "Minggu" break; Otherwise: cNamaHari "Inputan salah" case 2: End Case strcpy(cNamaHari,"minggu"); break; Output(cNamaHari) case 3: strcpy(cNamaHari,"sabtu"); END break; case 4: strcpy(cNamaHari,"jumat"); break; case 5: strcpy(cNamaHari,"kamis"); break; case 6: Program: strcpy(cNamaHari,"rabu"); break; case 7: strcpy(cNamaHari,"selasa"); break; default: 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 P a g e 19
04Nov2010
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 lalu
Hari ini
Nama Hari
0
1
Senin
3
3
Minggu
5
4
Sabtu
http://awanrimbawan.wordpress.com P a g e 20
04Nov2010
Algoritma: ALGORITMA Menghitung_Hari KAMUS DATA iNHari,iHariIni,iBelakang : Integer #include cNamaHari[15] : String #include cNamaHariLalu: Char #include BEGIN int main() { Input(iHariIni) int iNHari,iHariIni,iBelakang; char cNamaHari[15],cNamaHariLalu; Input(iNHari) printf("Masukkan If (iHariIni>iNHari)Kode ThenHari ini : "); scanf("%d",&iHariIni); iBelakang iHariIni - iNHari Else printf("Masukkan Hari yg lalu : "); iBelakang 7 - N (iNHari - iHariIni) scanf("%d",&iNHari); End If if (iHariIni>iNHari) Case (iBelakang) iBelakang = iHariIni - iNHari; 1: cNamaHari "Senin" else 2: cNamaHari "Selasa" iBelakang= 7 - (iNHari - iHariIni); 3: cNamaHari "Rabu" 4: cNamaHari "Kamis" switch (iBelakang){ 5: cNamaHari "Jumat" case 1: strcpy(cNamaHari,"Senin"); 6: cNamaHari break; "Sabtu" 7: cNamaHari "Minggu" case 2:strcpy(cNamaHari,"Selasa"); End Case break; case 3:strcpy(cNamaHari,"Rabu"); Output(cNamaHari) break; END case 4: strcpy(cNamaHari,"Kamis"); break; case 5: strcpy(cNamaHari,"Jumat"); Program: break; case 6: strcpy(cNamaHari,"Sabtu"); break; case 7: strcpy(cNamaHari,"Minggu"); break; default: strcpy(cNamaHari,"Inputan salah"); } printf("\n %d Hari yang lalu adalah hari %s \n",iNHari,cNamaHari); system("PAUSE"); return 0; http://awanrimbawan.wordpress.com } P a g e 21
04Nov2010
12. Soal:
Penghitungan Pembayaran Listrik
PLN menerapkan pembayaran listrik perumahan dengan cara perhitungan sebagai berikut : - Untuk golongan 1 tarif : Rp 1000/kWh - Untuk golongan 2 tarif : Rp 2000/kWh Dengan syarat penghitungan: Minimum pembayaran adalah 100 kWh sedangkan untuk pemakaian 1000 kWh dan seterusnya tarifnya ditambah 10% dari total pembayaran. Golongan 1
Pemakai an 50
Bayar 100.000
http://awanrimbawan.wordpress.com P a g e 22
04Nov2010
2 1
150 1000
300.000 1.100.000
ALGORITMA Menghitung_Pembayaran_Listrik KAMUS DATA iGol,iPakai,iTarif,iBayar : Integer BEGIN Input(iGol) Input(iPakai) If ( iGol = 1) Then iTarif 1000 Else iTarif 2000 End If If (iPakai < 100) Then iBayar 100 * iTarif Else If ( iPakai >= 1000) iBayar iPakai * iTarif * 1.1 Else iBayar iPakai * iTarif End If Output(iBayar) END
SOURCE CODE: #include #include int main() { int iGol,iPakai,iTarif,iBayar; printf("masukkan golongan: ");scanf("%d",&iGol); printf("masukkan jam pemakaian: ");scanf("%d",&iPakai); if (iGol == 1 ) {iTarif=1000;} else http://awanrimbawan.wordpress.com P a g e 23
04Nov2010
{iTarif=2000;} if (iPakai < 100) {iBayar=100*iTarif;} else if (iPakai >= 1000) {iBayar=iPakai*iTarif*1.1;} else {iBayar=iPakai * iTarif;} printf("\n yg harus dibayarkan %d\n",iBayar); system("PAUSE"); return 0; }
13. Soal:
Penghitungan Bulan
Buatlah algoritma untuk menghitung bulan pernikahan dengan menginputkan bulan saat ini dan berapa bulan kedepan. Misal data: Bulan Saat Ini
N Bulan Kedepan
1 12 10
2 1 5
Bulan Pernikahan 3 1 3
ALGORITMA Menghitung_Bulan_Pernikahan KAMUS DATA iBlnSekarang, iNbulan, iBlnPernikahan : Integer BEGIN Input (iBlnSekarang) Input (iNBulan) If ( (iBlnSekarang + iNbulan)