Minggu, 28 November 2010

Praktikum ke 6

#include <cstdlib>
#include <iostream>

using namespace std;

class Node{
friend class List;
friend ostream& operator<<(ostream&, const List&);
public:
Node(char& t, Node* p) : info(t), berikut(p){}
protected:
char info;
Node *berikut;
};

class List{
friend ostream& operator<<(ostream&, const List&);
public:
List() : kepala(0){}
~List();
void sisip(char t);
int hapus(char& t);
int kosong() {return (kepala == 0);}
void cetak();
protected:
Node* kepala;
Node* nodeBaru(char& t,Node* p)
{ Node* q = new Node(t,p); return q;}
};

ostream& operator<<(ostream& out, const List& k)
{
for (Node* p = k.kepala; p; p=p->berikut)
out << p->info << "->";
out << "*\n";
return out;
}

List::~List()
{
Node* temp;
for (Node* p = kepala; p;)
{
temp = p;
p = p->berikut;
delete temp;
}
}

void List::sisip(char t)
{
cout << "data "<< t << " masuk list :";
Node* p = nodeBaru(t,kepala);
kepala = p;
}

int List::hapus(char& t)
{
if (kosong()) return 0;
t = kepala->info;
Node* p = kepala;
kepala = kepala->berikut;
delete p;
return 1;
}

void List::cetak()
{
for (Node* p = kepala; p; p=p->berikut)
cout << p->info << "->";
cout << "*\n";
}

int main(int argc, char *argv[])
{
List x;
char data;
x.sisip('a');
cout << x;
x.sisip('b');
cout << x;
x.sisip('c');
cout << x;
x.sisip('d');
cout << x;
for (int i=0; i<4; i++){
x.hapus(data);
cout << data << " dihapus dari list :";
cout << x;
}
system("PAUSE");
return EXIT_SUCCESS;
}

Minggu, 24 Oktober 2010

Praktikum ke 4

#include <cstdlib>
#include <iostream>
#define maks 5

using namespace std;
class ArrayID {
      friend ostream& operator<<(ostream&, const ArrayID& x);
      friend istream& operator>>(istream&, ArrayID&);
      public:
             ArrayID();
             void cetak();
             void geser_kiri();
             void geser_kanan();
             private:
                     char A[maks];
                     };
                     ArrayID::ArrayID()
                     {
                     for(int i=0; i<maks; i++)
                             A[i] = '0';
                     // void ArrayID::cetak()
                    // {
                         // for(int i=0; i<maks; i++)
                         // cout << A[i] << "";
                        //  }
        ostream& operator<<(ostream& out, const ArrayID& x);
        {
               for (int i=0; i<maks; i++)
               cout << x.A[i]<<" ";
               cout << endl;
               return 0ut;
               }
         istream& operator>>(istream&, ArrayID&);
          { int posisi;
          cout << "mengisi array pada posisi ke :";
          in >> posisi;
          if(posisi > 0 && posisi <= maks) {
                    cout << "Masukan elemen array-nya :";
                    in >> x.A[posisi-1];
                    }
                    else
                    cout << "Anda memasukan posisi di luar range...";
                    return in;
                    }
           void ArrayID::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 ArrayID::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;
                }
                    
                    
main()
{
      ArrayID x;
      cout << "Array masih kosong :" << x;
      cin >> x;
      cout << "isi array saat ini : " << x;
      x.geser_kiri();
      cout << "isi arrat setelah digeser kiri : " << x;
      x.geser_kanan();
      cout << "isi array setelah digeser kekanan : " << x;
      return 0;
     
    system("PAUSE");
    return EXIT_SUCCESS;
}

Praktikum ke 5

#include <cstdlib>
#include <iostream>
#include "xcept.h"

