Cari hal yang Anda inginkan di sini...

Senin, 10 Mei 2021

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