flag counter

Jumat, 29 Oktober 2010

Array Dinamis

contoh program yang mengunakan data member array dinamis
#include <cstdlib>
#include <iostream>
#include <conio.h>
//#include 'xcept.h'

using namespace std;
//template <class T>
class Array1D {
     
      friend ostream& operator<<(ostream&, const Array1D&);
      friend istream & operator >> (istream&, Array1D&);
     
public :
       void geser_kanan();
       Array1D ( int size= 0);
       Array1D ( const Array1D& v);
       ~Array1D (){delete [] element;}
       int& operator [] (int i) const;
       int Size() {return size;}
       Array1D & operator = (const Array1D& v);
       Array1D  operator + ()const;
       Array1D  operator + (const Array1D& v)const;
       Array1D  operator - ()const;
       Array1D  operator - (const Array1D& v) const;
       Array1D  operator * (const Array1D& v) const;
       Array1D & operator+=(const int& x);
     Array1D & ReSize(int sz);
      
private :
       int size ;
        int * element ;
};

//template <class T>
Array1D::Array1D(int sz)
{
 if ( sz < 0);
 size = sz;
 element = new int[sz];
}

//template <class T>
Array1D::Array1D(const Array1D& v)
{
 size = v.size;
 element =new int[size]; // get space
 for (int i=0; i<size; i++)// copy element
 element[i] = v.element[i];
}

//template<class T>
 int& Array1D::operator[](int i)const
{
   if(i<0||i>=size); //throw OutOfBounds();
   return element[i];
}
//template <class T>
 Array1D & Array1D::operator =(const Array1D& v)
 {
   if (this != &v){
            size= v.size;
            delete[] element;
            element = new int[size];
            for (int i=0; i< size; i++)
            element [i] = v.element[i];
            }
            return *this;
            }
           
 //template<class T>
 Array1D Array1D::operator +(const Array1D& v) const
 {
  if (size != v.size); //throw SizeMismatch();
  Array1D w(size);
  for(int i=0; i < size; i++)
  w.element[i] = element[i] + v.element [i];
  return w;
}

//template<class T>
Array1D Array1D::operator-(const Array1D& v) const
{
 if (size!= v.size); //throw SizeMistach();
 Array1D w(size);
 for (int i=0; i<size; i++)
 w.element[i] = element [i]- v.element [i];
 return w;
}

//template<class T>
Array1D Array1D::operator-() const
{
 Array1D w(size);
 for (int i=0; i <size; i++)
 w.element[i] = -element[i];
 return w;
}

//template<class T>
Array1D Array1D::operator*(const Array1D& v)const
{
 if (size != v.size);//throw SizeMistach();
 Array1D w(size);
 for(int i=0; i < size; i++)
 w.element[i] = element [i] * v.element[i];
 return w;
}

//tempalte<class T>
Array1D& Array1D::operator+=(const int& x)
{
 for (int i=0; i < size; i++)
 element [i] += x;
 return *this;
}

//tempalte<class T>
ostream& operator <<( ostream& out, const Array1D& x)
{
 for (int i=0; i<x.size; i++)
 out << x.element[i] << " ";
 return out;
}

//template<class T>
Array1D& Array1D::ReSize(int sz)
{
 if (sz < 0);//throw BadInitializer();
 delete [] element;
 size = sz;
 element = new int [size];
 return *this;
}
                       

int main(int argc, char *argv[])
{
    try {
        Array1D X(10),Y,Z;
        for (int i=0; i<10; i++)
        X[i] = i;
        cout <<"X[3]=" << X[3] << endl;
        cout <<"X is " << X << endl;
        Y=X;
        cout <<"Y is " << Y << endl;
        X +=2;
        cout <<"X incremented by 4 is " << X << endl;
        Z = (Y+X)*Y;
        cout << "(Y + X)* Y is" << Z << endl;
        cout << "-(Y + X)* y is" << -Z << endl;
        }
        catch (...) {
              cerr << "An execption has occurred" << endl;}
getch();

return EXIT_SUCCESS;


              }

   

Array statis

Array adalah struktur data yang mengandung type data yang mempunyai type sama.
suatu array adalah sekelompok memori yang berhubungan. Array mempunyai nama dan type yang sama.
implementasi kelas Array statis
Untuk mengetahui konsep array statis, perhatikan program dibawah ini.
kelas array1d merupakan tipe data abstrak untuk array statis. perhatikan pada bagian data member kita akan mengamati prilaku array yang menyimpan data yang bertipe char.