using namespace std;
template<class T>
class Array1D
{
      friend ostream& operator<<(ostream&, const Array1D<T>&);
      public:
             Array1D(int size = 0);
             Array1D(const Array1D<T>& v);
             ~Array1D() {delete[] element;}
             T& operator [](int i) const;
             int Size(){return size;}
             Array1D<T>& operator=(const Array1D<T>& v);
             Array1D<T> operator+()const;
             Array1D<T> operator+(const Array1D<T>& v)const;
             Array1D<T> operator-()const;
             Array1D<T> operator-(const Array1D<T>& v)const;
             Array1D<T> operator*(const Array1D<T>& v)const;
             Array1D<T> operator+=(const T& x);
             Array1D<T>& ReSize (int sz);
             private :
                     int size;
                     T*element;
                     };
                     template<class T>
                     Array1D<T>::Array1D(int sz)
                     {
                     if (sz < 0)throw BadInitializers();
                     size =sz;
                     element = new T[sz];
                     }
                     template<class T>
                     Array1D<T>::Array1D(const Array1D<T>& v)
                     {
                     size = v.size;
                     element = new T[size];
                     for (int i = 0; i<size; i++)
                     element [i]= v.element[i];
                     }
                     template<class T>
                     T& Array1D<T>::operator[](int i) const
                     {
                     if (i<0 || i >=size)throw OutOfBounds();
                     return element[i];
                     }
                      template<class T>
                     Array1D<T>&Array1D<T>::operator=(const Array1D<T>& v)
                     {
                     if (this != &v){
                              size= v.size;
                              delete[] element;
                              element = new T[size];
                              for (int i=0 ;i<size; i++)
                              element[i]= v.element[i];
                              }
                              return*this;
                              }
                     template<class T>
                     Array1D<T>Array1D<T>::operator+(const Array1D<T>& v)const
                     {
                     if (size != v.size) throw SizeMismatch();
                     Array1D<T> w(size);
                     for (int i =0; i<size;i++)
                     w.element[i]=element[i]+ v.element[i];
                     return w;
                     }
                     template<class T>
                     Array1D<T>Array1D<T>::operator-(const Array1D<T>& v)const
                     {
                     if (size != v.size) throw SizeMismatch();
                     Array1D<T> w(size);
                     for (int i =0; i<size;i++)
                     w.element[i]=element[i]-v.element[i];
                     return w;
                     }
                     template<class T>
                     Array1D<T>Array1D<T>::operator-()const
                     {
                     Array1D<T> w(size);
                     for (int i =0; i<size;i++)
                     w.element[i]=-element[i];
                     return w;
                     }
                     template<class T>
                     Array1D<T>Array1D<T>::operator*(const Array1D<T>& v)const
                     {
                     if (size != v.size) throw SizeMismatch();
                     Array1D<T> w(size);
                     for (int i =0; i<size;i++)
                     w.element[i]=element[i]* v.element[i];
                     return w;
                     }
                     template<class T>
                     Array1D<T>Array1D<T>::operator+=(const T& x)
                     {
                     for (int i =0; i<size; i++)
                     element[i] + = x;
                     return* this;
                     }
                     template<class T>
                     ostream& operator<<(ostream& out, const Array1D<T>& x)
                     {
                     for (int i =0; i< x.size; i++)
                     out<<x.element[i]<<" ";
                     return out;
                     }
                     template<class T>
                     Array1D<T>Array1D<T>::ReSize (int sz)
                     {
                     if (sz<0) throw BadInitializers();
                     delete [] element;
                     size = sz;
                     element = new T[size];
                     return* this;
                     }
                   
                     #include < iostream.h>
                     #include "array1d.h"
                   
                     void main(void)
                     {
                          try {
                              Array1D<int>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 2 is"<<x<<endl;
                              z=(y+x)*y;
                              cout<<"(y+x)*y is"<<z<<endl;
                              cout<<"-(y+x)*y is"<<-z<<endl;
                              }
                              catch(...){
                                         cerr<<"An exception has occured"<<endl;}
                                         }

Praktikum ke 3

#include <cstdlib>
#include <iostream>
using namespace std;
class Bilangan {
friend ostream& operator<<(ostream&, const Bilangan&);
friend istream& operator>>(istream&, const 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<<”\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;
};
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 di-assign t\n”;
cout<<”Nilai s\n”<<s;
cout<<”Masukkan nilai-nalai objek d”;
cin>>d;
cout<<”setelah d + t => \n”<<d+t;
cout<<”Nalai d dinegatifkan\n”<<-d;
Bil_char ss;
cout<<”Nilai awal ss\n”<<ss;
system(“PAUSE”);
}

