#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;
}
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