Rabu, 15 Maret 2017

   A.      Dengan mengembangkan code berikut, buatlah program STACK (nomor 1) dan QUEUE                      (nomor 2) dengan ketentuan:
            a. Memiliki fungsi PUSH/ENQUEUE (input data)
            b. Memiliki fungsi POP/DEQUEUE (ambil satu data)
            c. Memiliki fungsi CLEAR (delete all data)
           d. Memiliki fungsi PRINT (cetak data pada layar)
           e. (opsional) jika user ingin menampilkan data yang diinputkan, maka data tersebut telah                          terurut secara ascending (menggunakan metode sorting yang sudah dipelajari di kelas) .

                  JAWAB;
A   1. Menggunakan struck_stack.
               
#include<iostream>
#include<conio.h>
using namespace std;

struct STACK
{
    int data[5];
    int atas;
};

STACK tumpuk;

int main ()
{
    int pilihan,baru,i;
    tumpuk.atas=-1;
    do
    {
        cout<<"1.Push Data\n";
        cout<<"2.Pop Data\n";
        cout<<"3.Print Data\n";
        cout<<"4.End Data\n";
        cout<<"\nPilihan = ";cin>>pilihan;
        switch(pilihan)
        {
            case 1:
                    {
                        if(tumpuk.atas==5-1)
                        {
                            cout<<"Tumpukan Penuh";
                            cout<<endl;
                            getch();
                        }
                        else
                        {
                            cout<<"Data yang akan di-push = ";cin>>baru;
                            tumpuk.atas++;
                            tumpuk.data[tumpuk.atas]=baru;
                        }
                        cout<<"-------------------------------------\n";
                        break;
                    }
            case 2:
                    {
                        if(tumpuk.atas==-1)
                        {
                            cout<<"Tumpukan Kosong";
                            cout<<endl;
                            getch();
                        }
                        else
                        {
                            cout<<"Data yang akan di-pop = "<<tumpuk.data[tumpuk.atas];
                            tumpuk.atas--;
                            cout<<endl;
                            getch();
                        }
                        cout<<"-------------------------------------\n";
                        break;
                    }
            case 3:
                    {
                        if(tumpuk.atas==-1)
                        {
                            cout<<"Tumpukan Kosong";
                            cout<<endl;
                            getch();
                        }
                        else
                        {
                            cout<<"\nData pada stack saat ini adalah : \n";
                            for(int i=0; i<=tumpuk.atas; i++)
                            {
                                cout<<"Nilai ruang ke "<<i<<" : "<<tumpuk.data[i]<<endl;
                            }
                            cout<<endl;
                            getch();
                        }
                        cout<<"-------------------------------------\n";
                        break;
                    }
                    default:
                    cout<<"\nTidak ada dalam pilihan";
                    cout<<endl;
                    cout<<"-------------------------------------\n";
        }
    }
    while(pilihan!=4);
    getch();
}
         
                                  Hasailnya;;;
 




       
   2. metode struck_queue

#include<stdio.h>
#include<iostream>
#include<conio.h>
#define MAX 8

using namespace std;

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

void Enqueue(int data){
if(IsEmpty()==1){
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
cout<<" sudah dimasukan "<<antrian.data[antrian.tail];
} else
if(IsFull()==0){
antrian.tail++;
antrian.data[antrian.tail]=data;
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<<"CLEAR";
}
void Tampil(){
if(IsEmpty()==0){
for(int i=antrian.head;i<=antrian.tail;i++){
cout<<antrian.data[i];
}
}else cout<<"data kosong!\n";
}
main(){
int pil;
int data;
Create();
do{
//clrscr();

cout<<"=============================="<<endl;
cout<<"\t\t\tPROGRAM QUEUE"<<endl;
cout<<"==============================\n\n"<<endl;
cout<<"1. ENQUEUE\n "<<endl;
cout<<"2. DEQUEUE\n "<<endl;
cout<<"3. TAMPIL\n "<<endl;
cout<<"4. CLEAR\n "<<endl;
cout<<"5. EXIT\n "<<endl;
cout<<" Masukan Pilihan : ";cin>>pil;
switch(pil){

case 1: //clrscr();
cout<<"Masukan Data : ";cin>>data;
Enqueue(data);
break;

case 2: //clrscr();
Dequeue();
break;

case 3: //clrscr();
Tampil();
break;

case 4: //clrscr();
Clear();
break;
case 5:
cout<<endl<<"\nTHANKS";
break;



}

getch();
}while(pil!=5);
return 0;
}

              Hasilnya;;;;;




;

B.  Buatlah program untuk mengkonversi inputan infix menjadi postfix, program tersebut akan                menghasilkan output berupa hasil konversi ke postfix dan hasil perhitungannya. (inputan berupa           angka). 

                         jawab;;;
 #include <iostream>

#include <string.h>

#include <ctype.h>

using namespace std;
const int MAX = 50 ;

class infix

{

private :

char target[MAX], stack[MAX] ;

char *s, *t ;

int top, l ;

public :

infix( ) ;

void setexpr ( char *str ) ;

void push ( char c ) ;

char pop( ) ;

void convert( ) ;

int priority ( char c ) ;

void show( ) ;

} ;

infix :: infix( )

{

top = -1 ;

strcpy ( target, "" ) ;

strcpy ( stack, "" ) ;

l = 0 ;

}

void infix :: setexpr ( char *str )

{

s = str ;

strrev ( s ) ;

l = strlen ( s ) ;

* ( target + l ) = '\0' ;

t = target + ( l - 1 ) ;

}

void infix :: push ( char c )

{

if ( top == MAX - 1 )

cout << "\nStack is full\n" ;

else

{

top++ ;

stack[top] = c ;

}

}

char infix :: pop( )

{

if ( top == -1 )

{

cout << "Stack is empty\n" ;

return -1 ;

}

else

{

char item = stack[top] ;

top-- ;

return item ;

}

}

void infix :: convert( )

{

char opr ;



while ( *s )

{

if ( *s == ' ' || *s == '\t' )

{

s++ ;

continue ;

}



if ( isdigit ( *s ) || isalpha ( *s ) )

{

while ( isdigit ( *s ) || isalpha ( *s ) )

{

*t = *s ;

s++ ;

t-- ;

}

}



if ( *s == ')' )

{

push ( *s ) ;

s++ ;

}



if ( *s == '*' || *s == '+' || *s == '/' ||

*s == '%' || *s == '-' || *s == '$' )

{

if ( top != -1 )

{

opr = pop( ) ;



while ( priority ( opr ) > priority ( *s ) )

{

*t = opr ;

t-- ;

opr = pop( ) ;

}

push ( opr ) ;

push ( *s ) ;

}

else

push ( *s ) ;

s++ ;

}



if ( *s == '(' )

{

opr = pop( ) ;

while ( ( opr ) != ')' )

{

*t = opr ;

t-- ;

opr = pop ( ) ;

}

s++ ;

}

}



while ( top != -1 )

{

opr = pop( ) ;

*t = opr ;

t-- ;

}

t++ ;

}

int infix :: priority ( char c )

{

if ( c == '$' )

return 3 ;

if ( c == '*' || c == '/' || c == '%' )

return 2 ;

else

{

if ( c == '+' || c == '-' )

return 1 ;

else

return 0 ;

}

}

void infix :: show( )

{

while ( *t )

{

cout << " " << *t ;

t++ ;

}

}



int main( )

{

char expr[MAX] ;

infix q ;



cout << "\nMasukan Sebuah Ekspresi infix : " ;

cin.getline ( expr, MAX ) ;



q.setexpr( expr ) ;

q.convert( ) ;



cout << "Hasil konversi kedalam notasi prefix adalah: " ;

q.show( ) ;

}

  








Senin, 27 Februari 2017



                                    JAWAB ;;


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

using namespace std;

int main()
{
    int b,k,cari;
    cout<<" Masukan Jumlah Baris = ";
    cin>>b;
    cout<<" Masukan Jumlah Kolom = ";
    cin>>k;
    cout<<"\n Menampilkan matriks "<< b <<" x "<< k <<endl;
    int a[b][k];
    int baris[b];
    int kolom[k];
    int x=0, y=0, counter=0;
    cout<<endl;

    // UNTUK MENGIMPUTKAN SETIAP ELEMEN DARI MATRIKS

    for(int i=0;i<b;i++)
    {
        for(int j=0;j<k;j++)
        {
            cout<<" Masukan elemen Matriks = ";
            cin>>a[i][j];
        }
        cout<<endl;
    }

    // UNTUK MENAMPILKAN MATRIKS

    cout<<"----------------------------------\n";
    cout<<"\t TAMPILAN MATRIKS \n";
    cout<<endl;
    for(int i=0;i<b;i++)
    {
        for(int j=0;j<k;j++)
        {
            cout<<"\t"<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<"----------------------------------\n";
    cout<<"\nMasukan Data Yang Dicari = ";
    cin>>cari;
    for(int i=0;i<b;i++)
    {
        for(int j=0;j<k;j++)
        {
            if (a[i][j]==cari)
            {
                baris[x]=i;
                kolom[y]=j;
                x++; y++;
                counter++;
            }
        }
    }
    cout<<endl;
    for(int i=0; i<counter; i++)
    {
        cout<<" Data "<<cari<<" Berada Pada Posisi "<<"["<<baris[i]<<"]"<<"["<<kolom[i]<<"]"<<endl;
    }


    return 0;
}

                            HASILNYA----




-------------------------------------------------------------------------------------------------------------------------

      
                                                   
                                                JAWAB;;;

#include <iostream>


using namespace std;

int main()
{
    char a[5]={'a','i','u','e','o'};
    char i[21]={'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
    std::string b;
    int x=0;
    int o=0;
    int p=0;
    int g=0;
    int h=0;
    int flag=0;
    string l;
    string r;
    cout<<" masukkan teks anda : ";getline(cin,b);

    cout<<"Jumlah huruf vokal = ";
    for(;g<b[g];g++)
        {
            o++;
        }

    for (int k=0;k<=o;k++)
        {
            for(int z=0;z<o;z++)
                {
                   if (a[k]==b[z])
                    {
                        cout<<b[z];
                        p++;
                    }
                }
         }
        cout<<" sebanyak "<<p<<endl;
        cout<<"Jumlah huruf konsonan = ";
         for (int k=0;k<=20;k++)
        {
            for(int z=0;z<=o;z++)
                {
                   if (i[k]==b[z])
                    {
                        cout<<b[z];
                        h++;
                    }
               }
           }

        cout<<" sebanyak = "<<h<<endl;
        cout<<"Masukkan data yang anda cari =";cin>>l[0];

        for (int v=0;v<o;v++)
            {
                if (b[v]==l[0])
                    {
                        flag=1;
                        x++;
                    }
            }
        if (flag==1)
            {
                cout<<"Data ditemukan sebanyak "<<x;
            }
        else
            {
                cout<<"Data tak ditemukan..";
            }

    return 0;
}

                                          HASILNYA--



-------------------------------------------------------------------------------------------------------------------------

 

                                                   JAWAB;;;;

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


using namespace std;

main(){
    int input,y=0,x=0;
    cout<<" Masukan Jumlah Data = ";
    cin>>input;
    cout<<endl;
    int data[input];
    int ganjil[input],genap[input];
    int iganjil[input],igenap[input];
    //UNTUK MENGIMPUT BANYAKNYA ANGKA
    for(int i=0;i<input;i++)
    {
        cout<<" Masukan Nilai Data ke  "<<i<<" = ";
        cin>>data[i];
    }

    //UNTUK MENENTUKAN BILANGAN GANJIL DAN GENAP

    for(int i=0;i<input;i++)
    {
        if(data[i]%2==1)
        {
            ganjil[x]=data[i];
            iganjil[x]=i;
            x++;

        }else{
        genap[y]=data[i];
        igenap[y]=i;
        y++;
        }
    }

    cout<<" \nBilangan Ganjil = "<<endl;
    if(x<1)
        {
         cout<<" Tidak Ada Bilangan Ganjil ";
        }else
          for(int i=0;i<x;i++)
            {
              cout<<" Indeks Ke- "<<iganjil[i]<<" = "<<ganjil[i]<<endl;
             }

    cout<<" \nBilangan Genap = "<<endl;
    if(y<1){
        cout<<" Tidak Ada Bilangan Genap ";
    }else
    for(int i=0;i<y;i++)
    {
        cout<<" Indeks Ke- "<<igenap[i]<<" = "<<genap[i]<<endl;
    }

    return 0;
}

                                    HASILNYA-----


--------------------------------------------------------------------------------------------------------------------------

    SEKIAN DAN TERIMAKASIH.
         SEMOGA KALIAN PAHAM DENGAN  SOURCE CODENYA...

😊😊😊😊😊😊😏😏😏

Senin, 20 Februari 2017

SOAL


JAWAB :

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

using namespace std;

int main()
{
     int hapus,b=0;
     int Array [] ={2,12,6,12,12,7,6,12};
     for(int i=0;i<8;i++)
       {
         cout<<Array[i]<<" ";
        }
    cout<<"\nData Yang Akan Dihapus adalah = ";
    cin>>hapus;
    for(int a=0;a<8;a++)
     {
        if(Array[a]==hapus)
           {
             Array[a]=0;b++;
           }
     }
    cout<<"\n yeee...Data "<<hapus<<" Berhasil Dihapus!!!\n\n";
    cout<<"nah !! ini data yang baru : \n";
    for(int a=0;a<8;a++)
      {
          if(Array[a]!=0)
     {
           cout<<Array[a]<<" ";
    }
  }
cout<<"\n data yang dihapus sebanyak = "<<b;

getch();
return 0;
}
           
               HASILNYA------>>>






                     JAWAB:

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

using namespace std;

int main()
{
    int ganti,a;
    int data[]={2,12,6,12,12,7,6,12};
   for(int b=0;b<8;b++)
{
    cout<<data[b]<<" ";
}
    cout<<"\nData Yang Akan Ingin Diganti adalah = ";
    cin>>ganti;
    cout<<"\nMasukkan Data Baru = ";
    cin>>a;
 for(int b=0;b<8;b++)
   {
       if(data[b]==ganti)
  {
      data[b]=a;
}
}
    cout<<"\nData "<<ganti<<" Berhasil Diupdate!!!\n\n";
    cout<<"Data Sekarang : \n";
for(int b=0;b<8;b++)
{
    cout<<data[b]<<" ";
}
getch();
return 0;
}

     HASILNYA------->>>

      






JAWAB:

#include<iostream>
#include<conio.h>
#include<stdio.h>
using namespace std;
int main()
{
int A,y,z=0;
int data[]={2,12,6,12,12,7,6,12};

for(int i=0;i<8;i++)
{
    cout<<data[i]<< " ";
}
    cout<<"\nMasukkan Data yang akan ditambahkan = ";
    cin>>x;
    cout<<"\nMasukkan posisi indeks = ";
    cin>>y;
    cout<<"\nData "<<x<<" Berhasil Ditambahkan!!!\n\n";
for(int i=0;i<9;i++)
{
if(i>=y)
{
z=data[i];data[i]=x;x=z;
}
}
    cout<<"Data Sekarang : \n";
    for(int i=0;i<9;i++)
{
    cout<<data[i]<<" ";
}
getch();
return 0;
}

             HASILNYA------>>>>>