PEMILIHAN

LATIHAN 

Buatlah algoritma dan class beserta method untuk mengecek apakah pemakai memasukkan bilangan bulat atau bilangan real
Jawab    :
    a. Algortima
        1. Algoritma menerima masukan a
        2. Proses pengecekan degan if else
        3. Mencetak bilangan bulat atau bilangan real

        Deklarasi
            Input    : a(integer)
            Proses  : a(integer)
            Output : hasil (a)
        Deskripsi
            a=a
            if(a==a) then cek <= "adalah bilangan bulat   "
            else cek <= "adalah bilangan real"
            end if
            write cek

    b. Program
            #include <iostream>
            using namespace std;
 
            class cek{
        public:
    void hitung();
        private:
                    float a;
            };

            void cek::hitung(){
        cout<<"-------------------------------"<<endl;
        cout<<"\tMENGECEK BILANGAN\t"<<endl;
        cout<<"-------------------------------"<<endl;
        cout<<"Masukan bilangan : ";
        cin>>a;
        if(a==int (a)){
    cout<<"adalah bilangan bulat"<<endl;
        }
        else{
    cout<<"adalah bilangan real"<<endl;
        }
            }        

        int main(){
    cek x;
    x.hitung();
    return 0;
        }


WORKSHOP BAB 4
1. Buatlah flowchart dan translasi program dari algoritma mencari nilai terbesar dari 3 bilangan
    Jawab:
        a. Flowchart
 
        b. Program
                #include <iostream>
                #include <conio.h>
                using namespace std;

                class Terbesar{
                    friend istream& operator>>(istream&, Terbesar&);
                public:
            Terbesar();
            void bilangan_terbesar(){
        int max = x;
        if(y > max) max = y;
        if(z > max) max = z;
        cout<<"\nBilangan terbesar adalah : "<<max;
            }
                private:
                    int x, y, z;
                };

                Terbesar::Terbesar(){
        cout<<"----------------------------------------------"<<endl;
        cout<<"  MENENTUKAN NILAI TERBESAR DARI 3 BILANGAN  "<<endl;
        cout<<"----------------------------------------------"<<endl;
                }

                istream& operator>>(istream& cin, Terbesar& masukan){
            cout<<"Masukkan nilai X : ";
            cin>>masukan.x;
            cout<<"Masukkan nilai Y : ";
            cin>>masukan.y;
            cout<<"Masukkan nilai Z : ";
            cin>>masukan.z;
            return cin;
                }

                int main(){
            Terbesar bil;
            cin>>bil;
            bil.bilangan_terbesar();
            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 nahwa nilai a dan b dihitung terpisah.
Jawab:
        #include <iostream>
        #include <math.h>
        #include <conio.h>
        using namespace std;

        class Imajiner{
    friend ostream& operator<<(ostream&, const Imajiner&);
    friend istream& operator>>(istream&, Imajiner&);
        public:
    Imajiner();
                int diskriminan(){ return b*b - 4*a*c;}
        float akar1(){ return (-b + sqrt(diskriminan())) / (2*a);}
        float akar2(){ return (-b - sqrt(diskriminan())) / (2*a);}
        void hitung_akar();
        void cetak_diskriminan(){
    cout<<"Diskriminan = "<<diskriminan()<<endl;}
        void cetak_akar(){
    cout<<"Akar x1 = "<<akar1()<<endl;
    cout<<"Akar x2 = "<<akar2()<<endl;
        }
        private:
    int a, b,c, D;
    float x1, x2;
        };

        Imajiner::Imajiner(){
    cout<<"-------------------------------------"<<endl;
    cout<<"  MENGHITUNG AKAR PERSAMAAN KUADRAT  "<<endl;
    cout<<"-------------------------------------"<<endl;
       }

        istream& operator>>(istream& cin, Imajiner& masukan){
    cout<<"Masukkan nilai A :";
    cin>>masukan.a;
    cout<<"Masukkan nilai B :";
    cin>>masukan.b;
    cout<<"Masukkan nilai C :";
    cin>>masukan.c;
    return cin;
        }

        ostream& operator<<(ostream& out, Imajiner& keluaran) {
    keluaran.cetak_diskriminan();    
    if (keluaran.diskriminan() >= 0) keluaran.cetak_akar();
    else out << "Akar imajiner";
    return out;
        }

        void Imajiner::hitung_akar(){
    if (a == 0){
    cout<<"Bukan persamaan kuadrat";
    cout<<"Akar = "<< -c/b; 
    }
            else {
    if (diskriminan() > 0){
x1 = akar1();
x2 = akar2();
    }
            else if(diskriminan()==0){
x1 = akar1();
x2 = x1;
    }
    }
    }
        int main(){
        Imajiner bilangan;
        cin>>bilangan;
        bilangan.hitung_akar();
        cout<<bilangan;
        return 0;
         }



3. Buatlah program dari algoritma menkonversi nilai angka menjadi nilai huruf dengan menggunakan case of
    Jawab:
        #include <iostream>
        using namespace std;

        int main(){
            int pilihan;
    char huruf;
    cout<<"--------------------------------------------------"<<endl;
    cout<<"  PROGRAM MENGKONVERSI NILAI MENGGUNAKAN CASE OF  "<<endl;
    cout<<"--------------------------------------------------"<<endl;
    cout<<"1. Nilai 0-20 "<<endl;
    cout<<"2. Nilai 21-40 "<<endl;
    cout<<"3. Nilai 51-60 "<<endl;
    cout<<"4. Nilai 61-80 "<<endl;
    cout<<"5. Nilai 81-100 "<<endl;
    cout<<"6. Nilai >100 "<<endl;
    cout<<"\nMasukkan nilai angka : ";
    cin>>pilihan;
    cout<<endl;
    switch(pilihan){
case 1 : huruf = 'E'; break;
case 2 : huruf = 'D'; break;
case 3 : huruf = 'C'; break;
case 4 : huruf = 'B'; break;
case 5 : huruf = 'A'; break;
default: huruf = '-'; break;
            }

            cout<<"Nilai huruf = "<<huruf<<endl;
            return 0;
            }
      
 

Komentar