Minggu, 31 Oktober 2010

Praktikum 2

#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(Ts=0, Tt=0):a(s),b(t){}
void cetak();
kompleks operator-();
kompleks operator-(const kompleks<T>&);
kompleks operator+(const kompleks<T>&);

private:
Ta;
Tb;

};



template <class T>
void kompleks<T>::cetak(){
if(b>0)cout<<"Bilangan Kompleks: "<<a<<"+"<<b<<"i";

else cout<<"Bilangan kompleks: "<<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, 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.a=(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;
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;
return 0;



system("PAUSE");
return EXIT_SUCCESS;
}


Praktikum ke 3

#include<cstdlib>
#include<iostream>
#include<conio.h>
using namespace std;

class Bilangan{
friend ostream& operator<<(ostream&, const Bilangan&);
friend istream& operator>>(istream&, Bilangan&);

public:
Bilangan(int a0=0,float b0=0.0):a(a0),b(b0){}
void banding_int(const Bilangan&, const Bilangan&);
Bilangan& operator=(const Bilangan&);
Bilangan operator+(const Bilangan&)const;
Bilangan operator-()const;

protected:
int a;
float b;
};



ostream& operator<<(ostream& out, const Bilangan& x){
out << "Bagian integer : " <<x.a<< endl;
out << "Bagian float : " <<x.b<< endl;

return out;
}



void Bilangan::banding_int(const Bilangan& x, const Bilangan& y ){
if (x.a>y.b) cout << x.a <<" ::x lebih besar dari " <<y.a<<"::y";
else cout <<x.a<<"::x.a lebih kecil dari " <<y.a<<"::y";
}



Bilangan& Bilangan::operator=(const Bilangan& x)
{
a=x.a;
b=x.b;
return*this;
}



istream& operator>>(istream& in, Bilangan& x)
{
cout<< "\nMasukkan bagian integer :";
in>> x.a;
cout<< "\nMasukkan bagian float :";
in>> x.b;
return in;
}


Bilangan Bilangan::operator+(const Bilangan& x) const
{ Bilangan cc;
cc.a=a+x.a;
cc.b=b+x.b;
return cc;
}

Bilangan Bilangan::operator-() const

{ Bilangan x;
x.a=-a;
x.b=-b;
return x;
}

class Bil_char : public Bilangan {
friend ostream& operator<< (ostream&, const Bil_char&);
public:
Bil_char(int a0=0, int b0=0, char ch='x'):Bilangan(a0,b0), c(ch) {}

private:

char c;

};



class Bil_float : public Bilangan {
friend ostream& operator<< (ostream&, const Bil_float&);
public:
Bil_float(int a0=0, float b0=0.0, float cf=0.0):Bilangan(a0,b0), c(cf) {}
void banding_float(const Bil_float&, const Bil_float&);
private:
float c;

};//turunan bil float

void Bil_float::banding_float(const Bil_float& x, const Bil_float& y ){

if (x.a>y.b) cout << x.a <<" ::x lebih besar dari " <<y.a<<"::y";

else cout <<x.a<<"::x.a lebih kecil dari " <<y.a<<"::y";

}



ostream& operator<< (ostream& out, const Bil_char& x)

{

out << "Bagian integer : " <<x.a<< endl;

out << "Bagian float : " <<x.b<< endl;

out << "Bagian char : " <<x.c<< endl;

return out;

}

ostream& operator<< (ostream& out, const Bil_float& x)

{

out << "Bagian integer : " <<x.a<< endl;

out << "Bagian float : " <<x.b<< endl;

out << "Bagian float turunan : " <<x.c<< endl;

return out;

}



int main(){
Bilangan s, t(-2,3.14),d;
cout << " Nilai awal s\n " << s;
cout << " Nilai awal t dari deklarasi\n "<<t;
s=t;
cout<<"setelah s di-assign t\n";
cout<<"nilai s\n"<<s;
cout << " Masukkan nilai-nilai objek d";
cin>> d ;
cout << "\nSetelah d + t => \n" <<d+t;
cout << "nilai d dinegatifkan \n"<< -d;
Bil_char ss;
cout << " Nilai awal ss \n"<< ss;
Bil_float ff;
cout<<"nilai awal ff\n"<<ff;
system("PAUSE");
return EXIT_SUCCESS;
}


Praktikum ke 4

#include <cstdlib>
#include <iostream>
#define maks 5
using namespace std;
class array1d{

  friend ostream& operator<<(ostream&, const array1d&);
friend istream& operator>>(istream&, array1d&);

public:

  array1d();
  void cetak();
  void geser_kiri();
  void geser_kanan();
  void hapus();
private:

char a[maks];

};



array1d::array1d(){

for(int i=0;i<maks;i++)

a[i]='0';

}



void array1d::cetak(){

for(int i=0;i<maks;i++)

cout<<a[i]<<"";

}



ostream& operator<<(ostream& out, const array1d& x){

for(int i=0;i<maks;i++)

cout<<x.a[i]<<"";

cout<<endl;

return out;

}



istream& operator>>(istream& in, array1d& x){

int posisi;

cout<<"Mengisi array pada posisi ke: ";

in>>posisi;

if(posisi>0&&posisi<=maks){

cout<<"Masukkan elemen array nya: ";

in>>x.a[posisi-1];

}

else

cout<<"Anda memasukkan posisi di luar range...\n";

return in;

}



void array1d::geser_kanan(){

int n=maks;

int temp=a[n-1];

for(int i=n-1;i>=0;i--)

a[i+1]=a[i];

a[0]=temp;

}



void array1d::geser_kiri(){

int n=maks;

int temp=a[0];

for(int i=0;i<n;i++)

a[i]=a[i+1];

a[n-1]=temp;

}

void array1d::hapus(){

int pil;

cout<<"Elemen yang akan di hapus: ";

cin>>pil;

int n=maks;

for(int i=pil-1;i<n;i++){

a[i]=a[i+1];

}

a[n-1]='0';

}


int main(int argc, char *argv[])

{

array1d x;

cout<<"Array masih kosong: "<<x;

cin>>x;

cout<<"Isi Array saat ini: "<<x;

x.geser_kiri();

cout<<"Isi Array setelah digeser kiri: "<<x;

x.geser_kanan();

cout<<"Isi Array setelah digeser kanan: "<<x;

x.hapus();

cout<<"Isi Array setelah dihapus: "<<x;

system("PAUSE");

return EXIT_SUCCESS;

}