Class dan Objek Lanjutan C++

4 July 2010 at 22:48 (Algoritma & Metode OOP (C++))

Week 7 – Tugas Individu 7 – 0454T

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.
Jawaban Programnya:
// Program Static dalam class
#include <iostream>
using namespace std;

class contohStatic {
public:
static int n;
contohStatic () { n++; };
~contohStatic () { n–; };
};

int contohStatic::n=0;

int main () {
contohStatic a;
contohStatic b[5];
contohStatic * c = new contohStatic;
cout << a.n << endl;
delete c;
cout << contohStatic::n << endl;
system (“Pause”);
return 0;
}

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

Jawaban programnya:

// Program C++ dengan array object

#include <iostream>

#include <string.h>

#include <iomanip>

using namespace std;

class mhs {

private:

char NIM[10];

int SKS;

float IPK;

public:

mhs();

void InputData(char *, int, float);

void TampilData();

};

// definisi fungsi anggota

mhs::mhs()

{

strcpy(NIM, “”);

SKS=0;

IPK=0;

}

void mhs::InputData(char *nim, int sks, float ipk)

{

strcpy(NIM, nim);

SKS=sks;

IPK=ipk;

}

void mhs::TampilData()

{

cout<<“|”<<setw(5)<<SKS<<” |”;

cout<<setw(13)<<NIM<<” |”;

cout<<setw(5)<<IPK<<” |”<<endl;

}

int main()

{

mhs dataMhs[100];

char vnim[10];

int vsks;

float vipk;

bool keluar=false;

int menu,i=0,z=0;

while (keluar==false)//menampilkan menu utama

{

cout << “\nMENU UTAMA”;

cout << “\n1. Input Data Mahasiswa”;

cout << “\n2. Tampil Data Mahasiswa”;

cout << “\n3. Keluar”;

cout << “\n\nMasukan pilihan anda [1-3] :”;

cin >> menu;

if(menu==1)

{

// input data mahasiswa

cout << “\nInput NIM : “;

cin >> vnim;

cout << “\nInput jumlah SKS : “;

cin >> vsks;

cout << “\nInput IPK : “;

cin >> vipk;

dataMhs[z].InputData(vnim, vsks, vipk);

z++;

}

else if (menu==2)

{

// tampil data mahasiswa

cout << “\n==============================”;

cout<<“\n|”<<setw(7)<<“SKS |”;

cout<<setw(15)<<“NIM |”<<setw(7)<<“IPK |”<<endl;

cout << “==============================\n”;

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

{

dataMhs[i].TampilData();

}

cout << “==============================\n”;

}

else  if (menu=4)

{

keluar=true;

cout << “Terima Kasih\n”;

}

}

system (“pause”);

}

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.
Jawaban Programnya:
//Program Kamus
#include <iostream>
using namespace std;
class Kamus
{
private:
char Kata[20];
char KeteranganKata[40];
public:
Kamus();
void SetData(char *, char *);
void info();
};
//definisi fungsi anggota
Kamus::Kamus()
{
strcpy(Kata, “”);
strcpy(KeteranganKata, “”);
}
void Kamus::SetData(char *kt, char *kk)
{
strcpy(Kata, kt);
strcpy(KeteranganKata, kk);
}
void Kamus::info() {
cout << “Kata : ” << Kata << endl;
cout << “\nKeterangan Kata : ” << KeteranganKata << endl;
}
inline int BinarySearch(char kata[40][10],char key1[10], int low, int height)
{
int mid,idx=(-1);
while (low <= height)
{
char append1[16]=””;
char append2[16]=””;
mid = (int)(low + height)/2;
strcat(append1,kata[mid]);
strcat(append2,key1);
if (strcmp(append2,append1)==0)
{ idx=mid; return idx;}
if (strcmp(append2,append1)>0)
{ low = mid + 1; }
if (strcmp(append2,append1)<0)
{ height = mid – 1; }
}
return idx;
}

inline int SequentialSearch(int *X, int Key, int N)
{
int Index;
for (Index=0; Index<N; Index++)
if (Key == X[Index])
return(Index);
return(-1);
}

