Bab 4

Kasus 4.1. Tentukanlah bilangan terbesar antara dua 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(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



Latihan Latihan Bab 4

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
 
7. Seorang dosen ingin mengkonversikan nilai angka hasil ujian mahasiswa menjadi nilai huruf dengan ketentuan

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







9. Seorang pegawai bekerja selama 5 hari kerja, yaitu Senin sampai Jum’at. Setiap hari dia masuk jam 08.00 dan pulang jam 16.00. Kecuali Jum’at dia pulang jam 11.00. Apabila dia bekerja lebih dari 30 jam per bulan maka setiap 5 jam akan memperoleh uang lembur sebesar Rp 30.000,- bila kurang dari 5 jam maka akan dihitung Rp 4.000,-/jam. Buat program dengan masukan bulan yang diinginkan, dan outputnya berupa besarnya uang lembur pegawai tersebut. Perhitungan secara manual :

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








Share this

Related Posts

Previous
Next Post »