Selasa, 12 Maret 2013

STACK (progam pembalik kata/kalimat)



//program yang dapat membalikkan kalimat dengan menggunakan stack
#include <iostream.h>
#include <conio.h>
#define maxstack 200

struct STACK        //membuat jenis data abstrak stack
{
    int top;
    char data[maxstack]; // pendeklarasian untuk menginputkan suatu kalimat dengan maks 200
};

char dta[maxstack];
struct STACK stackbaru;

bool isfull()        // fungsi untuk mengetahui apakah stack dalam kondisi penuh (menggunakan boolean)
{
    if (stackbaru.top == maxstack-1)
return true; // jika pengkondisian stack dalam keadaan penuh maka benar
    else
return false;
}

bool isempty()      // fungsi untuk mengetahui apakah stack dalam kondisi kosong
{
    if (stackbaru.top == -1)
return true;
    else
return false;
}
void push(char dta) // fungsi untuk proses push
{
    if (isfull() == false) // jika kondisi stack tidak penuh
    {
        stackbaru.top++;// user menginputkan data dengan menggunakan variabel dta dimana dta tersebut akan disimpan di stackbaru yang paling atas
stackbaru.data[stackbaru.top]=dta; // increment, yang bermksud jika penginputan dta lagi maka akan tersimpan diatas dta sebelumnnya
    }
    else // jika stack dalam kondisi penuh
    {
        cout << "\nMaaf Stack penuh";
    }
}

void pop()            //mengambil isi stack
{
    while (isempty() == false) // jika kondisi stack tidak kosong
    {
            cout<<stackbaru.data[stackbaru.top]; // akan menampilkan data di stack dimana data tersebut berada yang paling atas
            stackbaru.top--; // decrement, maksudnya jika user memilih menu pop lagi maka rogam akan menampilkan data dibawah data yang telah terambiil sebelumnya
       
    }
}

void print()        //mencetak stack
{
system ("cls");
    cout<<"\nKalimat awal : ";
    for (int i=0; i<=stackbaru.top; i++) // diulang sebanyaknya data yang tersimpan didta
    {
        cout<<stackbaru.data[i];
    }
}

void clear()
{
    stackbaru.top = -1;
}
int main()
{
    char kata[200]; //menampung inputan

    cout<< "Masukkan kalimat : ";
gets(kata);
cout << endl;
    for(int i=0; kata[i]; i++)
{
        push(kata[i]);
}
print();
cout << endl;
cout<<"Dibalik jadi : ";
pop();
cout<<"\n";

}


3 komentar: