Algoritma & MOOP [VIII]


  1. 1. Tuliskan program dengan class yang mempunyai variable static yang secara otomatis dapat mengetahui jumlah object yang tercipta pada suatu saat dan fungsi anggota static yang dapat mengembalikan nilai variable static..

Code:

#include <iostream.h>

class classstatic {

private:

static int y;

public:

classstatic();

int gety();

};

classstatic::classstatic()

{ y++; }

int classstatic::gety()

{ return y; }

int classstatic::y = 0;

int main()

{

classstatic st1;

cout<<“jml object yang terbentuk= “<<st1.gety()<<endl;

classstatic st2;

cout<<“jml object yang terbentuk= “<<st2.gety()<<endl;

classstatic st3;

cout<<“jml object yang terbentuk= “<<st3.gety()<<endl;

classstatic st4;

cout<<“jml object yang terbentuk= “<<st4.gety()<<endl;

system(“pause”);

}

  1. 2.Tuliskan program dengan class untuk dapat menginputkan data mahasiswa dan menampilkannya seperti di bawah.
Sks NIM IPK
42 0800100001 3.23
58 0800200002 2.25
32 0800600006 3.17
62 0800100001 2.90
40 0800300003 3.34
48 0800400004 2.54
36 0800200002 2.47

Jawab:

Code:

#include <iomanip.h>

#include <string>

#include <cstring>

#include <iomanip.h>

class mahasiswa

{

private:

char nim[11];

int sks,n;

float ipk;

public:

mahasiswa();

void setdata(char *nim,int sks,float ipk);

void tampildata();

};

mahasiswa::mahasiswa()

{

strcpy(nim,””);

sks=0;

ipk=0;

}

void mahasiswa::setdata(char *ni,int sk,float ip)

{

strcpy(nim,ni);

sks=sk;

ipk=ip;

}

void mahasiswa::tampildata()

{

cout<<setw(4)<<sks<<setw(15)<<nim<<setw(5)<<ipk<<endl;

}

int main()

{

mahasiswa mhs[7];

char N[11];

int S;

float I;

cout<<“Input data mahasiswa :”;

for(int i=0;i<7;i++)

{

cout<<“\nNIM  : “;cin>>N;

cout<<“SKS  : “;cin>>S;

cout<<“IPK  : “;cin>>I;

mhs[i].setdata(N,S,I);

}

cout<<“\nTampilkan data mahasiswa :”<<endl;

cout<<“\n”<<setw(4)<<“SKS”<<setw(10)<<“NIM”<<setw(5)<<“IPK”<<endl;

for(int i=0;i<7;i++)

{

mhs[i].tampildata();

}

system(“pause”);

}

  1. 3. Tuliskan program dengan class untuk merepresentasikan sebuah kamus sederhana, kamus tersebut mempunyai data kata, keterangan kata dan jumlah data maksimum yang dapat ditampung dengan array object.

Code:

#include <iostream.h>

#include <string>

#include <cstring>

#include <iomanip.h>

class kamus

{

private:

char kata[20];

char ket[50];

public:

kamus();

void setdata(char *kata,char *ket);

void tampil();

};

kamus::kamus()

{

strcpy(kata,””);

strcpy(ket,””);

}

void kamus::setdata(char *ka,char *ke)

{

strcpy(kata,ka);

strcpy(ket,ke);

}

void kamus::tampil()

{

cout<<setw(22)<<kata<<setw(52)<<ket<<endl;

}

int main()

{

kamus kms[100];

int jml;

cout<<“Jumlah data yan akan ditampung : “;cin>>jml;

char KATA[20];

char KET[50];

for (int i=0;i<jml;i++)

{

cout<<“Data ke-“<<i+1<<endl;

cout<<“Kata       : “;cin>>KATA;

cout<<“Keterangan : “;cin>>KET;

kms[i].setdata(KATA,KET);

}

cout<<“\nData yang sudah ditampung”<<endl;

cout<<setw(15)<<“KATA”<<setw(40)<<“KETERANGAN”<<endl;

for(int i=0;i<jml;i++)

{ kms[i].tampil(); }

cout<<“\n”<<jml<<” data dari maximum(100) yang dapat ditampung”<<endl;

system(“pause”);

}

  1. 4. Buatlah program C++ dengan menggunakan class untuk menggambarkan suatu object Calculator. Gunakan nama  kelas Calculator yang mempunyai 5 method yaitu tambah(), kurang() , kali() , bagi(), input(), dimana Method input() berfungsi menerima input dari user. Program harus mampu menerima 2 operand dan 1 buah operator dari user dan mampu menampilkan hasilnya. Silahkan  gunakan variabel – variabel yang anda butuhkan. Selain itu terdapat fungsi display() yang merupakan friend function dari class calculator dan digunakan untuk menampilkan hasil kalkulasi.