int main()
{
int N; //inisialisasi jumlah data kata yg diinput
char vkata[20];
char vketerangankata[40];
// deklarasi pointer
Kamus *dataKamus;
cout << “Inputkan jumlah Data Kamus: “; cin >> N;
dataKamus = new Kamus[ N ];
for (int i = 0; i < N; i++) {
cout << “Input Kata : “; cin >> vkata;
cout << “Input Keterangan Kata : “; cin >> vketerangankata;
dataKamus[i].SetData(vkata, vketerangankata);
}
cout <<“\n”;
/*
// display data kamus
for (int i = 0; i < N; i++){
cout << “Data kamus ke ” << (i+1) << ” :”;
cout << “\n”;
dataKamus[i].info();
}
*/
/*
char key1[10]=”123456789″;
int key;
char key2[6]=”12345″;
char kt[20][10]={“1″,”2”};
int val;
cout<<“Masukkan Kata      : “; cin>>key1;
val=BinarySearch(kt,key1, 0, 18);
if (val== (-1))
{ cout<<“\nData tidak ada”; }
else
{
cout<<“Kata        : “<<kt[val]<<endl;
cout<<“Keterangan Kata   : “<<keterangankata[val]<<endl;
}
*/
cout << “\n”;
system (“Pause”);
}

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.
Jawaban Programnya:
//Program Calculator
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class Calculator
{
private:
int Bil1, Bil2, Hasil;
public:
//int Hasil;
char Opt;
Calculator();
void tambah();
void kurang();
void kali();
void bagi();
void input(int, int,char);
friend void display(Calculator Cl);
};
Calculator::Calculator()
{
Bil1=Bil2=Hasil=0;
}
void Calculator::input(int bil1, int bil2, char opt)
{
Bil1=bil1;
Bil2=bil2;
Opt=opt;
}
void Calculator::tambah()
{
Hasil=Bil1+Bil2;
}
void Calculator::kurang()
{
Hasil=Bil1-Bil2;

}

void Calculator::kali()
{
Hasil=Bil1*Bil2;

}
void Calculator::bagi()
{
Hasil=Bil1/Bil2;
}
void display(Calculator Cl)
{
cout<<“Hasil dari: ” <<Cl.Bil1 << Cl.Opt<<Cl.Bil2<<“=”<<Cl.Hasil;
cout<<“\n”;
}

int main()
{
Calculator Clc ;
int bil1, bil2;
char opt;
cout<<“Masukan Bilangan pertama: “;
cin >> bil1;
cout<<“Masukan Bilangan kedua: “;
cin >> bil2;
cout<<“Masukan Operator Aritmatika [+,-,:,*]: “;
cin >> opt;
Clc.input(bil1,bil2,opt);

switch (opt)
{
case ‘+’:
Clc.tambah();
break;
case ‘-‘:
Clc.kurang();
break;
case ‘*’:
Clc.kali();
break;
case ‘/’:
Clc.bagi();
break;
//default :cout <<“A”;
}
display (Clc);
system (“Pause”);
}

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:

Jawaban Program:

#include<iostream>

using namespace std;

class NilaiAkhir

{

public:

int NAkhir;

class NilaiTeori

{

private:

int UAS, UTS, Tugas, HasilTeori;

public:

NilaiTeori();

void Hitung(int, int, int);

};

void NilaiTeori::Hitung(int uas, int uts, int tugas)

{

UAS=uas;

UTS=uts;

Tugas=tugas;

HasilTeori=(0.5*UAS) + (0.3*UTS) + (0.2*Tugas);

}

class NilaiPraktek

{

private:

int UAP, UTP, TM, Absen, HasilPraktek;

public:

NilaiPraktek();

void HitungPraktek(int, int, int, int);

};

void NilaiPraktek::HitungPraktek(int uap, int utm, int tm, int absen)

{

UAP=uap;

UTP=utp;

TM=tm;

Absen=absen;

HasilPraktek=(0.4*UAP) + (0.3*UTP) + (0.15*TM)+ (0.15*Absen);

}

NilaiAkhir();

HitungNA(int hasilteori, hasilpraktek);

};

NilaiAkhir::NilaiAkhir()

{

NAkhir=0;

}

void NilaiAkhir::HitungNA(int hasilteori)

{

NAkhir=(0.65*hasilteori)+(0.35*hasilpraktek);

cout <<“Nilai Akhir: “<<NAkhir;

}

int main()

{

int vuas, vuts, vtugas;

NilaiAkhir cNilaiAkhir;

vuas=80;

vuts=90;

vtugas=95;

cNilaiAkhir.Hitung()

system (“Pause”);

}

Save to PDF

1 Comment

  1. Bakri Megadata said,

    Thanks for postingannya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: