Latihan
1. Buatlah flowchart dan translasi program dari
algoritma 3.2.b. di atas.
1. Algoritma
menentukan_bilangan_terbesar
{mencari bilangan terbesar dari 3 bilangan yang diinput}
Deklarasi
Integer a,b,c,terbesar;
Deskripsi
Write(“Masukkan Bilangan Pertama : ”);
Read(a);
Write(“Masukkan Bilangan Kedua : ”);
Read(b);
Write(“Masukkan Bilangan Ketiga : ”);
Read(c);
if (a>b) then
if (a>c)
then write(“Terbesar = ”,a);
else wrie(“Terbesar = ”,c);
endif
else if (b>c)
then write(“Terbesar = ”,b);
else write(“Terbesar = ”,c);
endif
endif
{mencari bilangan terbesar dari 3 bilangan yang diinput}
Deklarasi
Integer a,b,c,terbesar;
Deskripsi
Write(“Masukkan Bilangan Pertama : ”);
Read(a);
Write(“Masukkan Bilangan Kedua : ”);
Read(b);
Write(“Masukkan Bilangan Ketiga : ”);
Read(c);
if (a>b) then
if (a>c)
then write(“Terbesar = ”,a);
else wrie(“Terbesar = ”,c);
endif
else if (b>c)
then write(“Terbesar = ”,b);
else write(“Terbesar = ”,c);
endif
endif
using
namespace std;
class
Banding {
friend
istream& operator>>(istream&, Banding&);
public:
Banding()
{};
void
bandingkan() {
int
maks = x;
if
(y > maks) maks = y;
if (z
> maks) maks = z;
cout
<< "Bilangan terbesar : " << maks;
}
private:
int
x, y, z; };
istream&
operator>>(istream& in, Banding& bilangan){
cout
<< "Bilangan pertama = ";
in
>> bilangan.x;
cout
<< "Bilangan kedua = ";
in
>> bilangan.y;
cout
<< "Bilangan ketiga = ";
cin
>> bilangan.z;
return
in;
};
main()
{
Banding
bilangan;
cin
>> bilangan;
bilangan.bandingkan();
getch();
return
0;
}
2. Sempurnakan algoritma 3.3. dengan akar imajiner
berbentuk :
a + bi
dengan a dan b bilangan real dan bila
harga b2
4ac 0 .
Perhatikan bahwa nilai a dan b dihitung terpisah.
1.
Algoritma Menghitung akar-akar persamaan kuadrat
{Input: a,b,c,
mencari akar-akar persamaan kuadrat dan mencari akar-akar persamaan kuadrat}
Deklarasi:
a,b,c : integer{Input}
disk : longint{output}
x1,x2 : real{output}
Deskripsi:
read(a,b,c)
disk<--b*b-4a*c
if (a=0) then write('Bukan persamaan
kuadrat')
else if disk>0 then
x1<---(-b)+sqrt(disk)/2*a
x2<---(-b)-sqrt(disk)/2*a
else if disk=0 then
x1<---(-b)/2*a
x2<---x1
else write('Akar Imajiner')
end if
else if disk>0 then
x1<---(-b)+sqrt(disk)/2*a
x2<---(-b)-sqrt(disk)/2*a
else if disk=0 then
x1<---(-b)/2*a
x2<---x1
else write('Akar Imajiner')
end if
write(x1,x2)
using namespace std;
class persamaan{
public:
void
persamaan_kuadrat();
float rumus();
private:
int x,y,z;
float x1,x2;
float disk;
};
void persamaan::persamaan_kuadrat(){
cout<<"masukkan nilai A :";
cin>>x;
cout<<"masukkan nilai B :";
cin>>y;
cout<<"masukkan nilai C :";
cin>>z;
}
float persamaan::rumus(){
disk=y*y-4*x*z;
if (disk>0)
{
cout<<"Diskriminan="<<disk<<" Maka
akar-akarnya adalah:"<<endl;
x1=(-y+(sqrt(disk)))/(2*x);
cout<<"x1 :"<<x1;
cout<<endl;
x2=(-y-(sqrt(disk)))/(2*x);
cout<<"x2 :"<<x2;
}
else if(disk=0)
{
cout<<"Diskriminan="<<disk<<" Maka
akar-akarnya adalah:"<<endl;
x1=-y/2*x;
cout<<"x1 :"<<x1;
cout<<endl;
x2=x1;
cout<<"x2 :"<<x2;
}
else
cout<<"akar imajiner";
}
int main(int argc, char *argv[])
{
persamaan X;
X.persamaan_kuadrat();
X.rumus();
return 0;
}
3. Buatlah program dari algoritma 3.4. menggunakan
case … of .
1. Algoritma konversi nilai
{dibaca nilai angka kemudian di konversi ke nilai
huruf}
Deklarasi :
nilai
: integer
nilai_huruf : char
Deskripsi
read(nilai)
if
(nilai>0) and (nilai<=20) then nilai_huruf<- E
else if (nilai> 21) and (nilai<=40)then
nilai_huruf<- D
else if (nilai> 41) and
(nilai<=60)then nilai_huruf<- C
else if (nilai> 61) and
(nilai<=80)then nilai_huruf<- B
elsenilai_huruf<- A
end if
write(nilai_huruf)
using namespace std;
int main()
{
int NILAI;
system("clrscr");
cout<<"\n============================================\n";
cout<<"Kode
Range Nilai\n";
cout<<"\n============================================\n";
cout<<" 1
00-20\n";
cout<<" 2
21-40\n";
cout<<" 3 41-60\n";
cout<<" 4
61-80\n";
cout<<" 5
81-100\n";
cout<<"\n-------------------------------------------\n";
cout<<"Silahkan pilih kode dari nilai anda
=";cin>>NILAI;
switch(NILAI)
{
case 1: cout<<"E";
break;
case 2: cout<<"D";
break;
case 3: cout<<"C";
break;
case 4: cout<<"B";
break;
case 5: cout<<"A";
break;
default:
cout<<"Invalid";
break;
}
getch();
}
4. Buatlah algoritma, flowchart
dan program untuk mengecek apakah pemakai
memasukkan bilangan bulat atau bilangan
real.
Lebih dulu, carilah perbedaan dari 1.0 dan
1 kemudian 1 dan 1.23.
Perbedaan :
1.
Algoritma_menentukan_bil_bulat/bil_real
{menentukan bilangan bulat atau real dari input yang di masukan}
deklarasi
a =float
b = integer
bil = char
deskripsi
b=a
read(a)
if(a=b) then bil <-- 'adalah bil bulat'
else bil<-- 'adalah bi real'
endif
write(bil)
{menentukan bilangan bulat atau real dari input yang di masukan}
deklarasi
a =float
b = integer
bil = char
deskripsi
b=a
read(a)
if(a=b) then bil <-- 'adalah bil bulat'
else bil<-- 'adalah bi real'
endif
write(bil)
using namespace std;
int main()
{
int B;
float A;
cout <<" masukan bilangan"
<< endl;cin >> A;
B =A;
if (A==B) { cout <<
"BilanganBulat" << endl;
}
else {cout << "BilanganReal"
<< endl; }
system("PAUSE");
return 0;
}
5. Buatlah algoritma, flowchart
dan program untuk menentukan banyaknya hari
dalam suatu bulan dan tahun yang diberikan.
Pertimbangkan pula adanya tahun
kabisat di mana bulan Februari mempunyai
jumlah 29 hari. Gunakan case .. of
dan if .. then .. else .. yang tepat
untuk setiap kasus.
2. Algoritma
menentukan hari dalam satu bulan
{ input bulan dan tahun kemudian output jumlah hari dalam satu bulan
Deklarasi
AngkaBulan :
integer; { 1 . . 12
}
Tahun :
integer; { > 0 }
JumlahHari : integer;
Deskripsi
begin
write('Bulan (1-12) = ');
write('Tahun = ');
case AngkaBulan of
1, 3, 5, 7, 8, 10,
12 : JumlahHari:=31;
4, 6, 9,
11 :
JumlahHari:=30;
2
: if Tahun mod 4 = 0 then
JumlahHari:=29
else
JumlahHari:=28;
{endif}
end;
writeln('Jumlah hari dalam bulan ',AngkaBulan,' adalah ',JumlahHari);
end.
using namespace std;
int main()
{
int bulan, tahun, hari;
int jum_hari[12]=
{31,28,31,30,31,30,31,31,30,31,30,31};
char
b1[10],b2[10],b3[10],b4[10],b5[10],b6[10],b7[10],
b8[10],b9[10],b10[10],b11[10],b12[10];
cout<<"\t\t--------------------------------------------\n";
cout<<"\t\t>>MENENTUKAN
JUMLAH HARI DALAM SUATU BULAN<<\n";
cout<<"\t\t--------------------------------------------\n";
cout<<"\n";
cout<<"\t\tKeterangan\n";
cout<<"\t\t-------------------------------------------\n";
cout<<"\t\tBulan 1: Januari | Bulan 7 :Juli\n";
cout<<"\t\tBulan 2: Februari | Bulan 8 :Agustus\n";
cout<<"\t\tBulan 3: Maret | Bulan 9 :September\n";
cout<<"\t\tBulan 4: April | Bulan 10:Oktober\n";
cout<<"\t\tBulan 5: Mei | Bulan 11:November\n";
cout<<"\t\tBulan 6: Juni | Bulan 12:Desember\n";
cout<<"\t\t-------------------------------------------\n";
cout<<"\t\tMasukkan Bulan (1--12)
:";
cin>>bulan;
cout<<"\t\tMasukkan Tahun :";
cin>>tahun;
if(bulan==2)
{if(tahun &4==0)
hari=29;
else
hari=28;
}
else
hari=jum_hari[bulan-1];
cout<<"\t\t-------------------------------------------\n";
cout<<"\t\tJumlah hari dalam
bulan :";
cout<<bulan<<endl;
cout<<"\t\tPada tahun :";
cout<<tahun<<endl;
cout<<"\t\tDalam Satu Bulan
Terdapat :",
cout<<hari;
cout<<"hari\n";
cout<<endl;
system("pause");
return 0;
}
6. Buatlah algoritma, flowchart
dan program untuk mengecek apakah karakter yang
dimasukkan itu merupakan huruf besar, huruf kecil atau digit (bilangan).
Gunakan fungsi ORD(char) untuk menyatakan nomor urut dalam tabel ASCII.
Algoritma :
1.
Algoritma mengecek
karakter yang dimasukkan termasuk huruf kapital, huruf kecil atau digit
{input karakter kemudian di cek apakah huruf besar, kecil atau
digit}
Deklarasi
karakter :
string {input, output}
Deskripsi
Read(karakter)
if(karakter>=’A’
&& karakter<=’Z’) ß
Huruf kapital
else
if(karakter>=’a’ && karakter<=’z’) ß huruf kecil
else(karakter>=’0’
&& karakter<=’9’) ß
digit
endif
using namespace std;
class Karakter
{
private:
char karakter;
public:
void Proses ();
void Output ();
};
void Karakter::Proses()
{
cout<<"Masukkan Karakter =
";cin>>karakter;
};
void Karakter::Output(){
if (karakter >='A'
&& karakter <='Z')
cout<<"Huruf
Besar"<<endl;
else if (karakter >=
'a' && karakter <='z')
cout<<"Huruf
Kecil"<<endl;
else if (karakter >=
'0' && karakter <= '9')
cout<<"Digit
(Bilangan)"<<endl;
else
cout<<"Simbol"<<endl;
};
main ()
{
Karakter bilhur;
bilhur.Proses();
bilhur.Output();
getch ();
return 0;
}write(karakter )
7. Seorang dosen ingin
mengkonversikan nilai angka hasil ujian mahasiswa
menjadi nilai huruf dengan ketentuan :
Nilai antara Nilai Huruf
0-60 F
61-70 D
71-80 C
81-90 B
91-100 A
1. Algoritma konversi nilai
{dibaca nilai angka kemudian di konversi ke nilai
huruf}
Deklarasi :
nilai
: integer
nilai_huruf : char
Deskripsi
read(nilai)
if
(nilai>0) and (nilai<=60) then nilai_huruf<- E
else if (nilai> 61) and
(nilai<=70)then nilai_huruf<- D
else if (nilai> 71) and
(nilai<=80)then nilai_huruf<- C
else if (nilai> 81) and
(nilai<=90)then nilai_huruf<- B
elsenilai_huruf<- A
end if
write(nilai_huruf)
using namespace std;
class Nilai {
friend
ostream& operator<<(ostream&, Nilai&);
friend
istream& operator>>(istream&, Nilai&);
public:
Nilai()
{};
void
konversikan() {
if
((nilai > 0) && (nilai <= 60))
nilai_huruf
= 'F';
else
if ((nilai > 60) && (nilai <= 70))
nilai_huruf
= 'D';
else
if ((nilai > 70) && (nilai <= 80))
nilai_huruf
= 'C';
else
if ((nilai > 80) && (nilai <= 90))
nilai_huruf
= 'B';
else
nilai_huruf = 'A';
}
private:
int
nilai;
char
nilai_huruf;
};
istream&
operator>>(istream& in, Nilai& masukan) {
cout
<< "Masukkan nilai angka = ";
in
>> masukan.nilai;
return in;
};
ostream&
operator<<(ostream& out, Nilai& keluaran) {
out
<< "Nilai angka : " << keluaran.nilai << endl;
out
<< "Nilai huruf : " << keluaran.nilai_huruf;
return out;
}
int main() {
Nilai
angka;
cin
>> angka;
angka.konversikan();
cout
<< angka;
}
8. Diberikan ketentuan pecahan
uang di Indonesia. User memasukkan sebuah
bilangan, program harus dapat memecahnya
menjadi pecahan sesuai dengan
mata uang di Indonesia.
Misalkan dimasukkan nilai uang 127.675
rupiah. Cobalah memecah secara
manual nilai uang di atas.
1. Algoritma membaca
nilai bilangan dengan Pangkat
{Diberikan masukan x dan y, dihitung nilai dari x pangkat y}
Deklarasi
Deklarasi
x, y, i : integer { input }
pangkat : integer { output }
Deskripsi
Deskripsi
read (x,y)
pangkat ß 1
for i ß 1
to y do
pangkat ß pangkat * x
enfor
write
(pangkat)
using namespace std;
void first (int n) {
switch (n) {
case 1: cout << "satu ";
break;
case 2: cout << "dua ";
break;
case 3: cout << "tiga ";
break;
case 4: cout << "empat ";
break;
case 5: cout << "lima ";
break;
case 6: cout << "enam ";
break;
case 7: cout << "tujuh ";
break;
case 8: cout << "delapan
"; break;
case 9: cout << "sembilan
"; break;
case 10: cout << "sepuluh
"; break;
case 11: cout << "sebelas
"; break;
default: break;
}}
void second (int n) {
int bul, sisa;
bul = n / 10;
sisa = n % 10;
if (bul == 0)
first (sisa);
else if (bul == 1) {
if (sisa <= 1)
first (n);
else {
first (sisa);
cout << "belas
";
}}
else {
first (bul);
cout << "puluh ";
first (sisa);
}}
void third (int n) {
int bul, sisa;
bul = n / 100;
sisa = n % 100;
if (bul == 0)
second (sisa);
else if (bul == 1) {
if (sisa == 0)
cout << "seratus
";
else {
cout << "seratus
";
second (sisa);
}}
else {
first (bul);
cout << "ratus ";
second (sisa);
}
}
void fourth (int n) {
int bul, sisa;
bul = n / 1000;
sisa = n % 1000;
if (bul == 0)
third (sisa);
else if (bul == 1) {
if (sisa == 0)
cout << "seribu
";
else {
cout << "seribu
";
third (sisa);
}}
else {
third (bul);
cout << "ribu ";
third (sisa);
}}
void fifth (int n) {
int bul, sisa;
bul = n / 1000000;
sisa = n % 1000000;
if (bul == 0)
fourth (sisa);
else if (bul == 1) {
if (sisa == 0)
cout << "satu juta
";
else {
cout << "satu juta
";
fourth (sisa);
}}
else {
third (bul);
cout << "juta ";
fourth (sisa);
}}
int main () {
int n = 1;
while (n == 1) {
int num1;
do {
cout << "";
cin >> num1;
} while (num1 < 1);
fifth (num1);
cout << "\n";
}}
9. Seorang pegawai bekerja selama
5 hari kerja, yaitu Senin sampai Jum’at. Setiap
hari dia masuk jam 08.00 dan pulang jam
16.00. Kecuali Jum’at dia pulang jam
11.00. Apabila dia bekerja lebih dari 30
jam per bulan maka setiap 5 jam akan
memperoleh uang lembur sebesar Rp 30.000,-
bila kurang dari 5 jam maka akan
dihitung Rp 4.000,-/jam. Buat program
dengan masukan bulan yang diinginkan,
dan outputnya berupa besarnya uang lembur
pegawai tersebut.
Perhitungan secara manual :
1.
Algoritma menghitung
Gaji Pegawai
Deklarasi
NIK, Nama : String
Jhk, tunj.jabatan, tunj.makan, tunj.transport,
gaji_kotor, pajak, gaji_bersih : Real
Deskripsi
READ (NIK, Nama, gaji_pokok, tunj.jabatan, Jhk)
tunj.makan = 10000 * Jhk
tunj.transport = 5000 * Jhk
gaji_kotor = (gaji_pokok + tunj.jabatan +
tunj.makan + tunj.transport)
pajak = 0.1 * gaji_kotor
gaji_bersih = (gaji_kotor – pajak)
write (tunj.makan,
tunj.transport, gaji_kotor, pajak, gaji_bersih)
end
using namespace std;
main()
{
//input
char nama_kar [20], pendidikan[5];
float tunjangan, total;
double gaji, jam_kerja, tot_kerja,
uang_lembur, jam_lembur, kode;
system("clrscr");
cout<<"Program untuk menghitung
gaji karyawan kontrak"<<endl;
cout<<"PT. Master
SSD"<<endl;
cout<<"======================================="<<endl<<endl;
cout<<"Masukan nama karyawan:
";
gets(nama_kar);
cout<<"Masukan kode pendidikan
karyawan [1/2/3]: ";
cin>>kode;
cout<<"Masukan jumlah jam kerja:
";
cin>>tot_kerja;
//proses
if (kode==1)
{strcpy (pendidikan,"SMU adalah sebesar:
Rp. ");
tunjangan=800000*2.5/100;}
else if (kode==2)
{strcpy(pendidikan,"D3 adalah sebesar:
Rp. ");
tunjangan=800000*5/100;}
else
{strcpy(pendidikan,"S1 adalah sebesar:
Rp. ");
tunjangan=800000*7.5/100;}
gaji=800000;
//Total jam kerja per bulan adalah 192 jam.
/*Minimal memasukan jam kerja 192 jam, karena
dibawah itu
akan menyebabkan nilai lembur menjadi minus
dan akan mempengaruhi nilai total honor yang
diterima.*/
jam_kerja=8*6*4;
jam_lembur=tot_kerja-jam_kerja;
uang_lembur=jam_lembur*2500;
total=uang_lembur+gaji+tunjangan;
//output
cout<<""<<endl<<endl;
cout<<"Karyawan yang bernama:
"<<nama_kar<<endl;
cout<<"Honor yang diterima sebagai
berikut:"<<endl<<endl;
cout<<"Honor tetap Rp.
"<<gaji<<endl;
cout<<"Tunjangan pendidikan
"<<pendidikan<<tunjangan<<endl;
cout<<"Jumlah lembur:
"<<jam_lembur;
cout<<" jam x 2500 adalah sebesar
Rp. "<<uang_lembur<<endl<<endl;
cout<<"Total honor yang diterima
Rp."<<total<<endl;
getch();
}
EmoticonEmoticon