#include
#include
#define maks 5
using namespace std;
class array1d{
friend ostream& 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 <>(istream& in, array1d& x){
int posisi;
for(int posisi=1; posisi<=maks; posisi++){
cout <> posisi;
if(posisi>0 && posisi<=maks){
cout <> x.A[posisi-1];
}
else
cout <=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 posisi;
cout <> posisi;
if(posisi>0 && posisi<=5)
A[posisi-1]='0';
else cout << "Diluar jangkauan…";
}
int main(int argc, char *argv[])
{
array1d x;
cout << "Array masih kosong : "<> 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;
cout << "\nFERNANDYA RISKI HARTANTRI / 09018173\n" << endl;
system("PAUSE");
return EXIT_SUCCESS;
}

konstruktor dan template

konstruktor adalah

1.Fungsi khusus yang namanya sama dengan nama class.
2.Digunakan untuk inisialisasi.
3.Dipanggil otomatis pertama kali saat instansiasi objek.
4.Tidak mengembalikan nilai.
5.Konstruktor dapat dioverloading.
berikut ini adalah contoh program yang menggunakan konstruktor.
#include
#include
using namespace std;
//template
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
void Kompleks::cetak(){
if(b>0)cout<<”bilangan kompleks:”<<a<<”+”<<b<<”i”;
else cout<<”bilangan kompleks:”<<a<<b<<”i”;
cout<<endl;
}
// template
Kompleks Kompleks::operator-(){
Kompleks x;
x.a=a;
x.b=-b;
return x;
}
// template
Kompleks Kompleks::operator-(const Kompleks& m){
Kompleks x;
x.a=a-m.a;
x.b=b-m.b;
return x;
}
// template
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
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
istream& operator>>(istream& in, Kompleks&x)
{
cout<>x.a;
cout<>x.b;
return in;
}
//template
class Operasi{
public :
Kompleks jumlah(const Kompleks&,const Kompleks&);
Kompleks kali(const Kompleks&,const Kompleks&);
Kompleks kurang(const Kompleks&,const Kompleks&);
};
//template
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
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
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 Method :”;
t=z.jumlah(x,y);
t.cetak();
cout<<”\nPenjumlahan Menggunakan Operator:”;
t=x+y;
cout<<x<<”+”<<y<<”=”<<t;
cout<<”\nPerkalian Menggunakan Methods:”;
t=z.kali(x,y);
t.cetak();
cout<<”\nPerkalian Menggunakan Operator:”;
t=x*y;
cout<<x<<”*”<<y<<”=”<<t;
t=x-y;
cout<<”\n”<<x<<”-”<<y<<”=”<<t<<endl;
cout<>n;
cout<<n;
system(“PAUSE”);
return EXIT_SUCCESS;
}

Senin, 11 Oktober 2010

INHERITANCE dalam C++

#include <cstdlib>
#include <iostream>

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.a)cout<<x.a<<"::x lebih besar dari"<<y.a<<"::y";
else cout<<x.a<<"::x 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<<"Masukkan 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;
};

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;
}

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

{
   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<<"Setelah d+t=.\n"<<d+t;;
   cout<<"Nilai d dinegatifkan\n"<< -d;
   Bil_char ss;
   cout<<"Nilai awal ss\n"<<ss;

    system("PAUSE");
    return EXIT_SUCCESS;
}

Jumat, 08 Oktober 2010

membuat game dengan c++

contoh game yang menggunakan bahasa c++

#include "soal.h"

  int main(){
     char pil;
     goto header;

     Soal a;

     header:{
     for (int i=0; i<=15; i++){
       cout << " ";
     }
     cout <<"JAWABLAH PERTANYAAN-PERTANYAAN BERIKUT DENGAN BENAR"<< endl;;
     cout <<endl;
     cout <<endl;}

     a.Soal1();

     cout << "  Mau mengulangi permainan...??? 'y/t' : ";
     cin >> pil;
     switch (pil)
     {
       case 'y' : clrscr();
                  goto header;
                  a.Soal1();
                  break;
       case 't' : a.~Soal();
                  break;
       default  : cout << "pilih 'y' atau 't'";
                  break;
     }
  getche();
  return 0;
 }
hasil outputnya seperti dbawah ini






contoh program kalkulator menggunakan c++
#include<conio.h>
#include<iostream.h>

class calculator
{
private:
float angka_1,angka_2,hasil;
char operasi,eksekusi;
public:
void masukan ();
void proses ();
void keluaran ();
};

void calculator::masukan ()
{
cout<<"Masukkan Angka pertama = "; cin>>angka_1;
cout<<"Jenis Operasi perhitungan * / + - = "; cin>>operasi;
cout<<"Masukkan Angka kedua = "; cin>>angka_2;
}

void calculator::proses ()
{
if(operasi=='*')
{
hasil=angka_1*angka_2;
}
else if(operasi=='/')
{
hasil=angka_1/angka_2;
}
else if(operasi=='+')
{
hasil=angka_1+angka_2;
}
else if(operasi=='-')
{
hasil=angka_1-angka_2;
}
}

void calculator::keluaran()
{
cout<<"Tekan tombol (=) "; do { cin>>eksekusi;
if(eksekusi=='=')
{
cout<<"Hasil perhitungan = "<<<"Anda tidak menekan tombol sama dengan (=) "; } }while(eksekusi!='='); } void main() { class calculator jadi; char pil; do { clrscr(); jadi.masukan(); jadi.proses(); jadi.keluaran(); cout<<"Apakah anda ingin mengulang? (y or n) "; cin>>pil;
}while(pil=='y'||pil=='Y');
}