Archive for the ‘Struktur data’ Category

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

 

Hasil diskusi kelompok LINK LIST

Posted: Desember 4, 2010 in Struktur data

 

TDA

Instan :

Menambahkan node pada awal link list

Operasi :

Buat_node(char x) : membuat node baru

Tambah_elemen_awal() : menambahkan pada awal link list(elemen baru menjadi elemen pertama/first node)

Cetak() : menampilkan hasil setelah ditambahkan

 

 

Instan :

Menambahkan node pada akhir link list

Operasi :

Buat_node(char x) : membuat node baru

Tambah_elemen_akhir() : menambahkan pada belakang link list(elemen baru menjadi elemen yang terakhir)

Cetak() : menampilkan hasil setelah ditambahkan

program :

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;

Node*sebelum;
};

Menambahkan elemen di depan dengan info ‘5’ :

Node *baru;
baru->info = ’5’;
baru->berikut  = firstNode;
firstNode<-sebelum = baru;
baru<-sebelum=NULL;
firstNode = baru;
Menambahkan elemen di belakang dengan info ‘20’ :
Baru->info = ’20’;
lastNode->berikut = baru;
baru->berikut = NULL;
baru<-sebelum = lastNode;
lastNode = baru;
Menambahkan elemen di belakang dengan info ‘25’ :
Baru->info = ’25’;
lastNode->berikut = baru;
baru->berikut = NULL;
baru<-sebelum = lastNode;
lastNode = baru;
Terimakasih!!!!!!!!

Stack

Posted: Oktober 30, 2010 in Struktur data

Stack

-Stack ataut umpukan adalah suatu  stuktu rdata yang penting dalam
pemrograman
-BersifatLIFO (Last In First Out)
-Benda yang terakhir masuk kedalam stack akan menjadi benda
pertama yang dikeluarkan dari stack

Operasi-operasi/fungsiStack
•Push Untuk menambahkan item pada tumpukan paling atas
•Pop Untuk mengambil item teratas
•Clear Untuk mengosongkan stack
•IsEmpty Untuk memeriksa apakah stack kosong
•IsFull Untuk memeriksa apakah stack sudah penuh

•Retreive Untukmendapatkan nilai dari item teratas

Fungsi Push
•Untuk memasukkan elemen kestack, selalu menjadi elemen teratas stack
•Tambah satu(increment) nilai top of stack terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack masih belum penuh, kemudian isikan nilai baru kestack berdasarkan indekstop of stack setelah ditambah satu(diincrement)

void push (char d[10]){

tumpuk.top++;

strcpy(tumpuk.data[tumpuk.top],d);

}

FungsiPop
•Untuk mengambil elemen teratas dari stack.
•Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil terlebih dahulu, baru didecrement nilai top of stack sehingga jumlah elemen stack berkurang

void pop() {

printf (“data tang terambil =%s\n”.tumpuk.data[tumpuk.top]);

tumpuk.top–;

}

FungsiIsEmpty
•Untuk memeriksa apakah stack masih kosong?
•Dengan cara memeriksa top of stack, jika masih-1 maka berarti stack masih kosong!

int isEmpty(){

if ( tumpuk.top==-1)

return 1;

else

return 0;

}

FungsiIsFull
•Untuk memeriksa apakah stack sudah penuh?
•Dengan cara memeriksa top of stack, jika sudah sama denganMAX_STACK-1 maka full, jika belum(masih lebih kecil dari MAX_STACK-1)  maka belumf ull

int isfull(){

if ( tumpuk.top==MAX_STACK-1)

return 1;

else

return 0;

}

posttes praktikum 5

Posted: Oktober 30, 2010 in praktikum, Struktur data

POSTTES 5

#include <iostream.h>
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);
Array1D<T>& geser_kanan();
Array1D<T>& geser_kiri();
private:
int size;
T*element;
};
template <class T>
Array1D<T>::Array1D(int sz)
{
size =sz;
element=new T[sz];
}
template <class T>
Array1D<T>::Array1D(const Array1D<T>& v)
{
size = v.size;
element=new T[size]; // get space
for (int i=0;i<size;i++)// copy elements
element[i]=v.element[i];
}
template <class T>
T& Array1D<T>::operator[](int i)const
{
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
{
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
{
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
{
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)
{
delete[]element;
size=sz;
element=new T[size];
return *this;
}
template <class T>
Array1D<T>&Array1D<T>::geser_kanan()
{
int n = size;
int temp = element[n-1];
for (int i=n-1; i>=0; i–)
element[i+1]=element[i];
element[0]=temp;
}
template <class T>
Array1D<T>&Array1D<T>::geser_kiri()
{
int n=size;
int temp = element[0];
for(int i=0; i<n; i++)
element[i]=element[i+1];
element[n-1]=temp;

}

int main()
{
int X(10),Y,Z;
for (int i=0; i<10; i++)
X=i;
cout<<” X = “<< X <<endl;
cout<<” X is “<< X <<endl;
Y=X;
cout<<” Y is “<< Y <<endl;
Y += 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;
cout<<”setelah digeser kekanan :”<<(Y-X)*Y<<endl;
cout<<”setelah digeser kekiri  :”<<(Y+X)<<endl;
system(“PAUSE”);
}

sudah bisa di compile!! tetapi masih kurang!!!!

Preetest praktikum ke 4

Posted: Oktober 20, 2010 in praktikum, Struktur data

1. modifikasilah operaator overloading input >> agar saat memasukan elemen yang baru

elemen array dalam keadaan terturut

jawab:

istream& operator>>(istream& in, Array1D& x){
int posisi;
for (int posisi=1; posisi<=5; posisi++){
cout<<“masukkan nilai array posisi ke- : “;
in>>x.posisi;
if(posisi >= 0 && posisi <= 5){cout<<“masukkan elemen arraynya :”;
in>>x.A[posisi-1];
}
}
return in;
}

2.buatlah method hapus elemen tertentu dari array. mamun sebelum dihapus ,user ditanya lebih dahulu elemen mana yang akan dihapus dengan menampilkan keadaan array pada saat itu

Jawab:
void Array1D::hapus_elemen(){
int posisi;
cout<<“Pilih indeks berapa yg akan di hapus : “;
cin>>posisi;
if(posisi>0 && posisi<=5)
A[posisi-1]=’O’;
else cout<<“indeks yg anda masuukan salah karena indek hanya terdiri dari 1 – 5\n”;
}

inilah jawaban saya!!! jika salah mohon maaf dan koreksinya trimakasih

Stack (tumpukan)

Posted: Oktober 20, 2010 in Struktur data

Hasil diskusi kelompok tentang stack(tumpukan)

Contoh stack:

Mengambil piring dirumah makan “bima sakti”

1.    Piring dicuci dan di lap satu persatu

2.    Dan ditumpuk satu persatu dari bawah ke atas

3.    Pelanggan  mengambil piring dari atas ke bawah

kesimpulan : jadi  piring yang terakhir ditumpuk atau yang berada paling atas adalah piring yang akan diambil pelanggan pertama dan sebaliknya piring yang pertama ditumpuk  adalah piring yang terakhir diambil oleh pelanggan.

Contoh yang bukan stack:

Makan di “bima sakti”

1.    pelanggan pertama mengambil makanan

2.    Pelanggan kedua mengambil makanan

3.    dan pelanggan berikutnya

4.    pelanggan makan dengan lahabnya

5.   pelanggan selesai makan secara acak

kesimpulan : jadi pelanggan yang pertama mengambil makanan dan pelanggan yang kedua dan seterusnya setelah selesai menyantap makanan akan keluar secara acak atau pelanggan yang pertama belum tentu keluar duluan

Praktikum 2

Posted: Oktober 11, 2010 in praktikum

Pertest

Class komplek;

Public:

Kompleks(int a);

#include <iostream>

 

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

* mohon koreksina*

 

Posttes

using namespace std;

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;

};

 

void Kompleks::cetak(){

if(b>0)cout<<“bilangan kompleks:”<<a<<“+”<<b<<“i”;

else cout<<“bilangan kompleks:”<<a<<b<<“i”;

cout<<endl;

}

 

Kompleks Kompleks::operator-(){

Kompleks x;

x.a=a;

x.b=-b;

return x;

}

 

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;

}

 

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

{

Kompleks x;

x.a=a*m.a;

x.b=b*m.b;

return x;

}

 

 

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;

}

 

 

istream& operator>>(istream& in, Kompleks&x)

{

cout<<“MASUKKAN BAGIAN REAL : “;

in>>x.a;

cout<<“MASUKKAN BAGIAN IMAJINER : “;

in>>x.b;

return in;

}

 

 

class Operasi{

public :

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

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

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

};

 

 

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;

}

 

 

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;

}

 

 

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;

}

*insaallah bisa di compile.mohon koreksinya*

PRETES Praktikum 1

Posted: Oktober 1, 2010 in praktikum, Struktur data

1.Apa komponen class?
2.Apa constructor, public,private,data member?

Jawban:
1.

operator overloading
data member
fungsi
method

2.

Constructor : fungsi yang otomatis di eksekusi saat suatu objek dibuat
Public : dapat diakses dari mana saja dimana objek terlihat
Private : dapat diakses hanya oleh anggota pada kelas yang sama dan friends mereka,
tidak dapat diakses kelas atau program lain di luar kelasnya.
Data member : data yang dideklarasikan dengan salah satu jenis seperti pointer, array, reference dll dan bertipe variabel

POSTTES Praktikum 1

Posted: Oktober 1, 2010 in praktikum

Posttes

soal: pelajari struktur program pada modul praktikum halaman 2 dan 3 kemudian buatlah laporan dalam bentuk umum dari

A.class

B.Konstruktor

C.methot

D.Data member

C.Operator overlooading

JAWAB:

A//Class
class bilangan{
friend ostream& operator<<(ostream&, const bilangan&);
friend istream& operator>>(istream&, bilangan&);

B//contruktor
public :
bilangan(int a0=0, float b0=0):a(a0),b(b0){}
void banding_int(const bilangan&, const bilangan&);
bilangan& operator=(const bilangan&);
bilangan operator+(const bilangan&)const;
bilangan operator-()const;

D//
private:
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;
}

C.Method
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<<“masukkan 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;
}
int main(int argc, char *argv[])
{
//Operator Overloading

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;
getch();
}