Sabtu, 16 Oktober 2010

Mengubah program dalam C-Style Menjadi Bentuk OOP

Dalam bentuk C-Style :


#include <cstdlib>
#include <iostream>
using namespace std;

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

{

int i,j;

int hasil;

cout << “Masukkan nilai i : “;

cin >> i;

cout << “Masukkan nilai j : “;

cin >> j;

hasil = i + j;

cout << “Hasil jumlah ” << i << ” + ” << j << ” = ” << hasil;

system(“PAUSE”);
return EXIT_SUCCESS;

}


Jika diubah kedalam bentuk OOP maka akan menjadi :


#include <cstdlib>
#include <iostream>

using namespace std;

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

public:
Hitung();
int Penjumlahan();

private:
int i,j;
int hasil;
};
 
Hitung::Hitung(){
i=0;
j=0;
}

istream& operator >> (istream& in, Hitung& A){
cout << “Masukkan nilai i : “;
in >> A.i;
cout << “Masukkan nilai j : “;
in >> A.j;
return in;
}
int Hitung::Penjumlahan(){
hasil = i+j;
return hasil;
}

ostream& operator << (ostream& out, const Hitung& A){
out << “Hasil jumlah ” << A.i << ” + ” << A.j << ” = ” << A.hasil;
return out;
}

int main(int argc, char *argv[])
{
Hitung nilai;
cin >> nilai;
nilai.Penjumlahan();
cout << nilai;


system(“PAUSE”);
return EXIT_SUCCESS;
}

Coba dijalankan, kedua program diatas pasti akan memberikan output yang sama. ^^
koment jo lali mas dab :D

Tahap ke OOP (compatibility mode)

  • Versi satu
 
#include <iostream.h>
#include <conio.h>

void main() {
    int A[10] = {1,2,3,4,5,6,7,8,9,10};
    int n = 10;
    cout << "Nilai array asal : ";
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[i] << endl;
    getch();
    cout << "Setelah dikurangi 1 menjadi : " << endl;
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[i]-1 << endl;       
    getch();
    cout << "Nilai array dicetak kembali" << endl;
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[i] << endl;
    cout << "Ternyata tidak berubah. Perhatikan perbedaannya " << endl;
    getch();
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[i]-- << endl;       
    cout << "Nilai array dicetak kembali" << endl;
    for (int i=0; i<n; i++)
        cout << "Nilai indeks ke-[" << i << "] adalah " << A[i] << endl;       
    getch();
}

Kamis, 14 Oktober 2010

Tugas Praktikum 2

Nama : wahyudi
Nim    : 09018121

#include <cstdlib>
#include <iostream>
   
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&);
                 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<classT>
         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"<<']';
                              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&x)
    {
             cout<<"masukkan bagian real : ";
             in>>x.a;
             cout<<"masukakn bagian imajiner : ";
         in>>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);
         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<<endl;
         Kompleks n;
         cin>>n;
         cout<<n;
         system("PAUSE");
         return 0;
         }

Rabu, 29 September 2010

Selamat Datang!

Blog ini hanya lah tempat iseng buat bermain dan mengisi waktu!
tidak ada yang istimewa!
tidak ada hal yang perlu di banggakan mungkin buat teman - teman!
akan tetap lebih ber arti kala teman - teman memberi komentar mengenai blog ini dan semoga dengan komentar komentar ataupun solusi - solusi teman - teman semua dapat membuat blog ini menjadi hampir bisa dibanggakan bahkan mungkin menghampiri istimewa buat ku sendiri.. karena ini suatu kebanggaan bagi diriku.

Awal yang buruk bukan suatu kesalahan!
Awal sedikit sekali mempengarui ahir!

Karena yang kita laluilah yang akan mempengaruhi...
Pelan pelan asal terus ber usaha...

Sedikit tentang saya!
Saya adalah orang yang sulit dimengerti, bukan orang yang selalu menuruti aturan,
saya tidak suka akan keharusan...kata harus hanya untuk urusan ahirat,, dunia aku katakan perset*n dengan kata harus... karena di dunia ini gak ada kepastian,, tidak ada sesorang pun mahluk di dunia ini yang bisa memberi kepastian! semua perbuatan itu tergantung akan kondisi dan situasi ( ini paling utama buatku )
berfikir kritis bukan hal yang salah, menyikapi suatu masalah dengan betul - betul mungkin akan memberi kenyamanan saat melakukan hal itu....saya hanya menjalani hidup ini dengan apa yang aku bukan apa yang dia ataupun mereka,
dalam bermasyarakat tidak ada kata harus, tetapi ada kode etik dan norma2 yang harus di ketahui,, dalam bahsa jawa " unggah ungguh "
di dalam kehidupan yang komplek ini saya melakukan hal yang tidak merugikan orang lain, karena kita mungkin juga tau bagaimana rasanya kala kita di rugikan.. aku yo reti nek kwe mesti ra gelem to dab??? hehehehehe......
dan saat ini sampai ke alam sekarat masih berusaha " bisa mengerti orang lain "
dalam hal ini mungkin susah dilakukan, apalagi bertemu dengan orang yang egois, mungkin orang egois tu buang aja ke laut yak ^^
bila anda termasuk orang egois ber arti itu masalah, karena orang egois itu biasanya berimbas ke
Tidak mau tau,
Menang sendiri,
Sulit mengerti orang lain,
Dan paling buruk, Dibenci oleh orang banyak!
Tetapi bukan ber arti Egois itu terus salah,,, masih tetap melihat situasi dan kondisi,,,
akan tetapi pada dasarnya EGOIS itu jelek ^^

Mungkin saya EGOIS, mungkin saya Tidak bisa mengerti orang lain, Mungkin saya bukan siapa2, Mungkin saya hanya sampah!
Tapi mungkin ada satu hal yang bisa membuat sampah itu bisa melihat jauh kedepan dengan baik karena sampah itu masih ingin Belajar menjadi lebih baik ;)

Terima kasih
muach :P

Coding Game NIM semester 1

Coding waktu aku semester 1 study C++

walo dapet nilai buruk tapi gak papa lah aku post di sini ^^


#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>

#define NUMROWS 4

class Move
{
public:
    int from;
   int to;

   Move(int a, int b)
   { from = a; to = b;}
};

static void display(int*);
static int Sum(int*);
void play();
void initialize(int*, Move&);
int recur(int*, int);
int evaluate(int*);
int skill = 7;


int main()
{
int skill_choice;
cout << "********************************************************************************\n";
cout << "*------------------------------------------------------------------------------*\n";
cout << "*                  Ini adalah game  classic dari Nim.                          *\n";
cout << "*   Oleh Kelompok yang terhebat :                                              *\n";
cout << "*                 - Wahyudi                 (09018121)                         *\n";
cout << "*                 - Yunita tri hernawati    (09018135)                         *\n";
cout << "*                 - Rosary indah dewi       (09018168)                         *\n";
cout << "*  Setidaknya yang kami tahu. Ini permainan untuk memaksa anda untuk berfikir  *\n";
cout << "*  siapa yang mengambil potongan terahir akan kalah                            *\n";
cout << "*  dari potongan-potongan dari SATU DAN HANYA SATU baris per putaran.          *\n";
cout << "*  Kemudian komputer akan berfikir dan mengambil giliranya                     *\n";
cout << "*  game ini sangatlah sulit.. selamat mencoba.                                 *\n";
cout << "*------------------------------------------------------------------------------*\n";
cout << "********************************************************************************\n\n\n";

do{
cout << "Pilih level:\n";
cout << "(0) Pemula\n";
cout << "(1-3) Sedang\n";
cout << "(4) sangat pintar (tapi akan membutuhkan waktu untuk berfikir)\n";
cin >> skill_choice;
} while(skill_choice >4 || skill_choice < 0);
skill = skill_choice*2 +1;

while(1){
int again;
play();
cout << "\n\n\nmencoba kembali:\n";
cout << "(1) Ya\n(2) Tidak\n";
cin >> again;
if(again != 1) break;
}
}


void play()
{
int sum;


int row[4] = {0, 5, 7, 9};
int whichrow, howmany;

display(row);


while(1)
{


cout << "Baris yang akan Anda ambil dari potongan-potongan (1-3): ";
cin >> whichrow;
while(whichrow < 1 || whichrow > 3 || row[whichrow] <=0)
 {
 cout << "Tidak cocok, mohon ulang kembali (1-3): ";
 cin >> whichrow;
 }
sum = Sum(row);
cout << "Berapa banyak yang akan Anda ambil dari baris  " << whichrow;
cout << "? ";
cin >> howmany;
while(sum - howmany < 1 || row[whichrow] - howmany < 0 ||
      howmany < 1)
{
cout << "Anda mencoba mengambil terlalu banyak atau terlalu sedikit!\n";
cout << "Ambil lagi: ";
cin >> howmany;
}

row[whichrow] = row[whichrow] - howmany;
display(row);


if(Sum(row) == 1)
    {
       cout << "Kamu menang dan selamat anda akan mendapatkan rasa senang (ha ha)!!!";
      return;
   }


Move move(0, 0);


initialize(row, move);


cout << "Giliranku, aku akan mengambil " << move.to << " Dari baris ";
cout << move.from << "." << endl;
row[move.from] = row[move.from] - move.to;
display(row);


if(Sum(row) == 1)
{
    cout << "Saya menang!!!  Rasahin loe !\n";
   return;
}

}
  return;
}



static void display(int* rows)
 {
 rows++;
 cout << "|--------------------------------------------------------|\n\n";
 for(int i = 1; i < NUMROWS; i++)
  {
   if(i==1) cout << "        ";
   if(i==2) cout << "    ";
  for(int j = 1; j <= *rows; j++)
    cout << "   |";
  rows++;
  cout << "\n\n";
  }
  cout << "|--------------------------------------------------------|\n\n";
 }


static int Sum(int* row )
{
    int total = 0;
    row++;
    for(int i = 1; i < NUMROWS; i++)
     {
     total+=*row;
     row++;
     }
    return total;
}


void initialize(int* array, Move& move)
{
   Move& m = move;

  
   int best = -1, depth = 1;


   int row[4];
   for(int i = 0; i < 4; i++)
   {
       row[i] = *array;
      array++;
   }
 
   array= array-3;



    for(int j = 1; j <= 3; j++)
   {
       int thisrow = row[j];
       for(int i = 1; i <= thisrow; i++)
      {
          int value;
         row[j]--;
         value = recur(row, depth);
         if(value > best)
         {
             best = value;
            m.from = j;
            m.to = i;
         }
      }
      row[j] = *array;
      array++;
   }
}

int recur(int* array, int depth)
{

 int best = -1;
 int worst = 101;


   int row[4];
   for(int i = 0; i < 4; i++)
   {
       row[i] = *array;
      array++;
   }

   if(Sum(row) == 0)
   {
     
      cout << "Pergerakan dilarang\n";
       return 50;
   }


   if(Sum(row) == 1)
   {
     if(depth%2 == 1)
     return 100;
    else return 0;
   }


   array= array-3;


   if(depth == skill)
   {
       int val = evaluate(row);

      if(depth%2 == 1)
          return 100-val;
      else
          return val;
    }

 

 
    for(int j = 1; j <= 3; j++)
   {
       int thisrow = row[j];
       for(int i = 1; i <= thisrow; i++)
      {
          int value;
         row[j]--;

       
         if(Sum(row)== 0) break;

       
         value = recur(row, depth+1);

         if(value > best)
         {
             best = value;
         }
         if(value < worst)
         {
             worst = value;
         }


      }
      row[j] = *array;
      array++;
   }

 
   if(depth%2 == 1)
   {
       return worst;
   }
   else
   {
         return best;
   }

}


int evaluate(int* array)
{
    int total, high=0, low=10;


   int row[4];
   for(int i = 0; i < 4; i++)
   {
       row[i] = *array;
      array++;
   }

   total = Sum(row);

   for(int i = 1; i <=3; i++)
   {
       if(row[i] < low)
          low = row[i];
      if(row[i] > high)
          high = row[i];
   }

    if(total == 1)
       return 100;

    if(high==1 && low ==1)
       return 2;

    if(total == 2)
       return (99);

   if(high==2)
   {
        if(total==4)
          return total;
      else return(100-total);
   }

   if(low==0)
   {
       if(total==(2*high))
          return total;
      else return 100-(total*2);
   }

   if(high==3)
   {
       if (total==6) return 10;
      else return(100-total);
   }


   return 50;

}
" itu diatas coding game di semester 1 "
maaf agak tidak enak dilihat :D

Senin, 27 September 2010

Sekedar Celoteh Dariku!

 
Apabila kita mempunyai pacar...tidak jarang ada keluhan seperti.
 
1. Pacarku tidak bisa mengerti aku atau EGOIS!
2. Pacarku tidak ada kala aku butuh!
3. Cemburuan
4. Posesif

Solusi ;
 
1. Pacar tidak bisa mengerti/EGOIS, itu adalah kata yang kurang buat anda, pada dasarnya suatu hubungan adalah komunikasi itu hal paling utama, jadi sempatkanlah anda untuk berbicara dengan dia dan katakanlah sesuatu hal yang ingin diketahuai olehnya.


2. Pacar tidak ada kala anda butuh, balik ke topik NO 1, " dan Mencoba mengerti " memang mencoba mengerti orang lain itu memang bukan hal yang mudah, akan tetapi coba anda perhatikan anda sendiri, dan anda mencoba berfikir apabila itu anda, itu salah satu hal yang saya gunakan apabila saya ingin mengerti orang lain.. dan orang lain itu bukanlah anda, allah menciptakan mahluk di dunia ini begitu beragam dan berbeda - beda, dan itu adalah bukti bahwa anda tidak bisa membuat dia seperti apa yang anda harap! ( dan ini juga akan lebih baik bila anda terapkan di persoalan NO 1 )

3.Pacar anda cemburuan??, itu bagus,,karena kemungkinan dia tidak ingin kehilangan anda, coba fikir apabila dia diamkan saja anda apabila anda melakukan sesuatu hal salah, tapi dia diam....bagaimana perasaan anda?? hhhmmmm.......

4. Posesif, tak beda hal dengan cemburuan..kemungkinan terbesar dia berperilaku posesif karena dia tidak ingin kehilangan anda... jadi coba mengerti maksud kenapa dia lakukan itu,,bukan mengerti apa yang dia lakukan/katakan!



Itu celoteh dari ku ^^!
dan ini saya,,bukan berarti sebuah keharusan dan suatu hal yang benar!
memang pada dasarnya hal yang benar itu adalah sama..
" sebenarnya baik/benar itu adalah sama, seseorang penJAHAT yang paling kejam pun tidak akan terima kala dia di jahati, dan menuntut ada kebaikan seseorang walaupun dengan cara yang salah "
 
ayo teman2 bila ada keluah atau tambahan bisa coment..dan mudah2an aku bls... ^^

cari tahu tentang saya..mungkin akan lebih mudah :)

Belajar ^^



Belajar Bukan Suatu Kesalahan!!
Dan mungkin kesalahan paling buruk dalam dunia ini adalah mengeluh karena kajadian yang lalu..

suatu hal yang tak ingin aku dengar dari orang tercintaku adalah mengeluh karena hal yang telah dilakukan dengan kesadaran!

Berubah total itu hal mustahil...
menginginkan dia menjadi seperti apa yang anda harap hanya akan membuat keruh suasana...
dalam bermasyarakat ada berbagai macam sifat,kalakuan serta sudut pandang yang berbeda!
kita tidak akan bisa merubah orang tersebut seperti apa yang kita ingin..
tapi hal yang baik adalah mencoba mengerti akan seseorang yang berada di samping kita..
Blog temen :
zeld blogoblog
coh Blog
Salham Ilham blog
Satuhu Suseta blog
Titis Ade Pamungkas blog
Agung blog
Indra blog
Helloo :)
jangan lupa gan comentnya..kasih cendol ya gan ^^ makasih gan uda mau berkunjung.. semoga tuhan YME memberkati anda :)

Teman