jam digital

Rabu, 13 Oktober 2010

Praktikum Sdat2

    #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

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More