Workshop Pemrograman : Operator Overloading
Kelompok 08
Kelas C
Anggota:
1. 2000018166 - Muhammad Izza
2. 2000018167 - Alja Priambodo Pinem
3. 2000018177 – Laila Sekar Gupita
1. Buatlah program yang meminta user memasukkan jam, menit dan detik kemudian
menampilkannya dengan format jam:menit:detik. Deklarasikan jam dan menit berupa
integer, sedangkan menit berupa floating point. Buat masukan dan keluaran
menggunakan operator overloading << dan >> sesuai yang dikehendaki.
A. Kode Sumber
#include <iostream>
using namespace std;
class waktu{
friend istream& operator >> (istream&, waktu&);
friend ostream& operator << (ostream&, waktu&);
private:
int pukul, menit; float detik;
};
istream& operator >> (istream&in, waktu&a){
cout << "Masukkan Pukul: ";
in >> a.pukul;
cout << "Masukkan Menit: ";
in >> a.menit;
cout << "Masukkan Detik: ";
in >> a.detik;
return in;
}
ostream& operator << (ostream&out, waktu&b){
out << "\nPukul " << b.pukul << ":" << b.menit <<
":" << b.detik;
return out;
}
main(){
waktu w;
cin >> w;
cout << w;
return 0;
}
B. Hasil
2. Buatlah program yang meminta user memasukkan bagian penyebut dan pembilang dari
sebuah bilangan rasional berbentuk p/q. Setiap memasukkan bilangan rasional outputnya
berbentuk p/q. Misalnya, masukan 1 dan 2 maka tampilan outputnya ½.
A. Kode Sumber
#include <iostream>
using namespace std;
class bilrasio{
friend istream& operator >> (istream&, bilrasio&);
friend ostream& operator << (ostream&, bilrasio&);
private:
int penyebut, pembilang;
};
istream& operator >> (istream& in, bilrasio& a){
cout << "Masukkan Pembilang: ";
in >> a.pembilang;
cout << "Masukkan Penyebut: ";
in >> a.penyebut;
return in;
}
ostream& operator << (ostream& out, bilrasio& b){
out << "\nBilangan rasionalnya adalah " << b.pembilang << "/" << b.penyebut << ".";
return out;
}
main(){
bilrasio br;
cin >> br;
cout << br;
return 0;
}
B. Hasil
3. Buatlah program yang meminta user memasukkan bagian ribuan, ratusan, puluhan dan
satuan. Misalnya : 1000, 200, 30, 4. Tampilan yang dikehendaki adalah 1234.
A. Kode Sumber
#include <iostream>
using namespace std;
class bilangan{
friend istream& operator >> (istream&, bilangan&);
friend ostream& operator << (ostream&, bilangan&);
private:
int a, b, c, d, hasila, hasilb, hasilc, hasild;
public:
int hitung_ribu(){
hasila = a / 1000;
}
int hitung_ratus(){
hasilb = b / 100;
}
int hitung_puluh(){
hasilc = c / 10;
}
int hitung_satu(){
hasild = d / 1;
}
};
istream& operator >> (istream& masukan, bilangan& satu)
{
cout << "Masukkan bilangan ribuan: ";
masukan >> satu.a;
cout << "Masukkan bilangan ratusan: ";
masukan >> satu.b;
cout << "Masukkan bilangan puluhan: ";
masukan >> satu.c;
cout << "Masukkan bilangan satuan: ";
masukan >> satu.d;
return masukan;
}
ostream& operator << (ostream& keluaran, bilangan& dua)
{
keluaran << "\nHasilnya adalah: " << dua.hasila << dua.hasilb << dua.hasilc << dua.hasild << endl;
return keluaran;
}
int main()
{
bilangan bil;
cin >> bil;
bil.hitung_ribu();
bil.hitung_ratus();
bil.hitung_puluh();
bil.hitung_satu();
cout << bil;
}
B. Hasil
4. Buatlah program untuk merepresentasikan operasi-operasi aritmatika : penjumlahan,
pengurangan, perkalian dan pembagian. User diminta memasukkan 2 buah bilangan bulat,
kemudian menampilkan sajian lengkapnya dari semua operasi. Sebagai contoh, user
memasukkan 1 dan 2 maka tampilan outputnya :
1 + 2 = 2
1 – 2 = -1
1 * 2 = 2
1 : 2 = ½
A. Kode Sumber
#include <iostream>
using namespace std;
class bilangan{
friend ostream& operator << (ostream&, const bilangan&);
friend istream& operator >> (istream&, bilangan&);
public:
friend istream& operator >> (istream& in, bilangan& bulat){
cout << "Masukkan bilangan bulat pertama: ";
in >> bulat.a;
cout << "Masukkan bilangan bulat kedua: ";
in >> bulat.b;
bulat.c = bulat.a + bulat.b;
bulat.d = bulat.a - bulat.b;
bulat.f = bulat.a * bulat.b;
return in;
}
friend ostream& operator << (ostream& out, bilangan& bulat){
out << bulat.a << " + " << bulat.b << " = " << bulat.c << endl;
out << bulat.a << " - " << bulat.b << " = " << bulat.d << endl;
out << bulat.a << " * " << bulat.b << " = " << bulat.f << endl;
out << bulat.a << " / " << bulat.b << " = " << bulat.a << "/" << bulat.b << endl;
return out;
}
private:
int a, b, c, d, f, g;
}x;
int main(){
cin >> x;
cout << x;
}
B. Hasil
5. Buatlah program untuk merepresentasikan bilangan bulat menjadi bilangan scientific
number berbentuk 1.23E1 untuk menyatakan bilangan 12.3. Masukan bilangan bulat 4
digit, keluaran berbentuk aEb, dengan a adalah bilangan antara 0 dan 10, sedangkan b
dari 0 sampai 4.
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
int main()
{
string raptor_prompt_variable_zzyz;
float a, b, x;
cout << "Program konversi bilangan raasional menjadi bilangan scientific" << endl<<endl;
raptor_prompt_variable_zzyz = "masukkan bilangan = ";
cout << raptor_prompt_variable_zzyz;
cin >> x;
if (x>999){
b =3;
a =x/1000;
}
else if (x>99){
b =2;
a =x/100;
}
else if (x>9){
b =1;
a =x/10;
}
else{
b =0;
a =x;
}
cout << "\nscientific Number = " << a << "e" <<b << endl;
return 0;
}
B. Hasil
Workshop algoritma dan class
1. Buatlah analisis dan algoritma untuk mencari titik tengah sebuah garis yang ujung
titiknya adalah A(x1,y1) dan B(x2,y2).
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
class tt{
friend istream& operator >> (istream&, tt&);
friend ostream& operator << (ostream&, const tt&);
private:
float y1, y2, x1, x2, xt, yt;
public:
void operasi();
};
ostream& operator << (ostream& out, const tt& tgh){
out << "(" << tgh.xt << " , " << tgh.yt << ")" <<
endl;
return out;
}
istream& operator >> (istream& in, tt& tgh){
cout << "Masukkan nilai x1: ";
in >> tgh.x1;
cout << "Masukkan nilai y1: ";
in >> tgh.y1;
cout << "Masukkan nilai x2: ";
in >> tgh.x2;
cout << "Masukkan nilai y2: ";
in >> tgh.y2;
return in;
}
void tt::operasi(){
xt = (x2 + x1)/2;
yt = (x2 + x1)/2;
}
int main(){
tt t;
cin >> t;
t.operasi();
cout << t;
return 0;
}
B. Hasil
2. Buatlah algoritma untuk mencari isi bola bila diketahui jari-jari bola.
A. Kode Sumber
#include <iostream>
using namespace std;
int main(int argc, char** argv){
int jari;
long int luas,volume;
double phi=3.14;
cout<<"Mengitung luas dan volume bola"<<endl;
cout<<endl;
cout<<"masukan jari jari:";
cin>>jari;
volume=(4*phi*jari*jari*jari)/3;
luas=4*phi*jari*jari;
cout<<endl;
cout<<"Volume bola adalah:"<<volume;
cout<<endl;
cout<<"Luas bola adalah:"<<luas;
return 0;
}
B. Hasil
3. Buatlah analisis dan algoritma untuk mencari hipotenusa dari segitiga Pythagoras bila
diketahui sisi siku-sikunya. (Petunjuk : gunakan fungsi sqrt yang menyatakan akar
dari).
A. Kode Sumber
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a, b;
float c;
bool kondisi=true;
while(kondisi){
cout<<" ==============================="<<endl;
cout<<" MENGHITUNG PANJANG SISI MIRING "<<endl;
cout<<" ==============================="<<endl;
cout<<" Masukan Sisi Depan = "; cin>>a;
cout<<" Masukan Sisi Alas = "; cin>>b;
c=sqrt(pow(a,2) + pow(b,2));
cout<<"\n Panjang Hipotenusa = "<<c<<" cm"<<endl;
//==============================================================//
char ulang;
cout<<"\n Apakah Anda akan menghitung ulang? (y/n) "; cin>>ulang;
if(ulang=='y' || ulang=='Y'){
system("cls");
}else{
kondisi=false;
cout<<"\n PROGRAM SELESAI!"<<endl;
}
}
//==============================================================//
return 0;
}
B. Hasil
4. Buatlah analisis dan algoritma untuk menghitung konversi detik menjadi format
jam:menit:detik
Buat contoh kasus, misalnya konversikan 1230 detik menjadi … jam … menit … detik.
A. Kode Sumber
#include <stdio.h>
#include <conio.h>
main(){
int sec,jam,menit,detik ;
printf("Masukan jumlah detik yang mau dihitung : "); scanf("%d",&sec);
jam=sec / (60*60);
sec= sec-((60*60)*jam);
menit=sec / 60;
sec= sec - (60*menit);
printf("\n===============================================");
printf("\nmaka waktunya adalah : ");
printf("\n Jam : %d \n Menit : %d \n Detik : %d ",jam,menit,sec);
getch();
}
B. Hasil
5. Buatlah analisis dan algoritma untuk menghitung konversi dari jam:menit:detik ke detik
Buat contoh kasus, misalnya konversikan 2 jam 13 menit 43 detik menjadi … detik.
A. Kode Sumber
#include <iostream>
using namespace std;
int main (){
int jam =3600;
int menit =60;
int konversi, hour, minute, second;
char pilihan, pilihan2;
x:
system ("CLS");
cout<<" ========================================"<<endl;
cout<<" | Konversi Waktu ke Detik |"<<endl;
cout<<" ========================================"<<endl;
cout<<" | Masukan Data Waktu : | "<<endl;
cout<<" ========================================"<<endl;
cout<<" | Masukan Jam : ";cin>>hour;
cout<<" | Masukan Menit : ";cin>>minute;
cout<<" | Masukan Detik : ";cin>>second;
cout<<" | |"<<endl;
cout<<" ========================================"<<endl;
cout<<endl;
cout<<" ========================================"<<endl;
cout<<" | Apakah data di atas sudah benar ? |"<<endl;
cout<<" | |"<<endl;
cout<<" | [Y] Yes [N] No |"<<endl;
cout<<" | |"<<endl;
cout<<" | Masukan Pilihan [Y/N] : ";cin>>pilihan;
cout<<" | |"<<endl;
cout<<" ========================================"<<endl;
y:
if (pilihan == 'n' || pilihan == 'N'){
cout<<endl;
cout<<" ========================================"<<endl;
cout<<" | Masukan data kembali ? : |"<<endl;
cout<<" ========================================"<<endl;
cout<<" | |"<<endl;
cout<<" | [Y] Yes [X] Exit |"<<endl;
cout<<" | |"<<endl;
cout<<" | Masukan Pilihan [Y/N] : ";cin>>pilihan2;
cout<<" | |"<<endl;
cout<<" ========================================"<<endl;
if (pilihan2 == 'y' || pilihan2 == 'y'){
goto x;
}
else if (pilihan2 == 'x' || pilihan2 == 'X'){
cout<<"Tekan Enter"<<endl;
system("EXIT");
}
else {
cout<<endl;
cout<<" ========================================"<<endl;
cout<<" | Maaf Menu yang anda minta tidak ada |"<<endl;
cout<<" | Mohon masukan kembali |"<<endl;
cout<<" ========================================"<<endl;
goto y;
}
}
else if (pilihan == 'y' || pilihan == 'Y' ){
konversi=hour*jam+minute*menit+second;
cout<<endl;
cout<<" ========================================"<<endl;
cout<<" | hasil dari Konversi Waktu |"<<endl;
cout<<" ========================================"<<endl;
cout<<" | |"<<endl;
cout<<" | "<<hour<<" jam "<<minute<<" menit "<<second<<" detik |"<<endl;
cout<<" | kedetik adalah : "<<konversi<<" |"<<endl;
cout<<" ========================================"<<endl;
}
else {
cout<<endl;
cout<<" ========================================"<<endl;
cout<<" | Maaf Menu yang anda minta tidak ada |"<<endl;
cout<<" | Mohon masukan kembali |"<<endl;
cout<<" ========================================"<<endl;
}
cout<<" ========================================"<<endl;
cout<<" | Learn more @ koding123.com |"<<endl;
cout<<" ========================================"<<endl;
}
B. Hasil
6. Buatlah analisis dan algoritma untuk menghitung selisih 2 waktu. Output ditampilkan
dalam bentuk jam:menit:detik. Asumsikan menggunakan sistem jam 24-an.
Buat contoh kasus, misalnya berapa selisih waktu antara jam 3.45 sore dengan jam 10.23
malam.
A. Kode Sumber
#include <iostream>
#include <conio.h>
using namespace std;
main()
{
int j1, m1, d1, j2, m2, d2, lama1, lama2, lama3;
cout<<"MASUKAN WAKTU AWAL: "<<endl;
cout<<"Jam = ";
cin>>j1;
cout<<"menit = ";
cin>>m1;
cout<<"detik = ";
cin>>d1;
cout<<"WAKTU AWAL Pada Pukul = "<<j1<<":"<<m1<<":"<<d1<<" WIB"<<endl;
cout<<endl;
cout<<"MASUKAN WAKTU AKHIR : "<<endl;
cout<<"Jam = ";
cin>>j2;
cout<<"menit = ";
cin>>m2;
cout<<"detik = ";
cin>>d2;
cout<<"WAKTU AKHIR pada Pukul = "<<j2<<":"<<m2<<":"<<d2<<" WIB"<<endl;
if ((d2-d1)<0)
{
lama1=(60+d2)-d1;
}
else
{
lama1=d2-d1;
}
if ((m2-m1)<0)
{
lama2=(60+m2)-m1;
}
else
{
lama2=m2-m1;
}
if ((j2-j1)<0)
{
lama3=(24+j2)-j1;
}
else
{
lama3=j2-j1;
}
cout<<"SELISIH : "<<endl;
cout<<"Jam = "<<lama3<<endl;
cout<<"Menit = "<<lama2<<endl;
cout<<"Detik = "<<lama1<<endl;
cout<<" SELISIHNYA = "<<lama3<<":"<<lama2<<":"<<lama1<<" WIB ";
getch ();
}
B. Hasil
7. Buatlah analisis dan algoritma untuk menghitung jumlah komponen sejumlah uang
menjadi pecahan-pecahannya. Misalkan Rp 188.875,- menjadi : 1 seratus ribuan, 1 lima
puluh ribuan, 1 dua puluh ribuan, 1 puluhan ribu, 1 lima ribuan, 3 ribuan, 1 lima ratusan,
1 dua ratusan, 1 ratusan, 1 lima puluhan, 1 dua puluh limaan
A. Kode Sumber
#include<iostream>
using namespace std;
int konversi(long &u, long p)
{
int pecahan;
pecahan = u / p;
u = u % p;
return(pecahan);
}
void output(long u)
{
cout<<"Uang Rp. 100000 : "<<konversi(u, 100000)<<" lembar\n";
cout<<"Uang Rp. 50000 : "<<konversi(u, 50000)<<" lembar\n";
cout<<"Uang Rp. 20000 : "<<konversi(u, 20000)<<" lembar\n";
cout<<"Uang Rp. 10000 : "<<konversi(u, 10000)<<" lembar\n";
cout<<"Uang Rp. 5000 : "<<konversi(u,
5000)<<" lembar\n";
cout<<"Uang Rp. 2000 : "<<konversi(u, 2000)<<" lembar\n";
cout<<"Uang Rp. 1000 : "<<konversi(u, 1000)<<" lembar\n";
cout<<"Uang Rp. 500 : "<<konversi(u, 500)<<" lembar\n";
cout<<"Uang Rp. 200 : "<<konversi(u, 200)<<" lembar\n";
cout<<"Uang Rp. 100 : "<<konversi(u, 100)<<" lembar\n";
cout<<"Uang Rp. 50 : "<<konversi(u, 50)<<" lembar\n";
cout<<"Uang Rp. 25 : "<<konversi(u, 25)<<" lembar\n";
}
int main()
{
long uang;
cout<<"Masukkan Jumlah Uang : Rp. ";
cin>>uang;
output(uang);
return 0;
}
B. Hasil
8. Buatlah analisis dan algoritma untuk menghitung luas sebuah plat CD.
Bab 3 Sekuen halaman : 63
Diameter lingkaran luar = …. cm.
Diameter lingkaran dalam = …. cm.
Rumus luas plat CD :
A. Kode Sumber
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
float luas;
int r1, r2;
luas=22/7*r1*r1 - 22/7*r2*r2;
cout<<"Diameter Lingkaran Luar= ";
cin>>r1;
cout<<"Diameter Lingkaran dalam= ";
cin>>r2;
cout<<"Luas cover CD= "<<luas<<endl;
getch();
}
B. Hasil
9. Buatlah analisis dan algoritma untuk menghitung operasi bilangan rasional :
penjumlahan, pengurangan, perkalian, pembagian dan kebalikan.
Buat contoh kasus, misalnya dua bilangan rasional 2/3 dan 4/7.
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
int main()
{
string raptor_prompt_variable_zzyz;
int b;
int c;
int a;
int penjumlahan;
int pembagian;
int d;
int perkalian;
int pengurangan;
int kebalikan;
raptor_prompt_variable_zzyz ="a : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> a;
raptor_prompt_variable_zzyz ="b : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> b;
raptor_prompt_variable_zzyz ="c :";
cout << raptor_prompt_variable_zzyz << endl;
cin >> c;
raptor_prompt_variable_zzyz ="d : ";
cout << raptor_prompt_variable_zzyz << endl;
cin >> d;
penjumlahan =(a*d+b*c)/(b*d);
pengurangan =(a*d-b*c)/(b*d);
perkalian =(a*b)/(c*d);
pembagian =(a*d)/(b*c);
cout << "Hasil Penjumlahan : "<<penjumlahan << endl; cout << "Hasil Pengurangan : "<<pengurangan << endl; cout << "Hasil Perkalian : "<<perkalian << endl;
cout << "Hasil Pembagian : "<<pembagian << endl; cout << "Hasil Kebalikan : "<<b<<"/"<<a<<"dan "<<d<<"/"<<c << endl;
return 0;
}
B. Hasil
10. Buatlah analisis dan algoritma untuk mengkonversi bilangan biner 4 digit menjadi
bilangan desimal. Operator overloading input mencegah user untuk memasukkan
bilangan selain 0 dan 1. Deklarasi variabel input dan output adalah bertipe integer.
Konversikan 1011 ke desimal :
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
int main()
{
string raptor_prompt_variable_zzyz;
int error;
int a;
raptor_prompt_variable_zzyz ="masukkan 4 bil biner :";
cout << raptor_prompt_variable_zzyz << endl;
cin >> a;
if (a==1000)
{
cout << 8 << endl; }
else
{
if (a==1001)
{
cout << 9 << endl; }
else
{
if (a==1010)
{
cout << 10 << endl; }
else
{
if (a==1011)
{
cout << 11 << endl; }
else
{
if (a==1100)
{
cout << 12 << endl; }
else
{
if (a==1101)
{
cout << 13 << endl; }
else
{
if (a==1110)
{
cout << 14 << endl; }
else
{
if (a==1111)
{
cout << 15 << endl; }
else
{
cout << error << endl; }
}
}
}
}
}
}
}
return 0;
}
B. Hasil
11. Buatlah analisis dan algoritma untuk menjumlah dua bilangan scientific berbentuk aEb
dengan 0 < a < 10 dan 0 <= b <= 4.
Hitung 2.1E2 + 3.31E1 = secara manual lebih dulu.
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
int main(){
double a, b, hasil;
cout <<"masukkan scientific 1 : "<< endl;
cin >> a;
cout <<"Masukkan scientific :"<< endl;
cin >> b;
if (0<a && a<10 && 0<=b && b<=4)
{
hasil =a+b;
cout << "Hasil Bilangan Scientific : "<<hasil << endl; }
else
{
cout << "ERROR" << endl; }
}
B. Hasil
12. Buatlah analisis dan algoritma untuk menghitung jumlah dari dari dua tanggal yang
dimasukkan user. Misalnya, berapa hari dari 6/1/90 sampai 8/3/92 ? Anggap satu tahun
365 hari dan anggap semua komponen tanggal pertama SELALU LEBIH KECIL dari
komponen tanggal kedua.
A. Kode Sumber
#include <iostream>
#include <string>
using namespace std;
int main()
{
string raptor_prompt_variable_zzyz;
int b;
int c;
int a;
int hasil;
int hasil2;
int z;
int hasil3;
int x;
int y;
cout << "Tanggal 1" << endl; raptor_prompt_variable_zzyz ="masukkan tahun";
cout << raptor_prompt_variable_zzyz << endl;
cin >> a;
raptor_prompt_variable_zzyz ="masukkan bulan";
cout << raptor_prompt_variable_zzyz << endl;
cin >> b;
raptor_prompt_variable_zzyz ="masukkan tanggal";
cout << raptor_prompt_variable_zzyz << endl;
cin >> c;
cout << "Tanggal 2" << endl; raptor_prompt_variable_zzyz ="masukkan tahun";
cout << raptor_prompt_variable_zzyz << endl;
cin >> x;
raptor_prompt_variable_zzyz ="masukkan bulan";
cout << raptor_prompt_variable_zzyz << endl;
cin >> y;
raptor_prompt_variable_zzyz ="masukkan tanggal";
cout << raptor_prompt_variable_zzyz << endl;
cin >> z;
if (z-c<0)
{
hasil =30+z-c;
}
else
{
hasil =z-c;
}
if (y-b<0)
{
hasil =12+y-b;
hasil2 =x-a-1;
}
else
{
hasil =y-b;
hasil2 =x-a;
}
hasil3 =hasil*360+hasil*30+hasil;
cout << "selisihnya dalam hari : "<<hasil3 << endl; cout << "tahun"<<hasil2<<"bulan"<<hasil<<"tanggal"<<hasil << endl;
return 0;
}
B. Hasil
Tidak ada komentar:
Posting Komentar