Rabu, 27 Oktober 2010

Praktikum SDATA 2 , rabu jam 09.00

#include <iostream.h>
template <class T>
class kompleks {
 friend class operasi;
 friend ostream& operator<<(ostream&, const kompleks<T>&) ;
 friend istream& operator>>(istream&, kompleks<T>&) ;
public :
 kompleks(T s=0, T +=0): a(s), b(+){};
 void cetak();
 kompleks operator-();
 kompleks operator-(const kompleks<T>&);
 kompleks operator+(const kompleks<T>&);
private :
 T a;
 T b;
};

template <class T>
void kompleks<T>::cetak()
{
 if(b>0)cout<<"bilangan kompleks : " << a<<"+"<<b<<"i";
 else cout<<"bilangan kompleks : " <<a<<b<<"i";
 cout<< endl;
 }

template <class T>
kompleks<T>kompleks<T>::operator-()
{
kompleks x;
x.a=a;
x.b=-b;
return x;
}

template <class T>
kompleks<T>kompleks<T>::operator-(const kompleks<T>& m)
{
kompleks x;
x.a=a - m.a;
x.b=b - m.b;
return x;
}

template <class T>
kompleks<T> kompleks<T>::operator+(const kompleks<T>& m)
{
kompleks x;
x.a = a + m.a;
x.b = b + m.b;
return x;
}



template <class T>
ostream& operator<<(ostream& out, const kompleks<T>& 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<T>& x)
{
cout<<"masukkan bagian real : ";
in >>x.a;
cout<<"masukkan bagian imaginer : ";
in>>x.b;
return in;
}

template <class T>
class operasi {
public :
 kompleks<T>jumlah(const kompleks<T>&,const kompleks<T>&);
 kompleks<T>kali(const kompleks<T>&,const kompleks<T>&);
 kompleks<T>kurang(const kompleks<T>&,const kompleks<T>&);
};

template <class T>
kompleks<T> operasi<T> :: jumlah(const kompleks<T>& m, const kompleks<T>& n)
{
kompleks<T>temp;
temp.a=m.a + n.a;
temp.b=m.b + n.b;
return temp;
}

template <class T >
kompleks<T>operasi<T>::kurang(const kompleks<T>& m, const kompleks<T>& n)
{
kompleks<T>temp;
temp.a=m.a - n.a;
temp.b=m.b- n.b;
return temp;
}

template <class T >
kompleks<T>operasi<T>::kurang(const kompleks<T>& m, const kompleks<T>& n)
{
kompleks<T>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<int>x(2.3),y(4,-4),+;
 operasi<int> z;
 cout<<"menggunakan cetak():";x.cetak();
 cout<<"menggunakan overloading : "<< x;
 cout<<"konjugat : " << -x;
 y.cetak();
 cout<<"\npenjumlahan mengunaka"<<y<<"="<<t;
 cn methid ";
 t=z.jumlah(x.y);
 t.cetak();
 cout<<"penjumlahan menggunakan operator ";
 t=x+y;
 cout<<x<<"+out<<"\perkalian menggunakan method : ";
 t=z.kali(x.y);
 t.cetak();
 cout<<"perkalian menggunakan operator : ";
 t=x*y;
 cout<<x<<"*"<<y<<"="<<t<<endl;
 kompleks<int>n;
 cin>>n;
 cout<<n;
 return 0;
}

0 komentar:

Posting Komentar

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More