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

}


Progam searching (mencari suatu data dan inputan berupa kalimat, hitung konsonan ,vokal, numerik, dan jumlah kalimat)


//  program untuk mencari suatu data dan inputan berupa kalimat, hitung konsonan ,vokal, numerik, dan jumlah kalimat.
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<iostream.h>


int main()
{
char teks[50];
char cari;
int konsonan, number,vokal, i, flag=0, a;
cout << "Masukkan kalimat : ";
cin.get(teks,50);

cout<<"Huruf vokal : "<<teks[a]<<endl;
for(int a=0;teks[a];a++)
{
if(toupper(teks[a])=='A'||toupper(teks[a])=='I'||toupper(teks[a])=='U'
||toupper(teks[a])=='E'||toupper(teks[a])=='O'){
cout<<teks[a]<< " ";
}
}
cout<<"\nJumlah konsonan : "<<konsonan<<"\n";
for(int a=0;teks[a];a++){
if(toupper(teks[a])=='A'||toupper(teks[a])=='I'||toupper(teks[a])=='U'
||toupper(teks[a])=='E'||toupper(teks[a])=='O'){
}
else if (isdigit(teks[a])){
}
else if (isspace(teks[a])){
}
else{
cout<<teks[a]<< " ";
}
}


cout<<endl<<"Jumlah numerik : "<<number<<endl;
for(int a=0;teks[a];a++)
{
if (isdigit(teks[a]))
{
cout<<teks[a]<< " ";
}
}

cout << "Masukkan data yang dicari: ";
cin >> cari;
printf("Data %c ditemukan pada indeks ", cari);
for(i=0;teks[i];i++)
{
if(teks[i]==cari)
{
flag=1;
break;
}
}
if (flag==1)
{
printf("ke [%i], ", i);
}
else
printf("\nData tidak ditemukan");
}