Rabu, 06 Oktober 2010

postest 2.pratikum sdata...

#include <iostream>

template <class T>
class Kompleks{
    friend class Operasi<T>;
    friend ostream& operator<<(ostream&, const Kompleks<T>&);
    friend istream& operator>>(isteam&, 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> 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 <classT>
        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, Lompleks<T>& x)
         {
                  cout<<"Masukkan bagian real:";
                  in>>x.a;
                  cout<<"Masukan 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>&);
            
      private:
              int x, y, z;
             };
            
      template<class T>
      Kompleks<T> operator<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> operator<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> operator<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[])
{
    int n;
    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 method:";
    t=z.jumlah(x,y);
    t.cetak();
    cout<<"Penjumlahan menggunakan operator:";
    t=x+y;
    cout<<x<<"+"<<y<<"="<<t;
    cout<<"\nPerkalian menggunkan method:";
    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;
    return 0;
}     

Tidak ada komentar:

Posting Komentar