Rabu, 20 Maret 2019

Implementasi Queue di 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.
Jika ada yang keluar dari antrian (dequeue) maka data tersebut adalah yang paling depan (head/front), dan data berikutnya setelah data yang keluar berubah menjadi yang paling depan (head/front).
Queue menggunakan metode FIFO, dimana yang masuk pertama kali akan keluar pertama kali juga.

Program QUEUE

1.     Untuk mengimplementasikan program queue di C++ kita membutuhkan tiga method atau fungsi enqueue() ; untuk menambahkan data ke antrian, dequeue(); untuk me ngeluarkan data dari antrian dan printQueue() untuk menampilkan queue.
2.     Selain tiga fungsi tersebut, kita akan membuat dua fungsi opsional untuk mengecek apakah antrian kosong isEmpty() dan antrian penuh isFull() .
3.     Untuk menyimpan data kita bisa menggunakan empty array dengan maksimum array yang nanti akan kita definisikan sebagai maksimum antrian, jadi kita bisa mengetahui indeks pertama adalah front dan data indeks yang kosong untuk menambahkan data sebagai rear-nya.
4.     Untuk data antriannya terstruktur kita bisa menggunakan struct sehingga lebih mudah mengakses data frontrear dan array datanya sendiri seperti sebuah object.
5.     Karena ini adalah program konsole maka tentu kita juga akan membuat fungsi Main().

Kode Program QUEUE

1. Preprocessor dan Header File

#include <iostream>
#define MAX 20 //maksimum data queue
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 queue/antrian.

2. Struct data

//Deklarasi struct antrian
struct Queue {
                    int front, rear, data[MAX];
}Q;
Pada struct kita mendeklarasikan front, rear dan array data[] dengan jumlah array dari data maksimum yang telah di definisikan sebelumnya yaitu MAX.
Deklarasi variabel pada struct sama halnya dengan pendeklarasian variabel pada umumnya, karena disini kita hanya memiliki tipe data yang sama, jadi kita bisa menghemat baris dengan menyebariskan tiga variabel bertipe integer.

3. Memeriksa antrian

//cek apakah antrian penuh
bool isFull() {
                    return Q.rear == MAX;
}
 
//cek apakah antrian kosong
bool isEmpty() {
                    return Q.rear == 0;
}
Kedua fungsi ini akan digunakan untuk memeriksa apakah antrian penuh isFull ()(fungsi pertama) dan antrian kosong isEmpty(), keduanya mengembalikan nilai boolean, jadi kita cukup mengembalikan nilai perbandingan pada fungsi masing - masing.
1.     Pada fungsi isFull() akan mengembalikan nilai true jika nilai Q.rear sama dengan maksimum data array yang telah ditentukan MAX, atau false jika tidak sama.
2.     Pada fungsi isEmpty() akan mengembalikan nilai true jika nilai Q.rear sama dengan 0 , atau false jika tidak sama.

4. Menampilkan Antrian

//Menampilkan Queue
void printQueue() {
                    if (isEmpty()) {
                    cout << "Antrian kosong"<<endl;
                    }
                    else {
                                         cout << "QUEUE : ";
                                         for (int i = Q.front; i < Q.rear; i++)
                                         //menambahkan koma jika data tidak terdapat di antrian pertama
                                                             cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
                                         cout << endl;
  }
}
Untuk menampilkan antrian, kita perlu memeriksa apakah antriannya kosong. Jika kosong maka tidak ada data untuk ditampilkan, jadi cukup tampilkan pesan. Tapi jika antrian berisi data atau ada antrian disana maka tampilkan data yang ada di antrian menggunakan for loop.
Disini kode di dalam perulangan/loop hanyalah elemen setiap data yang telah dimasukkan dengan menggunakan koma kecuali data terakhir.

5. Input Data ke antrian

//manambahkan data ke antrian
void enqueue() {
                    if (isFull())
                    {
                                         cout << "Antrian penuh!"<<endl;
                    }
                    else {
                                         int data;
                                         //menambahkan data ke antrian
                                         cout << "Masukkan Data : ";cin >> data;
                                         Q.data[Q.rear] = data;
                    //menempatkan tail pada elemen data terakhir yang ditambahkan
                                                             Q.rear++;
                                         cout << "Data ditambahkan\n";
                                         printQueue();
                                        
                                         }
Untuk menginputkan data ke antrian hal utama yang perlu kita lakukan adalah memeriksa apakah antrian penuh atau tidak, jika penuh, maka kita tidak dapat menambahkan data ke antrian karena sudah tidak ada ruang lagi yang tersedia.
Jika masih ada ruang maka inputkan data ke antrian dan tambahkan satu nilai ke Q.rear dimana data tersebut berada pada antrian paling belakang.
Disini kita juga memanggil fungsi printQueue() yang telah didefinisikan pada baris kode sebelumnya, secara langsung setelah data ditambahkan. Jadi user bisa melihat data ada di dalam antrian.

6. Mengambil Data antrian

// mengambil data dari antrian
void dequeue() {
                    if (isEmpty())
                    {
                                         cout << "Antrian masih kosong"<<endl;
                    }
                    else{
cout << "Mengambil data \"" << Q.data[Q.front] << "\"..." << endl;
                                         //menggeser antrian data ke head
                                         for (int i = Q.front; i < Q.rear; i++)
                                                             Q.data[i] = Q.data[i + 1];
                                         //menempatkan tail pada data terakhir yang digeser
                                         Q.rear--;
                                         printQueue();
                    }
}
Sama halnya dengan menampilkan antrian, untuk mengambil data dari dalam antrian atau mengeluarkannya (dequeue), pertama kali kita perlu memeriksa apakah ada data dalam antrian. Karena kita tidak dapat menghapus data yang tidak ada pada antrian.
Jika ada data pada antrian, maka geser data ke antrian palng depan atau Q.front , disini kita akan menimpa data yang keluar dari antrian yang paling depan dan kemudian mengurangi satu nilai Q.rear.

7. Menampilkan Menu

int main() {
                    int choose;
                    do
                    {
                                         //Tampilan menu
                                         cout << "-------------------\n"
                                                             << "   Menu Pilihan\n"
                                                             << "-------------------\n"
                                                             << " [1] Enqueue \n"
                                                             << " [2] Dequeue\n"
                                                             << " [3] Keluar \n\n"
                                                             << "-------------------\n"
                                                             << "Masukkan pilihan : "; cin >> choose;
                                         switch (choose)
                                         {
                                         case 1:
                                                             enqueue();
                                                             break;
                                         case 2:
                                                             dequeue();
                                                             break;
                                         default:
                                                             cout << "Pilihan tidak tersedia";
                                                             break;
                                         }
                    } while (choose !=3);
                                         return 0;
}
Setelah semua fungsi dan variabel yang kita butuhkan telah tersedia, langkah terakhir adalah menggunakan fungsi-fungsi dan variabel tersebut menjadi sebuah program yang kita inginkan (program queue) dengan memanggilnya dan memolesnya menjadi sebuah menu pada fungsi main. Disini kita hanya perlu menggunakan perulangan while  dan switch untuk menentukan pilihan user.
switch akan memeriksa pilihan user (disini adalah nilai variabel choose dengan tipe data integer). Disini hanya ada dua pilihan. pilihan pertama jika user ingin menambahkan data ke antrian dan pilihan kedua jika user ingin menghapus atau mengeluarkan data dari antrian. Selain dari kedua pilihan tersebut maka tampilkan pesan pilihan tidak tersedia .
Sedangkan while sendiri akan mengulang pilihan pada switch , selama user tidak memilih pilihan dengan nilai 3 atau choose ==3 .


Sabtu, 16 Maret 2019

APLIKASI SEDERHANA DALAM C++


APLIKASI SEDERHANA BERDASARKAN KASUS
“RUMAH MAKAN ANYA”

         Dalam blog ini akan membuat sebuah program aplikasi berdasarkan kasus yaitu “Rumah Makan”, yang mana berati didalam aplikasi ini akan memunculkan sebuah prorgram yang dapat di aplikasikan secara langsung di kehidupan nyata pada kasir di rumah makan. Program ini di koding dengan syntax kodingan berbahasa C++. Dalam aplikasi ini, program berwujud project yang berati file kodingan terpisah-pisah (console application / .cbp). Pemrograman juga menggunakan beberapa jenis operasi pemrograman, yaitu :
1.       Operasi penyeleksian kondisi adalah pernyattan percabangan (penyeleksian kondisi)digunakan untuk memecahka persoalan untuk mengambul suatu keputusan dari beberapa pilihan sesuai kondisi yang dialami program. Substatment di dalam badan pernyattan majemuk akan di eksekusi jika kebutuhan tersebut terpenuhi.

Alur pembacaan program akan mengalir dari atas kebawah, melakukan eksekusi pernyataan,jika dalam program ditemukan pernyataan penyeleksian, sebelum komputer memilih dan mengeksekusi pilihan yang ada, program akan memeriksa kondisi pada pembacaan. Jika kondisi sesuai dengan keadaan program =,maka pilihan tersebut akan di eksekusi. Pada program kali ini hanya menggunakan “if else”
2.        Operasi perulangan, merupakan struktur program yang dapat di gunakan untuk melakukan statement yang sama secara terus menerus dengan cara yang efisien dan efektif selama kondisi tersebut terpenuhi, pada program ini menggunakan operasi perulangan “for” dan “goto” .
3.       Operasi Array , merupakan Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang ssama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu array ditunjukan ooleh suatu indeks untuk membedakan variabel yang satu dengan variael yang lainnya
Array terbagi menjadi tiga jenis :
a.       Array 1 dimensi
b.       Array 2 dimensi
c.       Array 3 dimensi
Program kali menggunakan Array 3 dimensi.
4.       Operasi fungsi, merupakan blok dari kode yang dirancangan untuk menggunakan tugas khusus. Kegunaan dari fungsi ini adalah untuk
a.       Mengurangi pengulangan program yang berulangan atau sama
b.       Program menjadi lebih terstruktur. Sehingga mudah di pahami dan dapat lebih di kembangkan.
5.       Struct atau struktur digunakan untuk mengelompokan sejumlah data yang mempunyai data yang berbeda. Variabel-Variabel yang membentuk sebuah struktur dinamakan elemen struktur (struktur sama seperti Record), pada program ini menggunakan struktur array
6.       Pointer, Merupakan Sebuah variabel yang Berisi Alamat dari Variabel Lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.

LISTING PROGRAM
#include <iostream> //cout
#include <conio.h> //getch()
#include <windows.h> //system dan exit
#include <iomanip> //setiosflags dan setw
#include <fstream> // myfile

using namespace std;

void garis()
{
    cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" <<endl;
}

void tambah()
{
    cout << "                                                                  ----------------------------------------+ " <<endl;
}

void grs()
{
    cout << "=========================================================================================================== " <<endl;
}

void wong ()
{
    cout << "\t\t\t\t\t\t\t\t      WELCOME TO                                     " <<endl;
    cout << "\t\t\t\t\t\t\t\t   AYAM BAKAR ANYA                                " <<endl;
}

void menu1()
{
    cout << " Daftar Makanan          Harga   " <<endl;
    cout << "---------------------------------" <<endl;
    cout << " 1. Ayam Bakar        Rp 20.000  " <<endl;
    cout << " 2. Ayam Penyet       Rp 15.000  " <<endl;
    cout << " 3. Ayam Goreng       Rp 13.000  " <<endl;
    cout << " 4. Bebek Penyet      Rp 13.000  " <<endl;
    cout << " 5. Bebek Goreng      Rp 22.000  " <<endl;
    cout << " 6. Ikan Penyet       Rp 22.000  " <<endl;
    cout << " 7. Cah Kangkung      Rp 10.000  " <<endl;
    cout << " 8. Cumi Goreng       Rp 20.000  " <<endl;
    cout << " 9. Udang Goreng      Rp 20.000  " <<endl;
    cout << " 10. Cap Cay          Rp 17.000  " <<endl;
    cout << " 11. Nasi Putih       Rp  4.000  " <<endl;
    cout << " 12. Nasi Uduk        Rp  7.000  " <<endl;
}

void menu2()
{
    cout << " Daftar Minuman        Harga           " <<endl;
    cout << "---------------------------------------" <<endl;
    cout << " 1. Air Mineral       Rp 3000          " <<endl;
    cout << " 2. Teh               Rp 2000-6000     " <<endl;
    cout << " 3. Es Jeruk          Rp 5000          " <<endl;
    cout << " 4. Jus               Rp 10.000-13.000 " <<endl;
    cout << " 5. Minuman Bersoda   Rp 10.000        " <<endl;
    cout << " 6. Chocolate         Rp 15.000        " <<endl;
}

void menujus()
{
    cout << "   Daftar Jus         Harga    " <<endl;
    cout << "-------------------------------" <<endl;
    cout << " a. Jus Wortel      Rp 10.000  " <<endl;
    cout << " b. Jus Nanas       Rp 10.000  " <<endl;
    cout << " c. Jus Apel        Rp 10.000  " <<endl;
    cout << " d. Jus Melon       Rp 10.000  " <<endl;
    cout << " e. Jus Alpukat     Rp 10.000  " <<endl;
    cout << " f. Jus Jeruk       Rp 10.000  " <<endl;
    cout << " g. Jus Mangga      Rp 10.000  " <<endl;
    cout << " h. Jus Tomat       Rp 10.000  " <<endl;
    cout << " i. Jus Buah Naga   Rp 12.000  " <<endl;
    cout << " j. Jus Durian      Rp 13.000  " <<endl;
}

void kasih()
{
    cout << "==================================================================================================================================================== " <<endl;
    cout << "                                                              TERIMA KASIH :)                                                                        " <<endl;
    cout << "==================================================================================================================================================== " <<endl;
}

long int total(long int x, long int y)
{
    return(x*y);
}

long int tot_harga(long int m)
{
    long int ttl;
    ttl=0;
    ttl=ttl+m;
    return(ttl);
}

float pajak(float n)
{
    return(n*0.15);
}

long int tot_bayar(long int o    , long int p)
{
    return(o+p);
}

struct kevin
{
    int makan_minum[5];
    int makanan[5][5],minuman[5][5];
    long int uang;
    long int ttl[5], tot;
    long int duitkembali, kembalian;
    string nama,mm[5][5];
    char back0,back1,back2,back3,ulg_akhir;
    char pesanan[5],ayam_pedas[5][5],ayam_tepung[5][5],bebek_tepung[5][5];
    char cumi_tepung[5][5],udang_tepung[5][5],capcay[5][5],nasgor[5][5];
    char teh[5][5],jus[5][5],soda[5][5],coklat[5][5];
    float hrg[5][5];
    float porsi[5][5];
    float tol, tol_hrg;

}z[10];

main()
{
    int w[5][5], x[5], y, a, b, c, d;



    cout <<endl;
    garis(); //pemnggillan void
    wong(); //pemnggillan void
    garis(); //pemnggillan void

    back0:



    cout << " Masukan Banyak Pelanggan : "; cin >> y; //banyak pelanggan yang diinginkan
    for (d=1; d<=y; d++) // perulangan pertama untuk banyak pelanggan

    {

        system("cls");
        cout <<endl;
        cout << " Pelanggan Ke-" << d <<endl;
        cin.ignore();
        cout << " Nama Pelanggan            : "; getline(cin, z[d].nama); //inputan nama agar bisa menggunakan spasi
        cout << " Anda ingin berapa pesanan : "; cin >> x[d];

        for(a=1; a<=x[d]; a++) // perulangan kedua untuk banyak pesanan
        {
            system("cls");
            cout <<endl;
            cout << " Pesanan ke-" << a <<endl;

            back1: //jika salah memasukan pilihan maka akan kembali kesini

            cout << " A. Makanan " <<endl;
            cout << " B. Minuman " <<endl;
            cout << " Anda ingin memesan apa ? "; cin >> z[d].pesanan[a];
            if(z[d].pesanan[a]=='A'||z[d].pesanan[a]=='a')
            {
                back2:
                cout <<endl;
                cout << " Berapa jenis makanan yang anda inginkan ? "; cin >> w[d][a];
                system("cls");
                cout <<endl;
                menu1(); // fungsi menu makanan
                for(b=1; b<=w[d][a]; b++) // perulangan ketiga untuk banyak menu makanan yang diinginkan
                {
                    cout <<endl;
                    cout <<endl;
                    cout << " Makanan Ke-" << b <<endl;
                    cout << " Masukkan Pilihan Anda : "; cin >> z[d].makanan[a][b];
                    if (z[d].makanan[a][b]==1)
                    {
                        cout << " Apakah anda ingin rasa pedas ? [Y/T] "; cin >> z[d].ayam_pedas[a][b];
                        if (z[d].ayam_pedas[a][b]=='Y'||z[d].ayam_pedas[a][b]=='y')
                        {
                            cout << " Anda memilih Ayam bakar pedas " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Ayam bakar pedas";
                        }
                        else if (z[d].ayam_pedas[a][b]=='T'||z[d].ayam_pedas[a][b]=='t')
                        {
                            cout << " Anda memilih Ayam bakar Manis " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Ayam Bakar Manis";
                        }
                    }
                    else if (z[d].makanan[a][b]==2)
                    {
                        cout << " Anda memilih Ayam Penyet " <<endl;
                        z[d].hrg[a][b]=15000;
                        z[d].mm[a][b]="Ayam Penyet";
                    }
                    else if (z[d].makanan[a][b]==3)
                    {
                        cout << " a. Ayam goreng tepung " <<endl;
                        cout << " b. Ayam goreng biasa  " <<endl;
                        cout << " Masukkan pilihan anda "; cin >> z[d].ayam_tepung[a][b];
                        if (z[d].ayam_tepung[a][b]=='a'||z[d].ayam_tepung[a][b]=='A')
                        {
                            cout << " Anda memilih Ayam goreng tepung " <<endl;
                            z[d].hrg[a][b]=13000;
                            z[d].mm[a][b]="Ayam goreng tepung";
                        }
                        else if (z[d].ayam_tepung[a][b]=='b'||z[d].ayam_tepung[a][b]=='B')
                        {
                            cout << " Anda memilih Ayam goreng biasa " <<endl;
                            z[d].hrg[a][b]=13000;
                            z[d].mm[a][b]="Ayam goreng";
                        }
                    }
                    else if (z[d].makanan[a][b]==4)
                    {
                        cout << " Anda memilih Bebek penyet " <<endl;
                        z[d].hrg[a][b]=13000;
                        z[d].mm[a][b]="Bebek Penyet";
                    }
                    else if (z[d].makanan[a][b]==5)
                    {
                        cout << " a. Bebek goreng tepung " <<endl;
                        cout << " b. Bebek goreng biasa  " <<endl;
                        cout << " Masukkan pilihan anda "; cin >> z[d].bebek_tepung[a][b];
                        if (z[d].bebek_tepung[a][b]=='a'||z[d].bebek_tepung[a][b]=='A')
                        {
                            cout << " Anda memilih Bebek goreng tepung " <<endl;
                            z[d].hrg[a][b]=22000;
                            z[d].mm[a][b]="Bebek goreng tepung";
                        }
                        else if (z[d].bebek_tepung[a][b]=='b'||z[d].bebek_tepung[a][b]=='B')
                        {
                            cout << " Anda memilih Bebek goreng biasa " <<endl;
                            z[d].hrg[a][b]=22000;
                            z[d].mm[a][b]="Bebek goreng";
                        }
                    }
                    else if (z[d].makanan[a][b]==6)
                    {
                        cout << " Anda memilih Ikan penyet " <<endl;
                        z[d].hrg[a][b]=22000;
                        z[d].mm[a][b]="Ikan penyet";
                    }
                    else if (z[d].makanan[a][b]==7)
                    {
                        cout << " Anda memilih Cah kangkung " <<endl;
                        z[d].hrg[a][b]=10000;
                        z[d].mm[a][b]="Cah kangkung";
                    }
                    else if (z[d].makanan[a][b]==8)
                    {
                        cout << " a. Cumi goreng tepung " <<endl;
                        cout << " b. Cumi goreng biasa  " <<endl;
                        cout << " Masukkan pilihan anda "; cin >> z[d].cumi_tepung[a][b];
                        if (z[d].cumi_tepung[a][b]=='a'||z[d].cumi_tepung[a][b]=='A')
                        {
                            cout << " Anda memilih Cumi goreng tepung " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Cumi goreng tepung";
                        }
                        else if (z[d].cumi_tepung[a][b]=='b'||z[d].cumi_tepung[a][b]=='B')
                        {
                            cout << " Anda memilih Cumi goreng biasa " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Cumi goreng";
                        }
                    }
                    else if (z[d].makanan[a][b]==9)
                    {
                        cout << " a. Udang goreng tepung " <<endl;
                        cout << " b. Udang goreng biasa  " <<endl;
                        cout << " Masukkan pilihan anda "; cin >> z[d].udang_tepung[a][b];
                        if (z[d].udang_tepung[a][b]=='a'||z[d].udang_tepung[a][b]=='A')
                        {
                            cout << " Anda memilih Udang goreng tepung " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Udang goreng tepung";
                        }
                        else if (z[d].udang_tepung[a][b]=='b'||z[d].udang_tepung[a][b]=='B')
                        {
                            cout << " Anda memilih Udang goreng biasa " <<endl;
                            z[d].hrg[a][b]=20000;
                            z[d].mm[a][b]="Udang goreng";
                        }
                    }
                    else if (z[d].makanan[a][b]==10)
                    {
                        cout << " a. Cap cay goreng " <<endl;
                        cout << " b. Cap cay kuah " <<endl;
                        cout << " Masukkan Pilihan anda "; cin >> z[d].capcay[a][b];
                        if (z[d].capcay[a][b]=='a'||z[d].capcay[a][b]=='A')
                        {
                            cout << " Anda memilih Cap cay goreng " <<endl;
                            z[d].hrg[a][b]=17000;
                            z[d].mm[a][b]="Cap cay goreng";
                        }
                        else if (z[d].capcay[a][b]=='b'||z[d].capcay[a][b]=='B')
                        {
                            cout << " Anda memilih Cap cay kuah " <<endl;
                            z[d].hrg[a][b]=17000;
                            z[d].mm[a][b]="Cap cay kuah";
                        }
                    }
                    else if (z[d].makanan[a][b]==11)
                    {
                        cout << " Anda memilih Nasi putih " <<endl;
                        z[d].hrg[a][b]=4000;
                        z[d].mm[a][b]="Nasi Putih";
                    }
                    else if (z[d].makanan[a][b]==12)
                    {
                        cout << " Anda memilih Nasi uduk " <<endl;
                        z[d].hrg[a][b]=7000;
                        z[d].mm[a][b]="Nasi Uduk";
                    }
                    else
                    {
                        cout <<endl;
                        cout << " Anda salah memasukan pilihan " <<endl;
                        cout << " Apakah ingin mengulang [Y/T] ? "; cin >> z[d].back2;
                        if(z[d].back2=='Y'||z[d].back2=='y')
                        {
                            system("cls");
                            goto back2;//kembali ke back2
                        }
                        else
                        {
                            exit(0);//program akan berhenti dan keluar
                        }
                    }
                    cout << " Anda ingin berapa porsi ? "; cin >> z[d].porsi[a][b];
                    z[d].tol_hrg = z[d].hrg[a][b]*z[d].porsi[a][b]; //perhitungan harga makanan dikali dengan jumlah porsi
                }
            }

            else if(z[d].pesanan[a]=='B'||z[d].pesanan[a]=='b')
            {
                back3:
                cout <<endl;
                cout << " Berapa jenis minuman yang anda inginkan ? "; cin >> w[d][a];
                system("cls");
                cout <<endl;
                menu2(); // fungsi menu makanan
                for(b=1; b<=w[d][a]; b++) // perulangan banyak menu minuman yang diinginkan
                {
                    cout <<endl;
                    cout << " Minuman Ke-" << b <<endl;
                    cout << " masukan pilihan anda ";cin >> z[d].minuman[a][b];
                    if (z[d].minuman[a][b]==1)
                    {
                        cout << " Anda memilih air mineral " <<endl;
                        z[d].hrg[a][b]=3000;
                        z[d].mm[a][b]="Air Mineral";
                    }
                    else if (z[d].minuman[a][b]==2)
                    {
                        cout << " a. Teh hangat        " <<endl;
                        cout << " b. Es teh            " <<endl;
                        cout << " c. Teh botol sosro   " <<endl;
                        cout << " Masukan pilihan anda "; cin >> z[d].teh[a][b];
                        if(z[d].teh[a][b]=='a'||z[d].teh[a][b]=='A')
                        {
                            cout << " Anda memilih Teh hangat " <<endl;
                            z[d].hrg[a][b]=2000;
                            z[d].mm[a][b]="Teh Hangat";
                        }
                        else if (z[d].teh[a][b]=='b'||z[d].teh[a][b]=='B')
                        {
                            cout << " Anda memilih Es teh " <<endl;
                            z[d].hrg[a][b]=3000;
                            z[d].mm[a][b]="Es Teh";
                        }
                        else if (z[d].teh[a][b]=='c'||z[d].teh[a][b]=='C')
                        {
                            cout << " Anda memilih Teh botol sosro " <<endl;
                            z[d].hrg[a][b]=6000;
                            z[d].mm[a][b]="Teh Botol Sosro";
                        }
                    }
                    else if (z[d].minuman[a][b]==3)
                    {
                        cout << " Anda memilih Es jeruk " <<endl;
                        z[d].hrg[a][b]=5000;
                        z[d].mm[a][b]="Es Jeruk";
                    }
                    else if (z[d].minuman[a][b]==4)
                    {
                        cout <<endl;
                        menujus();
                        cout << " Masukkan pilihan anda "; cin >> z[d].jus[a][b];
                        if (z[d].jus[a][b]=='a'||z[d].jus[a][b]=='A')
                        {
                            cout << " Anda memilih Jus Wortel " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Wortel";
                        }
                        else if (z[d].jus[a][b]=='b'||z[d].jus[a][b]=='B')
                        {
                            cout << " Anda memilih Jus Nanas " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Nanas";
                        }
                        else if (z[d].jus[a][b]=='c'||z[d].jus[a][b]=='C')
                        {
                            cout << " Anda memilih Jus Apel " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Apel";
                        }
                        else if (z[d].jus[a][b]=='d'||z[d].jus[a][b]=='D')
                        {
                            cout << " Anda memilih Jus Melon " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Melon";
                        }
                        else if (z[d].jus[a][b]=='e'||z[d].jus[a][b]=='E')
                        {
                            cout << " Anda memilih Jus Alpukat " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Alpukat";
                        }
                        else if (z[d].jus[a][b]=='f'||z[d].jus[a][b]=='F')
                        {
                            cout << " Anda memilih Jus Jeruk " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Jeruk";
                        }
                        else if (z[d].jus[a][b]=='g'||z[d].jus[a][b]=='G')
                        {
                            cout << " Anda memilih Jus Mangga " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Mangga";
                        }
                        else if (z[d].jus[a][b]=='h'||z[d].jus[a][b]=='H')
                        {
                            cout << " Anda memilih Jus Tomat " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Jus Tomat";
                        }
                        else if (z[d].jus[a][b]=='i'||z[d].jus[a][b]=='I')
                        {
                            cout << " Anda memilih Jus Buah Naga " <<endl;
                            z[d].hrg[a][b]=12000;
                            z[d].mm[a][b]="Jus Buah naga";
                        }
                        else if (z[d].jus[a][b]=='j'||z[d].jus[a][b]=='J')
                        {
                            cout << " Anda memilih Jus Durian " <<endl;
                            z[d].hrg[a][b]=13000;
                            z[d].mm[a][b]="Jus Durian";
                        }
                    }
                    else if (z[d].minuman[a][b]==5)
                    {
                        cout << " a. Coca-cola " <<endl;
                        cout << " b. Sprite    " <<endl;
                        cout << " Masukan pilihan anda : "; cin >> z[d].soda[a][b];
                        if (z[d].soda[a][b]=='a'||z[d].soda[a][b]=='A')
                        {
                            cout << " Anda memilih Coca-cola " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Coca-coca";
                        }
                        else if (z[d].soda[a][b]=='b'||z[d].soda[a][b]=='B')
                        {
                            cout << " Anda memilih Sprite " <<endl;
                            z[d].hrg[a][b]=10000;
                            z[d].mm[a][b]="Sprite";
                        }
                    }
                    else if (z[d].minuman[a][b]==6)
                    {
                        cout << " a. Ice Blend Chocolate " <<endl;
                        cout << " b. Hot Chocolate       " <<endl;
                        cout << " Masukan pilihan anda   "; cin >> z[d].coklat[a][b];
                        if (z[d].coklat[a][b]=='a'||z[d].coklat[a][b]=='A')
                        {
                            cout << " Anda memilih Ice Blend Chocolate " <<endl;
                            z[d].hrg[a][b]=15000;
                            z[d].mm[a][b]="Ice Blend Chocolate";
                        }
                        else if (z[d].coklat[a][b]=='b'||z[d].coklat[a][b]=='B')
                        {
                            cout << " Anda memilih Hot Chocolate " <<endl;
                            z[d].hrg[a][b]=15000;
                            z[d].mm[a][b]="Hot Chocolate";
                        }
                    }
                    else
                    {
                        cout <<endl;
                        cout << " Anda salah memasukkan pilihan " <<endl;
                        cout << " Apakah Anda ingin mengulang [Y/T] ? "; cin >> z[d].back3;
                        if(z[d].back3=='Y'||z[d].back3=='y')
                        {
                            system("cls");
                            goto back3; //kembali ke back3:
                        }
                        else
                        {
                            exit(0); //program berhenti
                        }
                    }

                    cout << " Anda ingin berapa porsi ? "; cin >> z[d].porsi[a][b];
                    z[d].tol_hrg = z[d].hrg[a][b]*z[d].porsi[a][b]; //perhitungan per pesanan
                }
            }
            else
            {
                system("cls");
                cout <<endl;
                cout << " Anda salah memasukan pilihan " <<endl;
                cout << " Apakah ingin mengulang [Y/T] ? "; cin >> z[d].back1;
                if(z[d].back1=='Y'||z[d].back1=='y')
                {
                    cout <<endl;
                    goto back1;
                }
                else
                {
                    exit(0);
                }
            }
        }
        cout <<endl;
        getch();
    }

    system("cls");
    cout <<endl;
    cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  " <<endl;
    cout << "| Pelanggan |         Nama         |         Pesanan         | Banyak |   Harga Satuan   |   Total Harga  | " <<endl;
    cout << "|    Ke     |                      |                         | Porsi  |                  |                | " <<endl;
    cout << " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ " <<endl;

    for (d=1; d<=y; d++)
    {
        cout << "     " << d;
        cout << "\t\t" <<setiosflags(ios::left)<<setw(20)<< z[d].nama; // setiosflags digunakan untuk meratakan tabel otomatis

        z[d].tot = 0;
        for(a=1; a<=x[d]; a++)
        {

            for(b=1; b<=w[d][a]; b++)
            {
                cout << "  \t"<<setiosflags(ios::left)<<setw(20) << z[d].mm[a][b];
                cout << "   \t"<<setiosflags(ios::left)<<setw(5) << z[d].porsi[a][b];
                cout << "   \t"<<setiosflags(ios::left)<<setw(5)  << z[d].hrg[a][b];
                cout << "\t\t"<<setiosflags(ios::left)<<setw(10)  << total(z[d].hrg[a][b],z[d].porsi[a][b]);
                cout << endl;
                cout << "\t\t\t\t";
                z[d].tot=z[d].tot+total(z[d].hrg[a][b],z[d].porsi[a][b]); //perhitungan per pelanggan
            }
        }
        cout <<endl;

        tambah();
        cout << "                                                                      Total               = Rp " << tot_harga(z[d].tot) <<endl; //pemanggilan fungsi
        cout << "                                                                      Pajak 15%           = Rp " << pajak(tot_harga(z[d].tot)) <<endl; //pemanggilan fungsi
        cout << "                                                                      Total Pembayaran    = Rp " << tot_bayar(tot_harga(z[d].tot),pajak(tot_harga(z[d].tot))) <<endl; //pemanggilan fungsi
        kurangduit:
        cout << "                                                                      Masukan Uang Anda   = Rp "; cin >> z[d].kembalian;
        if(z[d].kembalian<tot_bayar(tot_harga(z[d].tot),pajak(tot_harga(z[d].tot))))
            {
                cout << "                                                                      Uang Anda Kurang !! " <<endl;
                goto kurangduit;
            }
        else if (z[d].kembalian>tot_bayar(tot_harga(z[d].tot),pajak(tot_harga(z[d].tot))))
            {
                z[d].duitkembali=z[d].kembalian-tot_bayar(tot_harga(z[d].tot),pajak(tot_harga(z[d].tot)));
                cout << "                                                                      Kembalian            = Rp " << z[d].duitkembali;
                cout <<endl;
            }
            cout << "                                                                      Alamat Pesanan        = "<<&z[d].mm[a][b]<<endl;
        grs();
        cout <<endl;
    }
}





HASIL RUNNINGAN


Diberdayakan oleh Blogger.

About me

Instagram : kvinrzkyxd
Wa : 082148535913

Email: kevinrizkyanya@gmail.com

Formulir Kontak

Nama

Email *

Pesan *

Total Tayangan Halaman


Cari Blog Ini

Sponsor

AD BANNER