Oleh: adjist | 10 Oktober 2010

POSTTEST S-DATA KE-2

Assalamu’alaikum Wr.Wb

Posttest praktikum S-Data yang ke-2 ini merupakan program < template > yang dapat menggabungkan 2 type data yang berbeda agar dapat berjalan dalam 1 program. Contahnya type data < char > dengan < float >. Program ini aslinya di jalankan di SO linux jadi pada saat di jalankan di SO XP banyak kesalahan sehingga harus di benarkan. Program ini dapat saya selesaikan dengan berdiskusi, Karena saya masih belajar dalam mencari kesahalan dan membenarkannya. Saya sangat berterima kasih kepada teman-teman yang telah banyak membantu dalam menyelesaikan posttest S-Data yang ke-2 ini.

“Source code < tamplate >”

#include <iostream>

using namespace std;

//template<class T>

class Kompleks{

friend class Operasi;

friend ostream& operator<<(ostream&, const Kompleks&);

friend istream& operator>>(istream&, Kompleks&);

public:

Kompleks(int s=0, int t=0):a(s),b(t){}

void cetak();

Kompleks operator-();

Kompleks operator-(const Kompleks&);

Kompleks operator+(const Kompleks&);

Kompleks operator*(const Kompleks&);

private:

int a;

int b;

};

//template<class T>

void Kompleks::cetak(){

if(b>0)cout<<”bilangan kompleks:”<<a<<”+”<<b<<”i”;

else cout<<”bilangan kompleks:”<<a<<b<<”i”;

cout<<endl;

}

//     template<class T>

Kompleks Kompleks::operator-(){

Kompleks x;

x.a=a;

x.b=-b;

return x;

}

//  template<classT>

Kompleks Kompleks::operator-(const Kompleks& m){

Kompleks x;

x.a=a-m.a;

x.b=b-m.b;

return x;

}

//     template<class T>

Kompleks Kompleks::operator+(const Kompleks& m){

Kompleks x;

x.a=a+m.a;

x.b=b+m.b;

return x;

}

Kompleks Kompleks::operator*(const Kompleks&m)

{

Kompleks x;

x.a=a*m.a;

x.b=b*m.b;

return x;

}

//     template<class T>

ostream& operator<<(ostream& out, const Kompleks& x){

if(x.b==0) out<<’[‘<<x.a<<‘]‘;

else if(x.a==0 && x.b==1)out<<’[‘<<“i”<<‘]‘;

else if(x.a==0 && x.b==-1)out<<’[‘<<“-i”<<‘]‘;

else if(x.a==0 && x.b>1)out<<’[‘<<x.b<<“i”<<‘]‘;

else if(x.a==0 && x.b<-1)out<<’[‘<<x.b<<“i”<<‘]‘;

else if(x.b==1)out<<’[‘<<x.a<<“+”<<“i”<<‘]‘;

else if(x.b>0)out<<’[‘<<x.a<<“+”<<x.b<<“i”<<‘]‘;

else if(x.b==-1)out<<’[‘<<x.a<<“-i”<<‘]‘;

else out<<’[‘<<x.a<<x.b<<“i”<<‘]‘;

return out;

}

//template <class T>

istream& operator>>(istream& in, Kompleks&x)

{

cout<<”MASUKKAN BAGIAN REAL : “;

in>>x.a;

cout<<”MASUKKAN BAGIAN IMAJINER : “;

in>>x.b;

return in;

}

//template <class T>

class Operasi{

public :

Kompleks jumlah(const Kompleks&,const Kompleks&);

Kompleks kali(const Kompleks&,const Kompleks&);

Kompleks kurang(const Kompleks&,const Kompleks&);

};

//template <class T>

Kompleks Operasi::jumlah(const Kompleks&m, const Kompleks&n)

{

Kompleks temp;

temp.a=m.a+n.a;

temp.b=m.b+n.b;

return temp;

}

//template <class T>

Kompleks Operasi::kurang(const Kompleks&m, const Kompleks&n)

{

Kompleks temp;

temp.a=m.a-n.a;

temp.b=m.b-n.b;

return temp;

}

//template <class T>

Kompleks Operasi::kali(const Kompleks&m, const Kompleks&n)

{

Kompleks temp;

temp.a=(m.a*n.a)-(m.b*n.b);

temp.b=(m.a*n.b)-(m.b*n.a);

return temp;

}

int main (){

Kompleks x(2,3),y(4,-4),t;

Operasi z;

cout<<”\nMenggunakan cetak():\n”;

x.cetak();

cout<<”\nMenggunakan overloading :”<<x;

cout<<”\nKonjugat :”<<-x<<endl;

y.cetak();

cout<<”\nPenjumlahan menggunakan methods :”;

t=z.jumlah(x,y);

t.cetak();

cout<<”\nPenjumlahan menggunakan operator:”;

t=x+y;

cout<<x<<”+”<<y<<”=”<<t;

cout<<”\nPerkalian menggunakan methods:”;

t=z.kali(x,y);

t.cetak();

cout<<”\nperkalian menggunakan operator:”;

t=x*y;

cout<<x<<”*”<<y<<”=”<<t;

t=x-y;

cout<<”\n”<<x<<”-”<<y<<”=”<<t<<endl;

cout<<endl;

Kompleks n;

cin>>n;

cout<<n;

system(“PAUSE”);

return 0;

}

 

NB :

1.     Terimakasih teman-teman yang telah mau membagi ilmu dan membantu saya dalam mempelajari mata kuliah S-DATA. Thank’s for aLL. Semoga amal ibadah kalian akan membawa berkah dikemudian hari. Amin.

2.    Saya sangat senang apabila ada temand yang menambahkan komentar terhadap hasil posttest saya, saya sangat menunggu keritikan teman-teman. Karena saya yakin ini masih ada kesalahan. Sekian dan terimakasih.

 

Wassalamu’alaikum Wr.Wb


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

%d blogger menyukai ini: