WORKSHOP BAB 2 OPERATOR OVERLOADING

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. Buat class waktu, termasuk operator overloading input dan output
    Jawab    :
        class waktu{
            friend ostream& operator<<(ostream&, const waktu&);
            friend istream& operator>>(istream, waktu&);
        public:
            waktu();
        private:
            int jam,mnt;
            float detik;

b. Buat implementasi operator overloading input dan output
    Jawab:
        -Input
            istream& operator>>(istream& cin, waktu& masukan){
            cout<<"Masukan jam :";
            cin>>masukan.jam;
            cout<<"Masukan menit :";
            cin>>masukan.mnt;
            cout<<Masukan detik :";
            cin>>masukan.detik;
            return cin;
            }

        -Output
            ostream& operator<<(ostream& out, const waktu& keluaran){
            out<<"Waktu"<<keluaran.jam<<"jam"<<keluaran.mnt<<"menit"<<keluaran.detik<<"detik"<<endl;
            return out;
            }

c. Buat main function
    Jawab    :
        int main(){
            waktu x;
            cin>>x;
            cout<< x;
            return 0;
        }



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 1/2.

a. Buat class rasional
    Jawab:
        class rasional{
            friend ostream& operator<<(ostream&, const rasional&);
            friend istream& operator>>(istream& rasioanl&);
        public:
            rasional();
        private:
            int p,q;

b. Buat implementasi operator overloadng input dan output
    Jawab:
        -Input
            istream& operator>>(istream cin, rasional& masukan){
            cout<<"Masukan penyebut :";
            cin>>masukan.p;
            cout<<"Masukan pembilang :";
            cin>>masukan.q;
            return cin;
            }

        -Output
            ostream& operator<<(ostream& out, const rasional& keluaran){
            out<<"p/q ="<<keluaran.p<<"/"<<keluaran.q<<endl;
            return out;
            }

c. Main fungsi
    Jawab:
        int main(){
            rasional x;
            cin>>x;
            cout<<x;
            return 0;
        }



3. Buatlah program yang meminta user memasukkan bagian ribuan, ratusan, puluhan, dan satuan. Misalnya: 1000, 200, 30, 4. Tampilan yang dikehendaki adalah 1234.

a. Buat class hitung
    Jawab:
        class hitung{
            friend ostream& operator<<(ostream& const hitung&);
            friend istream& operator>>(istream& hitung&); 
        public:
            hitung();
        private:
            int rib, rat, pul, sat;

b. Implementasi operator overloading input dan output
    Jawab:
        -Input
            istream& operator&>>(istream& cin, hitung& masukan){
            cout<<"Masukan angka ribuan :";
            cin>>masukan.rib;
            cout<<"Masukan angka ratusan :";
            cin>>masukan.rat;
            cout<<"Masukan angka puluhan :";
            cin>>masukan.pul;
            cout<<"Masukan angka satuan :";
            cin>>masukan.sat;
            return cin;
            }

        -Output
                ostream& operator&<<(ostream& out, const hitung& keluaran){
                out<<"Hasil = "<<keluaran.rib/1000<<keluaran.rat/100<<keluaran.pul/10<<keluaran.sat/1;
                return out;
                }

c. Main function
    Jawab:
        int main(){
            hitung x;
            cin>>x;
            cout<<x;
            return 0;
        }




4. Buatlah program untuk mempresentasikan operasi-operasi arimatika: penjumlahan, pengurangan, perkalian, 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 = 1/2

a. Buat class hitung
    Jawab:
        class hitung{
            friend ostream& operator<<(ostream& const hitung&);
            friend istream& operator>>(istream& hitung&); 
        public:
            hitung(){
                int hitung_jml(){ jumlah = (a+b);}
                int hitung_kurang(){ kurang = (a-b);}
                int hitung_kali(){ kali = (a*b);}
                int hitung_bagi(){ bagi =(a/b);}
        private:
            int a,b;  
            int jumlah, kurang, kali, bagi;

b. Implementasi operator overloading input dan output
    Jawab:
        -Input
            istream& operator>>(istream cin, hitung& masukan){
            cout<<"Masukan bilangan pertama :";
            cin>>masukan.a;
            cout<<"Masukan bilangan kedua :";
            cin>>masukan.b;
            return cin.;
            }
    
        -Output
            ostream& operator<<(ostream& out, const hitung& keluaran){
            out<<"keluaran.a<<"+"<<keluaran.b<<"="<<keluaran.jumlah<<endl;
            out<<"keluaran.a<<"-"<<keluaran.b<<"="<<keluaran.kurang<<endl;
            out<<"keluaran.a<<"*"<<keluaran.b<<"="<<keluaran.kali<<endl;
            out<<"keluaran.a<<":"<<keluaran.b<<"="<<keluaran.bagi<<endl;
            return out;
            }

c. Main function
    Jawab:
        int main(){
            hitung x;
            cin>>x;
            x.hitung_jml();
            x.hitung_kurang();
            x.hitung_kali();
            x.hitung_bagi();
            cout<<x;
            return 0;
        }
        
        


        

         

Komentar