Praktikum S.Data ke-2


BismiAllah hirrahmanirrahim…..

Saya masih bingung dalam mengerjakan posttest praktikum struktur data yang ke-02..
Tetapi saya tetap berusaha semaksimal mungkin,,( hehe..)
Yang paling banyak menemukan eror itu di template..(huft…)
Menurut saya fungsi template tidak dapat berjalan di DEV C++. Saya
fikir hanya saya yang berpendapat begitu, tenyata eh tenyata ada beberapa teman yang juga sependapat, begitu..(ye ye ye…)
Ada teman juga yang bilang (posting di blognya..),
kalau menurut beberapa asprak, “template” itu hanya bisa jalan di program OS linux..
(ooww gt ya,, heeemm baru tahu saya)


Jadi saya mencoba menggunakan compiler DEV, dengan tidak mengaktifkan semua yang berkarakter “template”, yang ad di main juga di hapus. Tapi tetap tidak bisa,ternyata masih ada yang kurangan yaitu sebuah operator pada fungsi main() untuk memanggil operator overloading perkalian. Tetapi setelah ditelusuri, kok pada kelas Kompleks tidak terdapat fungsi overload perkalian…??
Nyoba – nyoba ajah tidak mengaktifkan fungsi pemanggilan dari main().
Masih saja tidak mau keluar outputnya.
Lalu saya mencoba dengan menggunakan compiler TURBO C++..
alhamduliAllah bisa, keluar ne outputnya..
nah seperti ini listing programnya..

    #include <iostream> 

    //template<class T>

    class Kompleks{

    friend class Operasi;

    friend ostream& 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&);

    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;

    return x;

    }

    Kompleks Kompleks::operator*(const Kompleks& m)

    {

    Kompleks x;

    x.a=a*m.a;

    x.b=b*m.b;

    return x;

    }

    //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”<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”<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&x)

    {

    cout<>x.a;

    cout<>x.b;

    return in;

    }

    //template<class T>

    class Operasi{

    public :

    Kompleks jumlah(const Kompleks&,const Kompleks&);

    Kompleks kali(const Kompleks&,const Kompleks&);

    Kompleks kurang(const Kompleks&,const Kompleks&);

    };

    //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 (){

    Kompleks x(2,3),y(4,-4),t;

    Operasi z;

    cout<<“\nMenggunakan cetak():\n”;

    x.cetak();

    cout<<“\nMenggunakan overloading :”<<x;

    cout<<“\nKonjugat :”<<-x<<endl;

    y.cetak();

    cout<<“\nPenjumlahan menggunakan methods :”;

    t=z.jumlah(x,y);

    <span style="color:#000000;"&࡯t;t.cet⡡k();cout<<“\nPenjumlahan menggunakan operator:”;

    t=x+y;‮lt;/spa>

    ࠀ<spad style=‪color:#⠸00000;"ࠤgt;coutࠬamp;lt;<x<<"+"<<y<<"="⠦amp;lt;‬amp;lt;⁾;

    cout<<“\nPerkalian menggunakan methods:”;

    t=z.kali(x,y);

    t.cetak();

    cout<&amr;lt;”\n⁸erkalia⡤ mengguakan op⡧rator:”‱

    t=x*y;

    <span style="color:#࠰00000;"…gt;cout<,amp;lt;ࡸ&lt″&lt9"*"&‹lt;&amp3lt;y&amx;lt;&am⡲;lt;"="⠬amp;lt;⠮amp;lt;⁼;

    t=x-y;

    ⠤lt;span
style=”ࡣolor:#0‰0000;”>cout&⡡mp;lt;&ࡡmp;lt;”⁜n”&ࡤt;&⁦t;x&࠳lt;&amp9lt;”-“&ࡩmp;lt;&⁣mp;lt;y.amp;lt;‬amp;lt;”=”<<t<<endl;

    cout<<n;

    cout<<n;

    return 0;

    }

OUTPUTNYA

pertanyaan posttest
1. Buatlah konstruktor dari kelas Kompleks dengan spesifikasi apabila dideklarasikan objek baru dengan satu parameter maka yang di assign adalah data member a
Penyelesaian : untuk membuat suatu konstruktor dari kelas dimana data yang dikenali adalah data member a
Class Kompleks    //nama kelas
{
Public :
Kompleks (int a); //konstuktor dari kelas dgn 1 parameter
}
2. Buatlah operator overloading * (lihat method kali dari kelas Operasi)
Penyelesaian : membuat operator overloading * dengan melihat contoh yang ada dalam program
Kompleks operator*(const Kompleks&); //overloading *
//Isi dari overloading *
Kompleks Kompleks::operator*(const Kompleks& m)

{

Kompleks x;

x.a=a*m.a;

return x;

}

About Sintata
Seek and Share Knowledge

Comments are closed.

%d bloggers like this: