Sabtu, 31 Desember 2011

Nahh lhooo dahh lamaa ya ga posting ke blog lagi .. :) nee gara - gara hardisk aku yang rusak hiks hiks T.T .. tpii alhamdulilahh yy sekarang dah di ganti lagi .

Nahh pada kesempatan kali ini aku akan pos tugas proyek struktur data aku yang berjudul "BELAJAR ISLAM DARI DASAR"

langsung aja ke TKP :) http://www.4shared.com/file/7UrC7iC_/Aplikasi_Belajar_Islam_dari_Da.html

Rabu, 07 Desember 2011

Queue (antrian) Bank Mandiri


Queue (antrian) adalah struktur data dimana data yang pertama kali dimasukkan adalah data yang pertama kali bisa dihapus. Atau bisa juga disebut dengan struktur data yang menggunakan mekanisme FIFO (First In First Out).Queue dalam kehidupan sehari-hari seperti antrian pada penjualan tiket kereta api, dimana orang yang pertama datang adalah orang yang pertama kali dilayani untuk membeli tiket. Jika ada orang baru yang datang akan membali tiket, maka posisinya berada pada urutan paling belakang dalam antrian tersebut. Orang yang berada pada posisi terakhir dalam antrian adalah yang terakhir kali dapat dilayani dan memperoleh tiket kereta api (kalau kurang beruntung, maka akan kehabisan tiket). Contoh lain adalah nasabah yang antri di teller bank, paket data yang menunggu untuk ditransmisikan lewat internet, antrian printer dimana terdapat antrian print job yang menunggu giliran untuk menggunakan printer, dsb.

          Istilah-istilah yang digunakan dalam queue (antrian)Memasukkan data (insert) disebut juga dengan put, add, atau enqueue. Menghapus data (remove) biasa disebut dengan istilah delete, get, atau dequeue. Bagian belakang queue, dimana data bisa dimasukkan disebut dengan back, tail (ekor), atau end (akhir). Sedangkan bagian depan (front) queue dimana data bisa dihapus juga biasa disebut dengan istilah kepala (head). Circular Queue Di dunia nyata apabila seseorang sedang mengantri (misalnya antri tiket kereta api), apabila telah dilayani dan memperoleh tiket, maka ia akan keluar dari antrian dan orang-orang yang berada di belakangnya akan bergerak maju ke dapan. Kita bisa saja menggerakkan setiap item data ke depan apabila kita menghapus data yang terdepan, tetapi hal ini kurang efektif. 
          Sebaliknya kita tetap menjaga setiap item data di posisinya, yang kita lakukan hanyalah merubah posisi front dan rear saja. Yang menjadi permasalahan adalah apabila posisi rear berada pada bagian akhir dari array (atau pada nomor indeks yang terbesar). Meskipun ada bagian yang kosong di awal-awal array – karena mungkin data telah dihapus, data baru tidak bisa dimasukkan lagi karena rear-nya sudah tidak bisa bergerak lagi. Atau mungkinkah posisi rear nya bisa berpindah? Untuk menghindari permasalahan seperti itu (tidak bisa memasukkan data baru) – meskipun queue-nya belum penuh, maka front dan rear-nya berputar (kembali) ke bagian awal array. Kejadian seperti ini dinamakan dengan circular queue (atau kadang-kadang disebut juga dengan istilah ring buffer).

Berikut contoh programnya :

#include <iostream>
#include <conio.h>
#define MAX 6

typedef struct{
int data[MAX];
int head;
int tail;
}
Queue;
Queue antrian;
void Create(){
antrian.head=antrian.tail=-1;
}

int IsEmpty(){
if(antrian.tail==-1)
return 1;
else
return 0;
}

int IsFull(){
if (antrian.tail==MAX-1) return 1;
else return 0;
}

//fungsi memasukkan data

void Enqueue(int data){
if(IsEmpty()==1){
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;

cout << "\t Silahkan Masuk !! \n" ;
cin >> antrian.data[antrian.tail];
void Tampil();
{
if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
cout << antrian.data[i];
}
}else
cout<< "data kosong!";
};
}else
if(IsFull()==0){
antrian.tail++;
antrian.data[antrian.tail]=data;
cout << "\t Silahkan Masuk !! \n" << antrian.data[antrian.tail];
}

}

int Dequeue(){
int i;
int e = antrian.data[antrian.head];
for(i=antrian.head;i<=antrian.tail-1;i++){
antrian.data[i]= antrian.data[i+1];
}
antrian.tail--;
return e;
}


void clear(){
antrian.head=antrian.tail=-1;
cout << "Data Clear" ;
}
void Tampil()
{ int jum;
jum=0;

if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
jum++;

cout << antrian.data[i]<< "\n";
}
cout << "\njumlah yang mengantri saat ini : "<< jum << "orang";
}
else
cout << "Data Kosong!\n";
}

//sebagai nasabah
void nasabah()
{
int data;
char lagi;
do{
clrscr();
cout << "\t+=================================+\n";
cout << "\t| menu nasabah |\n";
cout << "\t+=================================|\n";
cout << "\t| tekan (a) untuk masukkan data |\n";
cout << "\t| tekan (b) melihat data antrian |\n";
cout << "\t| tekan (x) keluar |\n";
cout << "\t+=================================|\n";
cout << "pilihan : ";
cin >> lagi;
if((lagi=='x') || (lagi=='X'))
{ cout << "terima kasih\n" ;

break;
}

switch(lagi)
{
case 'a':
cout << "masukkan data: " << &data << " ";
Enqueue(data);
break;
case 'b': Tampil();
break;

}getch();
} while(lagi !='x');
getch();
}

//memasukkan password
void password()
{
char nama[20], id[10], password[4];
int i;
{
clrscr();

atas:
clrscr();
cout << "\t\t+===============================================+\n";
cout << "\t\t| S E L A M A T D A T A N G |\n";
cout << "\t\t| jika anda admin dari teller |\n";
cout << "\t\t|Silahkan masukkan User Name & 3 digit Password |\n";
cout << "\t\t+===============================================+\n";
cout << "\t\t UserName : " ; cin>>nama;
cout << "\t\t No. Identitas : "; cin>>id;
cout << "\t\t Password : " ;
for(i=0; i<=2; i++)
{password[i]=getch();
cout << "\bX";
}
cout << "\n\t\t+=============================================+\n";
if (strcmp(password,"aaa")==0)
{
cout << "\n\n\t\t Anda Masuk Sebagai TEllER\n";
cout << "\t\t User :" << nama << "\n";
cout << "\t\t No. Identitas : " << id << "\n";
cout << "\n\n\t\tTekan Sembarang tombol untuk ke menu teller..!";
goto bawah;
}
else
{
cout << "\t\t\tmaaf password salah!!!\n" ;
cout << "\t\tketik sembarang tombol untuk kembali ke menu: ";
goto atas;

}
bawah:
getch();
}
}

//void teller
void teller()
{char menu;
password();
do{
clrscr();
cout << "\t\t+=================================+\n";
cout << "\t\t| menu pilihan untuk TELLER |\n";
cout << "\t\t+=================================+\n";
cout << "\t\t| tekan (a) untuk menghapus data |\n";
cout << "\t\t| tekan (b) melihat data antrian |\n";
cout << "\t\t| tekan (c) untuk mereset |\n";
cout << "\t\t| tekan (x) untuk keluar |\n";
cout << "\t\t+=================================+\n";
cout << "pilihan : " << menu <<" ";
if((menu=='x') || (menu=='X'))
{ cout << "terima kasih\n";

break;
}

switch(menu)
{
case 'a': cout << "Elemen yang keluar : ";
cin>>Dequeue;
break;
case 'b': Tampil();
break;
case 'c': clear();
break;
}getch();
} while(menu !='x');

}

void main(){
char pil;


Create();
do{
clrscr();
//fflush(stdin);
cout << "\t\t+=====================================+\n";
cout << "\t\t| Bank Mandiri |\n";
cout << "\t\t| jalan Menukan |\n";
cout << "\t\t| Yoggyakarta |\n";
cout << "\t\t+=====================================+\n";
cout << "\t\t| tekan (n) untuk Nasabah |\n";
cout << "\t\t| tekan (t) untuk Teller |\n";
cout << "\t\t| tekan (k) keluar dari program |\n";
cout << "\t\t+=====================================+\n";
cout << "pilihan : ";
cin >> pil >> "" ;
if((pil=='k') || (pil=='k'))
{ cout << "terima kasih";
break;
}

switch(pil)
{
case 'n': nasabah();
break;
case 't': teller();
break;

}

}while(pil!='k');
}

Senin, 05 Desember 2011

RECURSIVE