Code:

#include <iostream.h>

#include <string>

#include <cstring>

#include <math.h>

class kalkulator

{

private:

double op,op1,op2;

char opr[2];

public:

kalkulator();

kalkulator operator +(kalkulator c);

kalkulator operator -(kalkulator c);

kalkulator operator *(kalkulator c);

kalkulator operator /(kalkulator c);

friend istream& operator >> (istream& in, kalkulator& c);

friend ostream& operator << (ostream& out, kalkulator c);

};

kalkulator::kalkulator()

{ op=0; op1=0; op2=0, strcpy(opr,””);}

kalkulator kalkulator::operator +(kalkulator c)

{

this->op = op + c.op;

return (*this);

}

kalkulator kalkulator::operator -(kalkulator c)

{

this->op = op – c.op;

return (*this);

}

kalkulator kalkulator::operator *(kalkulator c)

{

this->op = op * c.op;

return (*this);

}

kalkulator kalkulator::operator /(kalkulator c)

{

this->op = op / c.op;

return (*this);

}

istream& operator >> (istream& in, kalkulator& c)

{

cout << “\ninputkan operand1: “;in >> c.op1;

cout << “\ninputkan operator: “;in >> c.opr;

cout << “\ninputkan operand2: “;in >> c.op2;

return in;

}

ostream& operator << (ostream& out, kalkulator c)

{

out<<“\nHasil dari “<<c.op1<<c.opr<<c.op2<<” = “;

if (strcmp(c.opr,”+”)==0)

{ c.op = c.op1 + c.op2; out<<c.op; }

else if (strcmp(c.opr,”-“)==0)

{ c.op = c.op1 – c.op2; out<<c.op; }

else if (strcmp(c.opr,”*”)==0)

{ c.op = c.op1 * c.op2; out<<c.op; }

else if (strcmp(c.opr,”/”)==0)

{ c.op = c.op1 / c.op2; out<<c.op; }

return out;

}

int main()

{

kalkulator A;

cin>>A;

cout<<A<<endl;

system(“pause”);

}

  1. 5. Buatlah program lengkap dengan konsep nesting object untuk menghitung dan menampilkan nilai akhir matakuliah Algoritma dan Pemrograman dan grade nilainya. Nilai akhir dihitung dengan rumus:

Nilai teori = 50%(UAS) + 30%(UTS) + 20%(Tugas)

Nilai Praktikum = 40%(UAP) + 30%(UTP) + 15%(TM) + 15%(absen)

Nilai akhir = 65%(Nilai teori) + 35%(Nilai Praktikum)

Tabel Nilai:

Nilai Akhir

Grade

85 – 100

A

75 – 84

B

65 – 74

C

50 – 64

D

0 – 49

E

class diagramnya:

Code:

#include <iostream.h>

#include <string>

#include <cstring>

#include <math.h>

class nteori

{

public:

float teori;

nteori();

float nilait(float uas,float uts,float tgs);

};

class npraktek

{

public:

float praktek;

npraktek();

float nilaip(float uap,float utp,float tm,float abs);

};

class nakhir

{

public:

float akhir;

nteori ct;

npraktek cp;

nakhir();

float nilaia();

char grade();

};

nteori::nteori()

{ teori=0; }

float nteori::nilait(float uas,float uts,float tgs)

{ teori= ((50 * uas)+(30 * uts)+(20 * tgs))/100; return teori; }

npraktek::npraktek()

{ praktek=0; }

float npraktek::nilaip(float uap,float utp,float tm,float abs)

{ praktek= ((40 * uap)+(30 * utp)+(15 * tm)+(15 * abs))/100; return praktek; }

nakhir::nakhir()

{ akhir=0; }

float nakhir::nilaia()

{ akhir= ((65 * ct.teori)+(35 * cp.praktek))/100; return akhir; }

char nakhir::grade()

{

char g=’e’;

if(akhir>=0 && akhir<=49)

{ g=’E’; }

else if(akhir>=50 && akhir<=64)

{ g=’D’; }

else if(akhir>=65 && akhir<=74)

{ g=’C’; }

else if(akhir>=75 && akhir<=84)

{ g=’B’; }

else if(akhir>=85 && akhir<=100)

{ g=’A’; }

return g;

}

int main()

{

nakhir na;

cout<<“Nilai Teori   : “<<na.ct.nilait(85,80,75)<<endl;

cout<<“Nilai Praktek : “<<na.cp.nilaip(85,80,75,70)<<endl;

cout<<“Nilai Akhir   : “<<na.nilaia()<<endl;

cout<<“Grade         : “<<na.grade()<<endl;

system(“pause”);

}

  1. 6. Sebuah bilangan komplek k dapat ditulis dalam bentuk k = a + bi, dimana a dan b adalah bilangan real dan i adalah bilangan imajiner sehingga i*i = -1. Bilangan a biasanya disebut bagian real dan bilangan b merupakan bagian imajiner dari bilangan k. Buatlah kelas Komplek sehingga kelas tersebut dapat digunakan untuk bekerja dengan bilangan komplek

Code:

#include <iostream.h>

#include <math.h>

class Complex

{

private:

double r, i;

public:

Complex();

Complex(double x);

Complex(double a, double b);

//Complex(Complex &c);

void setReal(double x);

void setIm(double y);

double getReal();

double getIm();

Complex operator +(Complex c1);

Complex operator +(int A1);

Complex operator +(double A1);

Complex operator -(Complex c1);

Complex operator -(int A1);

Complex operator -(double A1);

Complex operator *(Complex c1);

Complex operator *(int A1);

Complex operator *(double A1);

Complex operator /(Complex c1);

Complex operator /(int A1);

Complex operator /(double A1);

friend istream& operator >> (istream& in, Complex& c1);

friend ostream& operator << (ostream& out, Complex c1);

};

Complex::Complex()

{r = 0; i = 0;}

Complex::Complex(double x)

{ r = x; i=0; }

Complex::Complex(double a, double b)

{this->r = a; this->i = b;}

//Complex::Complex(Complex &c)

//{r = c.r; i = c.i; }

void Complex::setReal(double x)

{ r=x;}

void Complex::setIm(double y)

{ i=y;}

double Complex::getReal()

{ return r; }

double Complex::getIm()

{ return i;}

Complex Complex::operator +(Complex c1)

{

this->r += c1.r;

this->i += c1.i;

return (*this);

}

Complex Complex::operator +(int c1)

{ r = r+c1; i = c1+i; return(*this); }

Complex Complex::operator +(double c1)

{ r = c1+r; i = c1+i; return(*this); }

Complex Complex::operator -(Complex c1)

{

this->r -= c1.r;

this->i -= c1.i;

return (*this);

}

Complex Complex::operator -(int c1)

{ r = r-c1; i = i-c1; return(*this); }

Complex Complex::operator -(double c1)

{ r = r-c1; i = i-c1; return(*this); }

Complex Complex::operator *(Complex c1)

{

Complex temp;

temp.r = r*c1.r-i*c1.i;

temp.i = r*c1.i+c1.r*i;

return(temp);

}

Complex Complex::operator *(int c1)

{ r = r*c1; i = c1*i; return(*this); }

Complex Complex::operator *(double c1)

{ r = c1*r; i = c1*i; return(*this); }

Complex Complex::operator /(Complex c1)

{

Complex temp;

temp.r = r/c1.r-i/c1.i;

temp.i = r/c1.i+c1.r/i;

return(temp);

}

Complex Complex::operator /(int c1)

{ r = r/c1; i = c1/i; return(*this); }

Complex Complex::operator /(double c1)

{ r = c1/r; i = c1/i; return(*this); }

istream& operator >> (istream& in, Complex& c1)

{

cout << “\ninputkan bagian real: “;in >> c1.r;

cout << “inputkan bag imaginer: “;in >> c1.i;

return in;

}

ostream& operator << (ostream& out, Complex c1)

{

if (c1.i!=0.0 && c1.r!=0.0)

out << c1.r <<” + “<<c1.i<<“i”;

else if (c1.i != 0.0)

out << c1.i;

else

out << c1.r <<“i”;

return out;

}

int main()

{

Complex A(2,3), B, C;

cout << “Inputkan bil komplek: “; cin >> B;

cout << “\nBil komplek ke-1: “; cout << A << endl;

cout << “Bil komplek ke-2: “; cout << B << endl;

C = B+A;

cout << “\nPenjumlahan 1: “; cout << C << endl;

C = B+2;

cout << “Penjumlahan 2: “; cout << C << endl;

C = B+2.5;

cout << “Penjumlahan 3: “; cout << C << endl;

C = B-A;

cout << “\nPengurangan 1: “; cout << C << endl;

C = B-2;

cout << “Pengurangan 2: “; cout << C << endl;

C = B-2.5;

cout << “Pengurangan 3: “; cout << C << endl;

C = B*A;

cout << “\nPerkalian 1: “; cout << C << endl;

C = B*2;

cout << “Perkalian 2: “; cout << C << endl;

C = B*2.5;

cout << “Perkalian 3: “; cout << C << endl;

C = B/A;

cout << “\nPembagian 1: “; cout << C << endl;

C = B/2;

cout << “Pembagian 2: “; cout << C << endl;

C = B/2.5;

cout << “Pembagian 3: “; cout << C << endl;

system(“pause”);

}

This entry was posted in Algoritma & MOOP. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *