#include <cstdlib>
#include <iostream>
using namespace std;
template<class T>
class Kompleks{
friend class Operasi<T>;
friend ostream& operator<<(ostream&,const Kompleks<T>&);
friend istream& operator>>(istream&,Kompleks<T>&);
public:
Kompleks(T s=0, T t=0): a(s), b(t){}
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 komleks : "<<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,const Kompleks<T>&x){
cout<<"Masukkan bagian real : ";
in>>x.a;
cout<"Masukkan bagian imajiner : ";
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>::kali(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(int argc, char *argv[])
{
Kompleks<int> x(2,3),y(4,-4),t;
Operasi<int> z;
cout<<"Menggunakan cetak () : "x.cetak();
cout<<"Menggunakan overloading : "<<x;
cout<<"Konjugat : "<<-x;
y.cetak();
cout<<"\nPenjumlahan menggunakan methods : ";
t=z.jumlah(x,y);
t.cetak();
cout<<"Penjumlahan menggunakan operator : ";
t=x*y;
cout<<x<<" * "<<y<<" = "<<t;
t=x-y;
cout<<"\nPerkalian menggunakan methods : ";
t=z.kali(x,y);
t.cetak();
cout<<"Perkalian menggunakan operator : ";
t=x*y;
cout<<x<<" * "<<y<<" = "<<t;
t=x-y;
cout<<"\n"<<x<<" - "<<y<<" = "<<t<<endl;
Kompleks<int>n;
cin>>n;
cout<<n;
system("PAUSE");
return EXIT_SUCCESS;
}
Jumat, 29 Oktober 2010
Langganan:
Posting Komentar (Atom)
Entri Populer
-
#include <iostream.h> template <class T> class Array1D{ friend ostream& operator<<(ostream&,const Array1...
-
Zulkarnain (09018289) Tugas Sdata Array Dinamis menggunakan Stack,. ada dua operasi dalam Stack yaitu : - Push - Pop ...
-
#include <cstdlib> #include <iostream> using namespace std; class Node{ friend class List; friend ostream&...
-
#include <iostream.h> class Bilangan{ friend ostream& operator<<(ostream&,const Bilangan&); friend is...
-
#include <cstdlib> #include <iostream> using namespace std; struct node { int item; node *left; node *right; }; class...
-
#include <cstdlib> #include <iostream> using namespace std; template<class T> class Kompleks{ friend class Op...
-
#include <cstdlib> #include <iostream.h> #define maks 5 class Stack{ friend ostream& operator<<(ostream...
-
#include <cstdlib> #include <iostream> #define maks 5 using namespace std; class ArrayID{ friend ostream& operator<...
-
#include <cstdlib> #include <iostream> #define maks 5 using namespace std; class Que{ friend ostream& operator...
-
#include <cstdlib> #include <iostream> #define maks5 using namespace std; class Array1D{ friend ostream& opera...
Tidak ada komentar:
Posting Komentar