Senin, 10 Januari 2011

Prak 6 ( Responsi s"data)

#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<<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<5;i++){
    x.hapus(data);cout<<data<<"dihapus dari list :";
    cout<<x;
    x.cetak();
}
system("PAUSE");
return EXIT_SUCCESS;
}

Sabtu, 01 Januari 2011

prak 10

#include <cstdlib>
#include <iostream>

using namespace std;

struct node {
int item;
node *left;
node *right;
};

class BinaryTree{
public :
BinaryTree();
~BinaryTree();
void destroy_tree(node *leaf);
void insert(int data);
node *search(int data);
void printInOrder();
void printPreOrder();
void printPostOrder();

private :
void insert(int data, node *leaf);
node *search(int key, node *leaf);
void inOrder(node *root);
void preOrder(node *root);
void postOrder(node *root);
node *root;
};

BinaryTree::BinaryTree(){
root = NULL;
}

BinaryTree::~BinaryTree(){
destroy_tree(root);
}

void BinaryTree::destroy_tree(node *leaf)
{
if(leaf!=NULL)
{
destroy_tree(leaf->left);
destroy_tree(leaf->right);
delete leaf;
}
}

void BinaryTree::insert(int data, node *leaf){
if(data< leaf->item)
{
if(leaf->left!=NULL)
insert(data, leaf->left);
else
{
leaf->left=new node;
leaf->left->item=data;
leaf->left->left=NULL;
leaf->left->right=NULL;
}
}
else if(data>=leaf->item)
{
if(leaf->right!=NULL)
insert(data, leaf->right);
else
{
leaf->right=new node;
leaf->right->item=data;
leaf->right->left=NULL;
leaf->right->right=NULL;
}
}

}

node *BinaryTree::search(int data, node *leaf)
{
if(leaf!=NULL)
{
if(data==leaf->item)
return leaf;
if(data<leaf->item)
return search(data, leaf->left);
else
return search(data, leaf->right);
}
else return NULL;
}

void BinaryTree::insert(int data){
if(root!=NULL)
insert(data, root);
else
{
root=new node;
root->item=data;
root->left=NULL;
root->right=NULL;
}
}

node *BinaryTree::search(int data)
{
//return search(data, root);
}

void BinaryTree::inOrder(node *root){
if(root!=NULL){
inOrder(root->left);
cout << root->item << " ";
inOrder(root->right);
}
}

void BinaryTree::printInOrder(){
inOrder(root);
}

void BinaryTree::preOrder(node *root){
if(root!=NULL){
cout << root->item << " ";
preOrder(root->left);
preOrder(root->right);
}
}

void BinaryTree::printPreOrder(){
preOrder(root);
}

void BinaryTree::postOrder(node *root){
if(root!=NULL){
postOrder(root->left);
postOrder(root->right);
cout << root->item << " ";
}
}

void BinaryTree::printPostOrder(){
postOrder(root);
}

int main()
{
BinaryTree a ;
a.insert(65);
a.insert(5);
a.insert(70);
a.insert(3);
a.insert(10);
a.insert(66);

cout << "INORDER " << " : ";
a.printInOrder();
cout << endl;
cout << "PREORDER " << " : ";
a.printPreOrder();

cout << endl << "POST ORDER " << " : ";
a.printPostOrder();

system("PAUSE");
return 0;
}

prak 9

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

using namespace std;

class Que{
      friend ostream& operator<<(ostream&, const Que&);
public:
       Que();
       int penuh(int);
       int kosong(int);
       void cetak();
       void geser_kanan();
       void enque(char);
       char deque();
private:
        char Q[maks];
        int banyak;
};

ostream& operator<<(ostream& out, const Que& x){
         out<<"\nIsi queue sebanyak : "<<x.banyak<<"\nyaitu : ";
         for(int i=x.banyak-1;i>=0;i--)
         out<<x.Q[i]<<" ";
         cout<<endl;
         cout<<endl;
}

Que::Que(){
           banyak=0;
           for(int i=0;i<maks;i++)
           Q[i]='0';
}

int Que::penuh(int x){
    return x==maks ? 1 : 0;
}

int Que::kosong(int x){
    return x==0 ? 1 : 0;
}

void Que::cetak(){
     cout<<"\nIsi queue : ";
     for(int i=0;i<banyak;i++)
     cout<<Q[i]<<" ";
}

void Que::enque(char x){
     cout<<"Elemen : "<<x<<" masuk antrian";
     if(penuh(banyak)) cout<<"\n\nqueue penuh\n";
     else if(Q[0]=='0'){
          Q[0]=x;
          banyak++;
          }
     else{
          int temp=0;
          while(Q[temp]>x)temp++;
          if(banyak != temp)
                    for(int i=banyak;i>=temp;i--)
                            Q[i+1]=Q[i];
                    Q[temp]=x;
                    banyak++;
                    }
}

char Que::deque(){
     char temp=Q[--banyak];
     cout<<"\nDequeue elemen --> "<<temp;
     Q[banyak]='0';
     return temp;
}
int main(int argc, char *argv[])
{
    Que p;
    p.enque('b');
    cout<<p;
    p.enque('d');
    cout<<p;
    p.enque('c');
    cout<<"\nsisipkan c antara b d ";
    cout<<p;
    p.enque('e');
    cout<<"\nsisipkan e dibelakang d ";
    cout<<p;
    p.enque('a');
    cout<<"\n sisipkan a didepan b";
    cout<<p;
    char x=p.deque();
    cout<<"\n\nelemen yang di-dequeue "<<x<<endl;
    cout<<p;
    cout<<" degueue elemen \n";
    p.deque();
    cout<<" degueue elemen:\n";
    p.deque();
    cout<<" degueue elemen:\n";
    p.deque();
    cout<<" degueue elemen:\n";
    p.deque();
    cout<<p;
     system("PAUSE");
    return EXIT_SUCCESS;
}

prak 7

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

class Stack{
      friend ostream& operator<<(ostream&, const Stack&);
public:
       Stack();
       int penuh(int);
       int kosong(int);
       void cetak();
       void push(char);
       char pop();
private:
        char A[maks];
        int banyak;
};

ostream& operator<<(ostream& out, const Stack& s)
{
         cout<<"\nIsi stack:";
         for(int i=0; i<s.banyak; i++)
         out << s.A[i] << " ";
}

Stack::Stack(){
               banyak=0;
               for(int i=0; i<maks; i++)
               A[i]='0';
}
int Stack::penuh(int s){
    return s==maks? 1:0;
}
int Stack::kosong(int s){
    return s==0? 1:0;
}
void Stack::cetak(){
     cout <<"\n Isi Stack :";
     for(int i=0; i<banyak; i++)
     cout << A[i] << " ";
}
void Stack::push(char x)
{
     cout <<"\n Elemen Masuk :"<<x;
     if (penuh(banyak)) cout<<"Stack kelebihan";
     else if(A[0]=='0'){
          A[0]=x;
          banyak++;
     }
     else {
          for (int i=banyak; i>=0; i--)
          A[i+1]=A[i];
          A[0]=x;
          banyak++;
    }
}
char Stack::pop()
{
     cout <<"\n Pop stack, elemen yang di-pop:"<<A[0];
     char temp=A[0];
     for (int i=0; i<banyak; i++)
     A[i]=A[i+1];
     A[banyak]='0';
     banyak++;
     return temp;
}

int main()
{
    Stack stack;
    for (char c='a'; c<'e'; c++){
    stack.push(c);
    stack.cetak();
}
    char p=stack.pop();
    stack.cetak();
    cout<<"\n\nCetak pakai overloading:"<<stack;
    system("PAUSE");
    return 0;
}

prak 6

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

class ArrayID{
friend ostream& operator<<(ostream&, const ArrayID&);
friend istream& operator>>(istream&, ArrayID&);
public:
ArrayID();
void cetak();
void geser_kiri();
void geser_kanan();
void hapus_elemen();
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++)
out << x.A[i] << " ";
out << endl;
return out;
}
istream& operator>>(istream& in, ArrayID& x){
int posisi;
for(int posisi=1; posisi<=maks; posisi++){
cout << "Mengisi array pada posisi ke : ";
in >> posisi;
if(posisi>0 && posisi<=maks){
cout << "Masukan element arraynya : ";
cin >> 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;
}
void ArrayID::hapus_elemen(){
int posisi;
cout << "Pilih posisi array : ";
cin >> posisi;
if(posisi>0 && posisi<=5)
A[posisi-1]='0';
else cout << "Diluar jangkauan...";
}
int main(int argc, char *argv[])
{
ArrayID x;
cout << "Array masih kosong : " << x;
cin >> x;
cout << "Isi array saat ini : " << x;
x.geser_kiri();
cout << "Isi Array setelah geser ke kiri : " << x;
x.geser_kanan();
cout << "Isi Array setelah geser ke kanan : " << x;
cout << "Menghapus Elemen Array\n";
x.hapus_elemen();
cout << "Isi array setelah di hapus : " << x;
system("PAUSE");
return EXIT_SUCCESS;
}

Jumat, 29 Oktober 2010

Prak 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(T s=0, T t=0): a(s), b(t){}
             void cetak ();
             Kompleks operator - ();
             Kompleks operator - (const Kompleks<T>&);
             Kompleks operator + (const Kompleks<T>&);
      private:
              T a;
              T b;
              };
template<class T>
void Kompleks<T>::cetak(){
     if(b>0) cout<<"Bilangan kompleks : "<<a<<"+"<<b<<"i";
     else cout<<"Bilangan komleks : "<<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,const 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.b=(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;
    t=x-y;
    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;   
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

Rabu, 27 Oktober 2010

Tugas S'data Antrian dengan Stack

Zulkarnain (09018289)
Tugas Sdata Array Dinamis menggunakan Stack,.  ada dua operasi dalam Stack yaitu :
-          Push
-          Pop
Void Stack::Push(int x){
Cout<<” Masukkan Elemen : “<<x;
for (int i=banyak; i>=0 ;i--)
                A[i+1]=A[i];
                A[0]=x;
                banyak++;
             }
Ket :
Pertama kita  inputkan indek ke 1 dgn A maka indek ke1 akan terisi dgn A.  dan jika kita ingin inputkan indeks berikutnya dengan variable B-E maka perlu melihat melihat kondisi status puncak stack maka elemen akan bertambah 1, jadi Indeks ke1 akan maju ke indek k2 dan  inputan yang baru kita inputkan akan mengisi ke indek ke1 misal kita inputkan B maka akan terlihat sepertidi bawah ini
A
B      A
Begitu seterusnya
char stack::pop(){
     cout<<"\npop stack, elemen yang dihapus :";
     int temp=banyak;
     for (int i=0; i<banyak; i++)
     A[i]=A[i+1];
     A[banyak]=0;
     banyak--;
    return temp;
}
Ket :
jika anda ingin mengurangi  1 variable dari banyaknya indeks maka diperlukan pengecekan terhadap kondisi stack, jika indeks kosong maka  tidak  dapat melakukan operasi ini. . misalnya anda akan mengurangi indek ke1 dgn variable E indeks ke 1 akan kosong. Dan variable yang ada akan mengisi kekosongan itu.
E        D             C             B          A
D       C             B             A
Begitu seterusnya

Entri Populer