Yes it's hard to learn recursion. Now let's discuss more about recursion. Recursion is a function that calls itself. Recursion is used when the problem is formulated using arecursive approach. Examples kostruksi factorial function:
n! = 1 * 2 * 3 *. . . (n-2) * (n-2) * n
to create a form of factorial recursion, we rewrite it into:
n! = N * (n-1) * (n-2) 8 *. . . * 3 * 2 * 1
take one tribe, the rest use the same operation with the initial problem, namely:
n! = N * (n-1)!
to calculate the factorial by recursion we need a definition:
n! = 1, if n = 0
(the simplest case and determine the value. Used to stop the recurring function that calls itself)
n! = N * (n-1)!, If n> 0
(the case of function calls itself. characteristics: must lead to penyetop case, ie ndecreases towards 0)
This brought the recursion function is presented using C + +:
Int factorial (int n) {
If (n == 0) return (1); / / case penyetop
else
Return (n * factorial (n-1)); caller recursive
}
Stages compute 6! following
6! = 6 * 5!
     = 6 * 5 * 4!
     = 6 * 5 * 4 * 3!
    = 6 * 5 * 4 * 3 * 2!
    = 6 * 5 * 4 * 3 * 2 * 1!
    = 6 * 5 * 4 * 3 * 2 * 1 * 0!
Because the 0! = 1 then call recursion stops and we can calculate the multiplication ofvalues ​​- values ​​that already exist.

Minggu, 04 Desember 2011

KONSTRUKSI PROGRAM C++

Hay kawan - kawan semua... udah lama ne ga nulis di blog .. pumpung ga ada kerjaan bole dong sedikit nulis2 di blog ..

Nah ne materi pertama praktikum struktur data, dan nee judul materinya KONSTRUKSI PROGRAM C++ .

Bentuk umum konstruksi kelas :
class nama-kelas{
//bagian public
public:
//bagian private:
private:
//bagian protected
protected:
};

                Bagian public digunakan sebagai antar muka kelas dengan program lain. Bagian private biasanya digunakan untuk data member. Pada dasarnya bagian private ini dapat diakses oleh kelas semua anggota kelas. Bagian protected hanya digunakan apabila suatu saat ingin dibuat kelas turunan dan kelas turunan inilah yang dapat mengakses selain anggota kelas yang bersangkutan.
                Template adalah fungsi yang menangani tugas yang sama tetapi berbeda tipe data dan jumlah parameternya. Kelas adalah suatu tipe data yang menggabungkan tipe data dan fungsi untuk mengakses data.
                Contoh deklarasi sebuah class bernama Contoh yang mempunyai konstruktor :
Class Contoh{
Public:
                Mahasiswa (string a,b,c);
Private:
                String a;
String b;
String c;
}
Mahasiswa::Mahasiswa (string a,b,c)
{
Mahasiswa :: a=a;
Mahasiswa :: b=b;
Mahasiswa :: c=c;
}

Jumat, 08 Juli 2011

BUBBLE SORT

Bubble sort is a sorting program is one of c + +.Bubble sort is a method that bases the exchange 2 pieces sorted elements to achieve the desired state.
This program :


#include <iostream.h>
#include <conio.h>

int data[10],data2[10];
int n;

void tukar(int a, int b)
{
 int t;
 t = data[b];
 data[b] = data[a];
 data[a] = t;
}

void bubble_sort()
{
 for(int i=1;i<=n;i++)
 {
  for(int j=n; j>=i; j--)
  {
   if(data[j] < data[j-1]) tukar(j,j-1);
  }
 }
}
void main()
{
 cout<<" BUBBLE SORT PROGRAM"<<endl;

 // enter data
 cout<<"Enter the Number of Data : ";
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  cout<<"Enter number to- "<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 bubble_sort();

 cout<<"\n\n";
 // data show
 cout<<"Data after Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }
 getch();
}

INSERTION SORT

Insertion sort is to sort the data of random numbers, by moving the position of the smallest to the beginning, which is done continuously until rsebut serial numbers.
let's look at the program:

#include <iostream.h>
#include <conio.h>

int data[10],data2[10];
int n;

void tukar(int a, int b)
{
 int t;
 t = data[b];
 data[b] = data[a];
 data[a] = t;
}

