9 October 2010

Praktikum Struktur Data Minggu Ke-2 "posttest"

PROGRAM:


#include<iostream>

using namespace std;

//template
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
void Kompleks::cetak(){
if(b>0)cout<<"bilangan kompleks:"<<<"+"<<<"i";
else cout<<"bilangan kompleks:"<<<<"i";
cout<
}

//template
Kompleks Kompleks::operator-(){
Kompleks x;
x.a=a;
x.b=-b;
return x;
}

//template
Kompleks Kompleks::operator-(const Kompleks& m){
Kompleks x;
x.a=a-m.a;
x.b=b-m.b;
return x;
}

//template
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
ostream& operator<<(ostream& out, const Kompleks& x){
if(x.b==0) out<<'['<<<']';
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<<'['<<<"i"<<']';
else if(x.a==0 && x.b<-1)out<<'['<<<"i"<<']';
else if(x.b==1)out<<'['<<<"+"<<"i"<<']';
else if(x.b>0)out<<'['<<<"+"<<<"i"<<']';
else if(x.b==-1)out<<'['<<<"-i"<<']';
else out<<'['<<<<"i"<<']';

return out;
} 

//template 
istream& operator>>(istream& in, Kompleks&x)
{
cout<<"MASUKKAN BAGIAN REAL : ";
in>>x.a;
cout<<"MASUKKAN BAGIAN IMAJINER : ";
in>>x.b;
return in;
}

//template 
class Operasi{
public :
Kompleks jumlah(const Kompleks&,const Kompleks&);
Kompleks kali(const Kompleks&,const Kompleks&);
Kompleks kurang(const Kompleks&,const Kompleks&);
};

//template 
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 
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 
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 :"<
cout<<"\nKonjugat :"<<-x<
y.cetak();
cout<<"\nPenjumlahan menggunakan methods :";
t=z.jumlah(x,y);
t.cetak();
cout<<"\nPenjumlahan menggunakan operator:";
t=x+y;
cout<<<"+"<<<"="<
cout<<"\nPerkalian menggunakan methods:";
t=z.kali(x,y);
t.cetak();
cout<<"\nperkalian menggunakan operator:";
t=x*y;
cout<<<"*"<<<"="<
t=x-y;
cout<<"\n"<<<"-"<<<"="<<
cout<
Kompleks n;
cin>>n;
cout<

system("PAUSE");
return 0;
} 

OUTPUT: 
selamat mencobanya... :)

0 comments: