jawaban
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Banding{
friend istream&operator>>(istream&,Banding&);
public:
Banding(){};
void bandingkan(){
if(A>B)
cout<<"Bilangan terbesar = "<<A;
else
cout<<"Bilangan terbesar = "<<B;
}
private:
int A,B;
};
istream& operator>>(istream&in, Banding& bilangan){
cout<<"Bilangan Pertama =";
in>>bilangan.A;
cout<<"Bilangan Kedua = ";
in>>bilangan.B;
return in;
};
int main(int argc, char** argv) {
Banding bilangan;
cin>>bilangan;
bilangan.bandingkan();
return 0;
}
output
Kasus 4.2. Tentukanlah bilangan terbesar antara 3 bilangan bulat.
jawaban
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Banding{
friend istream& operator>>(istream&,Banding&);
public:
Banding(){};
void bandingkan(){
if((x>y)&&(x>z))
cout<<"Bilangan terbesar = "<<x;
else if((y>x)&&(y>z))
cout<<"Bilangan terbesar = "<<y;
else
cout<<"Bilangan terbesar = "<<z;
}
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 = ";
in>>bilangan.z;
return in;
};
int main(int argc, char** argv) {
Banding bilangan;
cin>>bilangan;
bilangan.bandingkan();
return 0;
}
output
Kasus 4.3. Carilah akar-akar persamaan kuadrat
Jawab:
#include <iostream>
#include <math.h>#include <conio.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Akar{
friend ostream& operator<<(ostream&,Akar&);
friend istream& operator>>(istream&, Akar&);
public:
Akar();
int disk(){return B*B-4*A*C;}
float akar1(){return(-B+sqrt(disk()))/(2*A);}
float akar2(){return(-B-sqrt(disk()))/(2*A);}
void hitung_akar();
void cetak_disk(){cout<<"diskriminan = "<<disk()<<endl;}
void cetak_akar(){
cout<<"x1 = "<<akar1()<<endl;
cout<<"x2 = "<<akar2()<<endl;
}
private:
int A,B,C;
float x1,x2;
};
ostream& operator<<(ostream&out,Akar& keluaran){
keluaran.cetak_disk();
if(keluaran.disk()>=0)keluaran.cetak_akar();
else out<<"Akar imajiner";
return out;
}
istream& operator>>(istream&in,Akar& masukan){
cout<<"Koefisien pangkat 2 = ";in>>masukan.A;
cout<<"Koefisien pangkat 1 = ";in>>masukan.B;
cout<<"Koefisien pangkat 0 = ";in>>masukan.C;
return in;
}
Akar::Akar(){
cout<<"Menghitung akar persamaan kuadrat\n";
}
void Akar::hitung_akar(){
if(A==0){
cout<<"Bukan pers.kuadrat.\n";
cout<<"Harga akar = "<<-C/B;
}else{
if(disk()>0){
x1=akar1();
x2=akar2();
}else if(disk()==0){
x1=akar1();
x2=x1;
}
}
}
int main(int argc, char** argv) {
Akar kasus;
cin>>kasus;
kasus.hitung_akar();
cout<<kasus;
return 0;
}
output
Kasus 4.4. Konversikan nilai angka menjadi nilai huruf dengan ketentuan sebagai berikut :
Jawab:
#include <iostream>
using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Nilai{
friend ostream&operator<<(ostream&,Nilai&);
friend istream&operator>>(istream&,Nilai&);
public:
Nilai(){};
void konversikan(){
if((nilai>0)&&(nilai<=20))
nilai_huruf='E';
else if ((nilai>20)&&(nilai<=40))
nilai_huruf='D';
else if((nilai>40)&&(nilai<=60))
nilai_huruf='C';
else if((nilai>60)&&(nilai<=80))
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;
}
int main(int argc, char** argv) {
Nilai angka;
cin>>angka;
angka.konversikan();
cout<<angka;
return 0;
}
output
Kasus 4.5. Buatlah algoritma, flowchart, dan program untuk mengkonversi hari ke-1 adalah hari Senin sampai dengan hari ke-7 adalah Minggu. Misalkan dimasukkan nilai 5, outputnya adalah hari Jum’at
Jawab:
#include <iostream>
using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Kalender{
friend ostream&operator<<(ostream&,Kalender&);
friend istream&operator>>(istream&,Kalender&);
public:
Kalender(){};
void adalah();
private:
int hari_ke;
char*hari;
};
void Kalender::adalah(){
switch (hari_ke){
case 1: hari = "Senin";break;
case 2: hari = "Selasa";break;
case 3: hari = "Rabu";break;
case 4: hari = "Kamis";break;
case 5: hari = "Jumat";break;
case 6: hari = "Sabtu";break;
default : hari = "Minggu";break;
}
}
istream&operator>>(istream&in,Kalender&masukan){
cout<<"Masukkan hari ke-";
in>>masukan.hari_ke;
return in;
}
ostream&operator<<(ostream&out,Kalender&keluaran){
out<<"Hari ke-"<<keluaran.hari_ke<<" adalah "<<keluaran.hari<<endl;
return out;
}
int main(int argc, char** argv) {
Kalender tanggal;
cin>>tanggal;
tanggal.adalah();
cout<<tanggal;
return 0;
}
output
1. Buatlah flowchart dan translasi program dari algoritma 3.2.b. di atas.
Jawab:
#include <iostream>
#include <conio.h>
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;
}
output
2. Sempurnakan algoritma 3.3. dengan akar imajiner berbentuk : a + bi dengan a dan b bilangan real dan bila harga 2 40 b ac . Perhatikan bahwa nilai a dan b dihitung terpisah.
Jawab:
#include<cstdlib>
#include<iostream>#include <conio.h>
#include<math.h>
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;
}
output
3. Buatlah program dari algoritma 3.4. menggunakan case … of
Jawab:
# include <iostream>
# include <conio.h>#include <windows.h>
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();
}
output
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 :
Jawab:
#include <iostream>
#include <windows.h>#include <string>
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;
}
output
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.
Jawab:
#include <cstdlib>
#include <iostream>
#include <stdio.h>
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;
}
output
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 :
Jawab:
#include <iostream>
#include <conio.h>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;
}
output
Jawab:
#include <iostream>
#include <conio.h>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;
}
output
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.
Jawab:
#include <iostream>
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";
}
}
output
Jawab:
#include <iostream>
#include <conio.h>#include <stdio.h>
#include <string.h>
#include <windows.h>
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();
}
output