void insertion_sort()
{
 int temp,i,j;
 for(i=1;i<=n;i++)
 {
  temp = data[i];
  j = i -1;
  while(data[j]>temp && j>=0)
  {
   data[j+1] = data[j];
   j--;
  }
 data[j+1] = temp;
 }
}
void main()
{
 cout<<PROGRAM INSERTION SORT<<endl;

 //data Input
 cout<<"Masukkan Jumlah Data : ";
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  cout<<"Masukkan data ke "<<i<<" : ";
  cin>>data[i];
  data2[i]=data[i];
 }

 insertion_sort();

 cout<<"\n\n";
 //data show
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=n; i++)
 {
  cout<<" "<<data[i];
 }
 cout<<"\n\nSorting Selesai";
 getch();
}

 

SHIFTS ARRAY

Below is the program shifts the array .. shifting the array is the example given the numbers 1 2 3 4 5 6 slide into 6 1 2 3 4 5 .... let's look at the program


#include <iostream>
#include <stdlib.h>
using namespace std;
class geser{
friend ostream& operator<<(ostream&, const geser&);
friend istream& operator>>(istream&, geser&);
public:
geser();
void cetak();
void geser_kanan();
private:
char A[6];
int posisi;
};
geser::geser(){
for(int i=0;i<6;i++)
A[i]=’O';
}
void geser::cetak(){
for(int i=0;i<6;i++)
cout<<A[i]<<” “;
}
ostream& operator<<(ostream& out, const geser& x){
for(int i=0;i<6;i++)
out<<x.A[i]<<” “;
out<<endl;
return out;
}
istream& operator>>(istream& in, geser& x){
int posisi;
for (int posisi=1; posisi<=6; posisi++){
cout<<”posisi array ke- : “;
in>>x.posisi;
if(posisi >= 0 && posisi <= 6){cout<<”elemen arraynya :”;
in>>x.A[posisi-1];
}
}
return in;
}
void geser::geser_kanan(){
int n=6;
int temp=A[n-1];
for(int i=n-1;i>=0;i–)
A[i+1]=A[i];
A[0]=temp;
}
int main(int argc, char *argv[])
{
geser x;
cout<<”program menggeser nilai array \n”;
cin>>x;
cout<<endl;
cout<<”Isi Array saat ini : “<<x;
x.geser_kanan();
cout<<”Array setelah di geser : “<<x;
cout<<endl;
system(“PAUSE”);
return 0;
}

PROGRAMS SEEK OR NOT CONNECTED GRAF

This week I want to talk about the graph. a little explanation about the graph as follows:

For example, graph is about 4 The set V (Vertex) that its elements are called vertices (or points or nodes or points). The set E (Edge) which is not sequential pairs of vertices, its members called a segment (rib or side).
the program below to find out this graph is connected or not

let's look at the program..

 
    #include <cstdlib>
    #include <iostream>


    using namespace std;

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

    {

    bool ketemu,nolsemua;

    int matrix[10] [10];

    int i,j,jumlah_simpul,jumlah_sisi,asal,tujuan;

    //initialization of matrix

    cout<<”jumlah simpul:”;

    cin>>jumlah_simpul;


    cout<<”jumlah_sisi:”;

    cin>>jumlah_sisi;

    for (i=1;i<=jumlah_simpul;i++)

    for (j=1;j<=jumlah_simpul;j++)

    matrix[i][j]=0;

    //fill in the matrix conform the graph input

    for (i=1;i<=jumlah_sisi;i++){

    cout<<”simpul asal:”;

    cin>>asal;

    cout<<”simpul tujuan:”;

    cin>>tujuan;

    matrix[asal][tujuan]=1;

    matrix[tujuan][asal]=1;

    }

    //checking graph

    i=1;nolsemua=false;

    while (i<=jumlah_simpul && !nolsemua){

    j=1;ketemu=false;

    while (j<=jumlah_simpul && !ketemu){

    if (matrix[i][j]==1)

    ketemu=true;

    else

    j++;
    }
    if (!ketemu)
    nolsemua=true;
    else
    i++;
    }
    if(nolsemua)
    cout<<”graf tidak terhubung”<<endl;
    else
    cout<<”graf terhubung”<<endl;
        system(“PAUSE”);
        return EXIT_SUCCESS
    } 

Selasa, 05 Juli 2011

DIMENSIONS TO BE CHANGING ARRAY 1 ARRAY 2 DIMENSIONS

