Senin, 11 Maret 2019

DIAMOND SHOP MOBILE LEGEND C++

Tugas Besar Diamond Shop Mobile legend(CodeBlocks)

       Program ini adalah program pembelian diamond moobile legend .Program ini menggunakan (fungsi, struktur, struktur array 2 dimensi, pointer, akses file, dan perulangan). user akan diminta memasukkan nama,id mobile legend, no telepon dan user akan diminta memilih paket yang mana yang ingin dibeli, sebeluum user disuruh untuk memilih akan ditampilkan list paket yang akan dipilih. ada 7 paket yang tersedia jika user salah memilih program akan menanyakan apakah user ingin mengulang atau tidak. setelah semua telah di inputkan dan user sudah memilih paket yang diinginkan maka output dari program akan otomatis terbentuk akses file dalam bentuk teks.

program
#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<fstream>

using namespace std;

struct pembeli
{
    char nama [35],id[9],nohp[13];
    int paket;

}data;
struct daftar
{
    string paket,diamond,harga,bonus;
};

void pakpil()
{
    if(data.paket==1)
    {
        cout<<"---------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 1 Dengan Harga Rp 15.000|"<<endl;
        cout<<"|Jumlah Diamond :50 Diamond                 |"<<endl;
        cout<<"|Bonus :5 Diamond                           |"<<endl;
        cout<<"---------------------------------------------"<<endl;
    }
    else if(data.paket==2)
    {
        cout<<"---------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 2 Dengan Harga Rp 75.000|"<<endl;
        cout<<"|Jumlah Diamond :250 Diamond                |"<<endl;
        cout<<"|Bonus :25 Diamond                          |"<<endl;
        cout<<"---------------------------------------------"<<endl;
    }
    else if(data.paket==3)
    {
        cout<<"----------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 3 Dengan Harga Rp 149.000|"<<endl;
        cout<<"|Jumlah Diamond :500 Diamond                 |"<<endl;
        cout<<"|Bonus :65 Diamond                           |"<<endl;
        cout<<"----------------------------------------------"<<endl;
    }
    else if(data.paket==4)
    {
        cout<<"----------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 4 Dengan Harga Rp 299.000|"<<endl;
        cout<<"|Jumlah Diamond :1000 Diamond                |"<<endl;
        cout<<"|Bonus :155 Diamond                          |"<<endl;
        cout<<"----------------------------------------------"<<endl;
    }
    else if(data.paket==5)
    {
        cout<<"----------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 5 Dengan Harga Rp 439.000|"<<endl;
        cout<<"|Jumlah Diamond :1500 Diamond                |"<<endl;
        cout<<"|Bonus :265 Diamond                          |"<<endl;
        cout<<"----------------------------------------------"<<endl;
    }
    else if(data.paket==6)
    {
        cout<<"----------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 6 Dengan Harga Rp 739.000|"<<endl;
        cout<<"|Jumlah Diamond :2500 Diamond                |"<<endl;
        cout<<"|Bonus :475 Diamond                          |"<<endl;
        cout<<"----------------------------------------------"<<endl;
    }
    else if(data.paket==7)
    {
        cout<<"------------------------------------------------"<<endl;
        cout<<"|Anda Memilih Paket 7 Dengan Harga Rp 1.499.000|"<<endl;
        cout<<"|Jumlah Diamond :5000 Diamond                  |"<<endl;
        cout<<"|Bonus :1000 Diamond                           |"<<endl;
        cout<<"------------------------------------------------"<<endl;
    }
}

int main()
{
    int harga,diamond,bonus;
    char yakin,ulang,lagi;
    cout<<"Masukkan Nama Anda                : ";cin.getline(data.nama, 35);
    cout<<"Masukkan Id Mobile Legend Anda    : ";cin.getline(data.id, 9) ;
    cout<<"Masukkan No HP Anda               : ";cin.getline(data.nohp, 13) ;

    daftar d[7]=
    {
        {"|1.  |Paket 1\t","|50   Diamond","\t|Rp.15.000","\t|5 Diamond\t|"},
        {"|2.  |Paket 2\t","|250  Diamond","\t|Rp.75.000","\t|25 Diamond\t|"},
        {"|3.  |Paket 3\t","|500  Diamond","\t|Rp.149.000","\t|65 Diamond\t|"},
        {"|4.  |Paket 4\t","|1000 Diamond","\t|Rp.299.000","\t|155 Diamond\t|"},
        {"|5.  |Paket 5\t","|1500 Diamond","\t|Rp.439.000","\t|265 Diamond\t|"},
        {"|6.  |Paket 6\t","|2500 Diamond","\t|Rp.739.000","\t|475 Diamond\t|"},
        {"|7.  |Paket 7\t","|5000 Diamond","\t|Rp.1.499.000","\t|1000 Diamond\t|"},
    };

    cout<<"================================================================="<<endl;
    cout<<"|                      Daftar Paket Diamond                     |"<<endl;
    cout<<"================================================================="<<endl;
    cout<<"|No  |Paket\t|"<<"Diamond\t|"<<"Harga\t\t|"<<"Bonus\t\t|"<<endl;
    cout<<"================================================================="<<endl;
    for (int i=0; i<7; i++)
    {
            cout<<d[i].paket<<d[i].diamond<<d[i].harga<<d[i].bonus;
            cout<<endl;
    }
    cout<<"================================================================="<<endl;
    cout<<endl;
    atas:
    cout<<"Silahkan Pilih Paket Yang Ingin Anda Beli "<<endl;
    cout<<"Paket : ";cin>>data.paket;
    if(data.paket==1)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=15000;
                diamond=50;
                bonus=5;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==2)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=75000;
                diamond=250;
                bonus=25;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==3)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=149000;
                diamond=500;
                bonus=65;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==4)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=299000;
                diamond=0100;
                bonus=155;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==5)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=439000;
                diamond=1500;
                bonus=265;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==6)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=739000;
                diamond=2500;
                bonus=475;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else if(data.paket==7)
    {
        pakpil();
        cout<<"Apakah Anda Yakin Dengan Pilihan Anda(y/t) : ";cin>>yakin;
        if(yakin== 'y' || yakin== 'Y')
            {
                harga=1499000;
                diamond=5000;
                bonus=1000;
            }
            else if(yakin=='t' || yakin=='T')
            {
                cout<<"apakah anda ingin memilih ulang?(y/t) : ";cin>>ulang;
                cout<<endl;

                if(ulang== 'y' || ulang== 'Y')
                {
                goto atas;
                }
                else if(ulang=='t' || ulang=='T')
                {
                return 0;
                }
            }
    }
    else
    {
        cout<<"Paket Diamond Tidak Ditemukan !"<<endl;
        cout<<"Apakah anda ingin Memilih ulang?(y/t) : ";cin>>ulang;
        cout<<endl;


            if(ulang== 'y' || ulang== 'Y')
            {
                goto atas;
            }
            else if(ulang=='t' || ulang=='T')
            {
                return 0;
            }
    }
    cout<<endl;
    cout<<"================================================================="<<endl;
    cout<<"|                           Tekan Enter                          |"<<endl;
    cout<<"================================================================="<<endl;
    getch();
    system("cls");
    cout<<"================================================================="<<endl;
    cout<<"|                       Pembelian Sukses                        |"<<endl;
    cout<<"================================================================="<<endl;
    cout<<endl;
    cout<<"================================================================="<<endl;
    cout<<"Anda Telah Melakukan Pembelian Diamond Mobile Legend "<<endl;
    cout<<"No ID                    : "<<data.id<<endl;
    cout<<"No HP                    : "<<data.nohp<<endl;
    cout<<"Paket                    : "<<data.paket<<endl;
    cout<<"Harga                    : Rp."<<harga<<endl;
    cout<<"Alamat dari harga adalah : "<<&harga<<endl;
    cout<<"besar memorynya adalah   : "<<sizeof(harga)<<endl;
    cout<<"jumlah                   : "<<diamond<<" Diamond"<<endl;
    cout<<"Bonus                    : "<<bonus<<" Diamond"<<endl;
    cout<<"Trimakasih "<<data.nama<<" Semoga Anda Puas Dengan Pelayanan Kami "<<endl;
    cout<<"================================================================="<<endl;
    ofstream myfile ("DIAMOND_ML_SHOP.txt");
    if(myfile.is_open())
    {
        myfile<<"================================================================="<<endl;
        myfile<<"|                         Diamond Shop                          |"<<endl;
        myfile<<"|                         Mobile Legend                         |"<<endl;
        myfile<<"================================================================="<<endl;
        myfile<<endl<<endl;
        myfile<<"Anda Telah Melakukan Pembelian Diamond Mobile Legend "<<endl;
        myfile<<"No ID : "<<data.id<<endl;
        myfile<<"No HP : "<<data.nohp<<endl;
        myfile<<"Paket : "<<data.paket<<endl;
        myfile<<"Harga : Rp."<<harga<<endl;
        myfile<<"Alamat dari harga adalah : "<<&harga<<endl;
        myfile<<"besar memorynya adalah   : "<<sizeof(harga)<<endl;
        myfile<<"jumlah: "<<diamond<<" Diamond"<<endl;
        myfile<<"Bonus : "<<bonus<<" Diamond"<<endl;
        myfile<<"Trimakasih "<<data.nama<<" Semoga Anda Puas Dengan Pelayanan Kami "<<endl;
        myfile<<endl<<endl;
        myfile<<"================================================================="<<endl;
        myfile<<"|                          Thank you                            |"<<endl;
        myfile<<"================================================================="<<endl;
        myfile.close();
    }
    else cout<<"Gagal membuka file";

    return 0;
}
Hasil Running



Dalam Bentuk Teks

Anda bisa menvariasikan program ini sesuai kreativitas anda karena pemikiran setiap manusia berbeda pastipun dalam membuat program setiap orang berbeda. trimakasih semoga bermanfaat dan dapat membantu.

QUEUE (ANTRIAN) C++

Implementasi Queue di C++

Queue atau antrian merupakan suatu kumpulan data yang memiliki head/front dimana data dikeluarkan (dequeue) dan tail/rear dimana data dimasukkan (enqueue) ke antrian.

Proses QUEUE

Seperti halnya pada antrian yang biasa kita lakukan sehari-hari, di manapun. Antrian dimulai dari depan ke belakang, jika didepan belum pergi meninggalkan antrian maka antrian terus bertambah dari belakang dan antrian paling belakang disini dinamakan rear/tail.
Jadi selama antrian terus bertambah (enqueue) maka antrian yang paling akhir adalah tail/rear.
Operasional Queue

1. Preprocessor dan Header File

#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;
2.Prosedur enqueue (menambahkan antrian)
void Enqueue(int data)//menginput sebah dta
{
    if(IsEmpty() == 1)
    {
        antrian.head = antrian.tail = 0;
        antrian.data[antrian.tail] = data;
        printf("%d Data Telah Masuk !", antrian.data[antrian.tail]);
    }
    else if(IsFull() == 0)
    {
        antrian.tail = antrian.tail + 1;
        antrian.data[antrian.tail] = data;
        printf("%d masuk !", antrian.data[antrian.tail]);
    }
}
3.Prosedur dequeue(mengeluarkan atau membuang sebuah data/ nilai)
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;
}
4.Tampil(menmpilkan semua data yang ada dalam antrian)
void Tampil()
{
    if (IsEmpty()==0)
    {
        for (int i=antrian.head;i<=antrian.tail; i++)
        {
            printf("%d ",antrian.data[i]);
        }
    }
    else
    {
        printf("Data Kosong\n");
    }
}
5.clear (membersihkan semua daftar antrian)
void Clear()
{
    antrian.head = antrian.tail = -1;
    printf("Data Clear");
}

contoh program


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 5
#include <iostream>

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)//menginput sebah dta
{
    if(IsEmpty() == 1)
    {
        antrian.head = antrian.tail = 0;
        antrian.data[antrian.tail] = data;
        printf("%d Data Telah Masuk !", antrian.data[antrian.tail]);
    }
    else if(IsFull() == 0)
    {
        antrian.tail = antrian.tail + 1;
        antrian.data[antrian.tail] = data;
        printf("%d masuk !", 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;
    printf("Data Clear");
}

void Tampil()
{
    if (IsEmpty()==0)
    {
        for (int i=antrian.head;i<=antrian.tail; i++)
        {
            printf("%d ",antrian.data[i]);
        }
    }
    else
    {
        printf("Data Kosong\n");
    }
}

int main()
{
    int pil;
    int data;
    Create();

    do
    {
        system("cls");
        printf ("\n MENU PILIHAN PROGRAM QUEUE\n");
        printf ("1. Enqueue\n");
        printf ("2. Dequeue\n");
        printf ("3. Tampil\n");
        printf ("4. Clear\n");
        printf ("5. Keluar\n");
        printf ("Masukkan Pilihan Anda : ");
        scanf("%d",&pil);

    switch(pil)
    {
        case 1:
            printf("Data : ");
            scanf("%d",&data);
            Enqueue(data);
            break;

        case 2:
            printf("Elemen yang keluar : %d", Dequeue());
            break;

        case 3:
            Tampil();
            break;

        case 4:
            Clear();
            break;
        case 5:
            return 0;
            break;
    }
    getch();
    } while(pil!=5);
}
Sebenarnya di C++ sudah ada library untuk membuat queue, jadi untuk membuat queue kita cukup menambahkan header file queue pada awal baris dan selanjutnya kita bisa menggunakan method dan fungsi yang telah disediakan untuk membuat antrian seperti emptysizefrontbackpush_backpop_front dan lainnya.
Program kita disini hanya untuk mempelajari dasar dari queue itu sendiri, jadi mungkin banyak sekali perbedaan dengan yang ada di library. Nah, jangan sungkan untuk menyalin, memodifikasi dan mempelajari program yang telah kita buat diatas, dan mohon gunakan untuk kebaikan ya.

referansi

https://www.geeksforgeeks.org/queue-cpp-stl/




























Selasa, 05 Maret 2019

ALGORITMA DAN PEMROGRAMAN MATERI STUCK C++

Implementasi Stack di C++

Stack adalah tipe data abstrak yang umum digunakan pada seluruh pemrograman komputer.
Stack sendiri sama seperti halnya tumpukan jika di dunia nyata, misalnya tumpukan piring yang telah selesai dicuci, akan ditumpuk dari bawah ke atas, kemudian setelah semua bersih maka diambil satu persatu dari atas ke bawah di masukkan ke lemari atau rak piring.

Operasi Pada Stack

Operasi utama pada stack yaitu push untuk menambahkan data ke dalam stack dan pop untuk mengeluarkan atau menghapus data dari stack.

1. Menambahkan Data Ke stack

Proses penambahan data ke dalam stack disebut operasi Push.

Langkah - langkah operasi push diantaranya.
  1. Memeriksa apakah tumpukan(stack) penuh
  2. Jika tumpukan penuh, maka sudah tidak ada ruang untuk memasukkan data ke tumpukan, jadi cukup tampilkan pesan bahwa tumpukan sudah penuh.
  3. Jika masih ada ruang, tambahkan satu nilai pada atas(top) tumpukan untuk menunjukkan ke ruang kosong selanjutnya
  4. Menambahkan data dimana ruang kosong yang telah ditunjuk oleh top.2. Menghapus Data dari stack

2. Menghapus Data dari stack

Mengambil data bersamaan dengan menghapus data dari stack disebut dengan operasi pop.

Elemen pada stack tidak benar - benar terhapus hanya saja penunjuk ruang(top) di kurangi nilainya dengan satu. Tapi pada implementasi stack sendiri pop akan benar-benar menghapus data tersebut dari tumpukan.
Langkah - langkah operasi pop diantaranya.
  1. Memeriksa apakah tumpukan kosong.
  2. Jika tumpukan kosong, maka sudah tidak ada lagi data untuk dihapus, maka cukup tampilkan pesan bahwa tumpukan kosong.
  3. Jika masih ada data pada tumpukan, maka akses data yang paling atas (top)
  4. kemudian mengurangi nilai penunjuk top.

Program Stack

  1. Untuk mengimplementasikan program stack di C++ kita membutuhkan tiga method atau fungsi push(); untuk menambahkan data ke tumpukan, pop(); untuk me ngeluarkan data dari tumpukan dan printStack() untuk menampilkan data yang ada di tumpukan.
  2. Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk mengecek apakah tumpukan kosong isEmpty() dan tumpukan penuh isFull().
  3. Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum array yang nanti akan kita definisikan sebagai maksimum tumpukan.
  4. Agar data tumpukannya terstruktur kita bisa menggunakan struct sehingga lebih mudah mengakses data top dan array datanya sendiri seperti sebuah object.
  5. Karena ini adalah program konsole maka tentu kita juga akan membuat fungsi main().

Kode Program Stack

1. Preprocessor dan Headerfile

#include <iostream>
#define MAX 10
using namespace std;
Disini kita hanya menggunakan dua baris preprocessor untuk mendefinisikan header file iostream untuk standard input/output stream dan MAX untuk maksimum data array pada stack/tumpukan.
2. Struct data
//Deklarasi struct tumpukan
struct Stack {
 int top, data[MAX];
}Tumpukan;
Pada struct kita mendeklarasikan top untuk menunjukkan data teratas pada tumpukan dan array data[] dengan jumlah array dari data maksimum yang telah di definisikan sebelumnya yaitu MAX.
3. Inisialisasi Nilai top
void init(){
 Tumpukan.top = -1;
}
Untuk memastikan penunjuk (top) berada pada posisi indeks ke 0 pada saat menambahkan data ke tumpukan maka disini kita perlu memberikan nilai awal yaitu -1.
4. Memeriksa Tumpukan
bool isEmpty() {
  return Tumpukan.top == -1;
}

bool isFull() {
 return Tumpukan.top == MAX-1;
}
Kedua fungsi ini akan digunakan untuk memeriksa apakah tumpukan penuh isFull() (fungsi pertama) dan tumpukan kosong isEmpty(), keduanya mengembalikan nilai boolean, jadi kita cukup mengembalikan nilai perbandingan pada fungsi masing - masing.
  1. Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Tumpukan.topsama dengan -1, atau false jika tidak sama.
  2. Pada fungsi isFull() akan mengembalikan nilai true jika nilai Tumpukan.topsama dengan maksimum data array yang telah ditentukan dikurang satu MAX-1, atau false jika tidak sama.
5. Menambahkan Data ke Tumpukan
void push() {
   if (isFull()) {
  cout << "\nTumpukan penuh"<<endl;
 }
 else {
    Tumpukan.top++;
    cout << "\nMasukkan data = "; cin >> Tumpukan.data[Tumpukan.top];
    cout << "Data " << Tumpukan.data[Tumpukan.top] << " masuk ke stack"<<endl;
 }
}
Untuk menginputkan data ke tumpukan hal utama yang perlu kita lakukan adalah memeriksa apakah tumpukan penuh atau tidak, jika penuh, maka kita tidak dapat menambahkan data ke tumpukan karena sudah tidak ada ruang lagi yang tersedia. Jadi cukup tampilkan pesan bahwa Tumpukannya penuh.
Jika masih ada ruang maka tambahkan nilai Tumpukan.top dengan 1. Kemudian masukkan data ke ruang yang ditunjukkan oleh top.
6. Mengambil Data dari Tumpukan
void pop() {
 if (isEmpty()) {
  cout << "\nData kosong\n"<<endl;
 }
 else {
    cout << "\nData "<<Tumpukan.data[Tumpukan.top]<<" sudah terambil"<<endl;
    Tumpukan.top--;
 }
}
Sebelum mengambil data, kita perlu memeriksa apakah tumpukan kosong atau tidak, karena kita tidak dapat mengambil data yang tidak ada pada tumpukan.
Jika tumpukan kosong maka cukup tampilkan pesan bahwa tidak ada data di tumpukan tersebut.
Jika masih ada data pad tumpukan maka Tampilkan data dengan mengambil data teratas dari tumpukkan dan menghapus data tersebut dengan mengurangi nilai top.
7. Menampilkan data pada tumpukan
void printStack() {
 if (isEmpty()) {
  cout << "Tumpukan kosong";
 }
 else {
    cout << "\nTumpukan : ";
  for (int i = Tumpukan.top; i >= 0; i--)
   cout << Tumpukan.data[i] << ((i == 0) ? "" : ",");
 }
}
Sama halnya pada saat mengambil data dari tumpukan, kita juga perlu memeriksa apakah tumpukan tersebut kosong atau tidak.
Jika tidak ada data di tumpukan maka tampilkan pesan bahwa Tumpukan kosong dan data tidak dapat di tampilkan.
Jika masih ada data maka tampilkan data satu -persatu dari tumpukan dengan menggunakan perulangan.
8. Menampilkan Menu
int main() {
 int pilihan;
 init();
 do {
    printStack();
  cout << "\n1. Input (Push)\n"
        <<"2. Hapus (Pop)\n"
        <<"3. Keluar\n"
        <<"Masukkan Pilihan: ";
  cin >> pilihan;
  switch (pilihan)
  {
  case 1:
   push();
   break;
  case 2:
   pop();
   break;
  default:
      cout << "Pilihan tidak tersedia" << endl;
   break;
  }
 } while (pilihan!=3);
}
Setelah semua data, variabel dan fungsi selesai kita deklarasikan dan di inisialisasikan, selanjutnya kita bisa membuat menu dengan do ... while dengan switch di dalamnya.
Sebelum menampilkan menu disini kita menampilkan data yang ada di stack menggunakan printStack(), sehingga user dapat melihat data pada tumpukan.
Selanjunya menampilkan pilihan menu, jika user memilih pilihan pertama maka jalankan fungsi push() dan pilihan kedua akan menjalankan fungsi pop(). Selama pilihan user tidak sama dengan 3 yaitu pilihan ketiga maka fungsi printStack()dan menu akan terus ditampilkan. Jika user memilih pilihan ketiga, maka while akan berhenti menampilkan menu dan aplikasi akan ditutup.
contoh program

#include <iostream>
#include <conio.h>
#include <stdlib.h>
#define max 4

using namespace std;

struct Tumpukan
{
    int atas;
    int data[max];//array
}T;//objeknya adalah T

void awal()//prosedur awal digunakan untuk merubah index tumpukan ke -1: (-1=tumpukan kosong)
{
    T.atas=-1;
}

int kosong()//fungsi kosong (is empty) -> digunakan untuk mengecek apakah tumpukan kosong atau tidak
{
    if(T.atas==-1)//jika T atas bernilai -1 maka fungsi kosong bernilai benar jika tidak maka fungsi kosong bernilai salah
    return 1;
    else
    return 0;
}

int penuh()//(is full) digunakan untuk mengecek apakah tumpukan sudah penuh atau belum
{
    if(T.atas==max-1)//fungsi penuh bernilai benar/1 jika posisi  T.atas (max-1)=T.atas (4-1)=T.atas[3]
    return 1;
    else
    return 0;
}


void input(int data)//push digunakan untuk menginputkan data kedalam tumpukan.
{
    if(kosong()==1)
    {
        T.atas++;//T.atas=T.atas+1;
        T.data[T.atas]=data;
        cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
    }

    else if(penuh()==0)
    {
        T.atas++;
        T.data[T.atas]=data;
        cout<<"Data "<<T.data[T.atas]<<" masuk ke stack";
    }

    else
    cout<<"Tumpukan penuh";
}

void hapus()//prosedur untung menghapus tumpukan teratas
{
    if(kosong()==0)
    {
        cout<<"Data teratas sudah terambil";
        T.atas--;//T.atas=T.atas-1;
    }
    else
    cout<<"Data kosong";
}

void tampil()
{
    if(kosong()==0)
    {
        for(int i=T.atas;i>=0;i--)
        {
            cout<<"\nTumpukan ke "<<i<<"="<<T.data[i];
        }
    }
    else
    cout<<"Tumpukan kosong";
}

void bersih()//prosuder membersihkan tumpukan
{
    T.atas=-1;
    cout<<"Tumpukan kosong!";
}

//--------------------------------------->
int main()
{
    int pil,data;
    awal();
    do
    {
        system("cls");
        cout<<"1. Input (PUSH)\n2. Hapus (POP)\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukkan pilihan :";
        cin>>pil;
        switch(pil)
        {
            case 1:cout<<"Masukkan data = ";cin>>data;
            input(data);
            break;
            case 2:hapus();
            break;
            case 3:tampil();
            break;
            case 4:bersih();
            break;
            //case 5:top();
            // break;
            // case 6:isempty();
            // break;
            // case 7:Noel()
            //break
            case 8:
            cout<<"Terimakasih, tekan enter untuk keluar";
        }
    getch();
    }
while(pil!=5);
}

Hasil running

Referensi

https://bekti.net/blog/implementasi-stack-di-cpp/

Modul Debian 2