WEB BLOG
this site the web

Prak 2 struktur data

NAMA : AL-KAUTSAR YULIAN ARTA
NIM : 09018271




#include <cstdlib>
#include <iostream>
class Operasi;
using namespace std;
//template <class T>
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&);
      private:
              int a;
              int b;
};
//template <class T>
    void Kompleks::cetak(){
    if(b>0) cout << "Bilangan Kompleks : " << a << "+" << b << "i";
    else cout << "Bilangan kompleks : " << a << b << "i";
    cout << endl;
    }
    //template <class T>
    Kompleks Kompleks::operator-(){
    Kompleks x;
    x.a=a;
    x.b=-b;
    return x;
    }
    //template <class T>
    Kompleks Kompleks::operator-(const Kompleks& m){
    Kompleks x;
    x.a=a-m.a;
    x.b=b-m.b;
    return x;
    }
    //template <class T>
    Kompleks Kompleks::operator+(const Kompleks& m){
    Kompleks x;
    x.a=a+m.a;
    x.b=b+m.b;
    }
    //template <class T>
    ostream& operator<<(ostream& out, const Kompleks& 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>1) out << '[' << x.a << "+" << x.b << "i" << ']';
    else if (x.b==-1) out << '[' << x.a << "-i" << ']';
    else out << '[' << x.a << x.b << ']';
    return out;
    }
    //template <class T>
    istream& operator>>(istream& in, Kompleks& x){
    cout << "Masukan bagian real     : ";
    in >> x.a;
    cout << "Masukan bagian imajiner : ";
    in >> x.b;
    return in;
    }
    //template <class T>
class Operasi
{
    public:
    void cetak();
    Kompleks jumlah(const Kompleks&, const Kompleks&);
    Kompleks kali(const Kompleks&, const Kompleks&);
    Kompleks kurang(const Kompleks&, const Kompleks&);
    private:
              int a;
              int b;
    };
void Operasi::cetak(){
     if(b>0) cout << "Bilangan Kompleks : " << a << "+" << b << "i";
    else cout << "Bilangan kompleks : " << a << b << "i";
    cout << endl;
}
    //template <class T>
    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 <class T>
    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 <class T>
    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(int argc, char *argv[])
{
    Kompleks x(2, 3), y(4, -4), t;
    Operasi 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 menggunakan method : ";
    t=z.kali(x, y);
    z.cetak();
    cout << "\nPerkalian menggunakan operator : ";
    //x*y;
    //ut << x << "*" << y << "=" << t;
    t-y;
    cout << "\n" << x << "-" << y << "=" << t << endl;
    Kompleks n;
    cin >> n;
    cout << n;
    system("PAUSE");
    return EXIT_SUCCESS;
}

0 komentar:

Posting Komentar

 

W3C Validations

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi dapibus dolor sit amet metus suscipit iaculis. Quisque at nulla eu elit adipiscing tempor.

Usage Policies