Array is a type of structured data that is useful to store large amounts of data are the same type. Parts that make up the array called array elements, each element can be accessed separately through the array index. whereas Is a variable that stores a set of data that has the same type and elements that will be accessed only through an index or subscript. below I present one-dimensional arrays into two-dimensional array..


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   
    int n, baris, kolom;
int data[20];
int output[40][40];
int e=0;

cout<<"PROGRAM CHANGE DIMENSIONS TO ARRAY 1 ARRAY 2 DIMENSIONS";
cout<<endl;
cout<<"Masukan banyaknya bilangan :";
cin>>n;

for (int i=0; i<n;i++)//the process of entering numbers
{
cout<<"data ke-"<<i<<" = ";
cin>>data[i];
}

for (int j=0; j<n;j++)//the process of displaying an array of one-dimensional
{
cout<<data[j];
}
cout<<endl<<"\n";
cout<<"masukan banyaknya kolom: ";
cin>>kolom;
cout<<"masukan banyaknya baris: ";
cin>>baris;

for (int i=0;i<baris;i++)//change process into two-dimensional array of one-dimensional
{
for (int j=0;j<kolom;j++)
{
output[i][j]=data[e];
e++;
}
}
   
for (int i=0;i<baris;i++) //the process of displaying a two dimensional array
{
for (int j=0;j<kolom;j++)
{
cout<<output[i][j]<<"   ";

}
cout<<endl;
}

    system("PAUSE");
    return EXIT_SUCCESS;
}

Senin, 04 Juli 2011

TRANSPOSE PROGRAM

Transpose actually very easy to learn .. As long as we understand from the beginning ..
Transpose a matrix is the change from column to row.

let's look at the program

#include <iostream.h>
#include <conio.h>
  void main()
    {
   clrscr();
    int a[10][10],m,n,i,j;
    cout<<"Enter number of rows: ";
    cin>>m;
    cout<<"Enter number of coloumns: ";
    cin>>n;

    if(m!=n)
    {
    cout<<"Matrix not square so Transpose not possible :(";
    }
    else
    {
    cout<<endl<<"Enter elements of matrix: "<<endl;
    for(i=0;i<m;i++)
    {
    for(j=0;j<n;j++)
    {
    cout<<"Enter element a"<<i+1<<j+1<<": ";
    cin>>a[i][j];
    }
    }
   cout<<endl<<"Displaying Matrix: "<<endl<<endl;
 for(i=0;i<m;i++)
 {
  for(j=0;j<n;j++)
   {
   cout<<a[i][j]<<" ";
   }
  cout<<endl<<endl;
   }
   cout<<endl<<"Displaying Matrix Transpose: "<<endl<<endl;
   for(i=0;i<m;i++)
   {
   for(j=0;j<n;j++)
  {
   cout<<a[j][i]<<" ";
   }
   cout<<endl<<endl;
   }
  }
  getch();
  }

Kamis, 23 Juni 2011

Program calculates the distance in a graph

Assalaikum my friend.....How are you...i hope you fine like me...
long is not a blog post. understand, many new tasks. Yes, although this blog post also includes the task.
well, now I'll post the program calculates the distance in a graph.
we just see the program !!!

#include <cstdlib>
#include <iostream.h>
#include <string.h>

using namespace std;

int main(int argc, char *argv[])
{
    char kata1;  //variabel
    char kata2; 
//variabel
    char kata3;  //variabel
    int a, b, c;  // tdata type
   
    cout<<"||====================================================||"<<endl;
    cout<<"||          Program Menghitung Jarak pada Graf        ||"<<endl;
    cout<<"||====================================================||"<<endl;
    cout<<endl;
   
    cout<<"Masukkan jarak antara titik simpul "<<kata1<<" dengan "<<kata3<<" : ";cin>>a;
    cout<<"Masukkan jarak antara titik simpul "<<kata3<<" dengan "<<kata2<<" : ";cin>>b;
    cout<<"Masukkan jarak antara titik simpul "<<kata2<<" dengan "<<kata1<<" : ";cin>>c;
    cout<<endl<<endl;
    cout<<"Jadi panjang jarak pada graf totalnya = "<<a+b+c<<endl<<endl;  //
formula to calculate the triangle graph
   
  
    system("color 57");  //
gives color to the results of running
    system("PAUSE");
    return EXIT_SUCCESS;
}

explanation :
   
This program is made in Dev C++. Purpose of the program above is, calculate the distance on the graph, which suppose an image triangle A, B, C as below

The program may calculate the distance from A to B, B to C and B to C.