Senin, 18 Maret 2019

Materi Neww

QUEUE



1.    Pengertian Queue
       konsep queue adalah FIFO yang merupakan singkatan dari First In First Out, artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan antrian di sebuah loket pembelian tiket kereta, orang yang datang lebih dahulu, maka akan dilayani terlebih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya.
2.    Operasi Penting Queue
a.       Add yang berfungsi menambah sebuah elemen ke dalam antrian.
b.   Delete yang berfungsi menghapus atau mengeluarkan elemen dari  antrian.
3.    Operasi Dasar Queue
a.       Prosedur createEmpty
               Prosedur ini berfungsi untuk mengosongkaqueue dengan cara meletakkan HEAD dan TAIL pada indeks array ke-0.
Contoh:
void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}
b.      Prosedur Enqueue
Prosedur ini digunakan untuk memasukkan sebuah data/ nilai ke dalam queue. Sebelum sebuah data/ nilai dimasukkan ke dalam queue, maka prosedur ini terlebih dahulu melakukan pengecekan terhadap posisi HEAD dan TAIL. Jika posisi HEAD dan TAIL masih berada pada indeks ke-0 (artinya queue masih kosong), maka prosedur ini akan menempatkan HEAD dan TAIL pada indeks ke-1 terlebih dahulu, baru setelah itu memasukkan data/ nilai ke dalam array data queue. Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-0, maka posisi TAIL yang akan dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah yang berjalan seiring masuknya data baru ke dalam antrian, sedangkan HEAD akan tetap pada posisi ke-1.
Contoh :
void enqueue(int x)
{
if ((antrian.HEAD == 0) && (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
}

c.       Prosedur Dequeue
Prosedur ini digunakan untuk mengeluarkan atau membuang sebuah data/ nilai yang paling awal masuk (yang berada pada posisi HEAD, yakni yang paling depan dari antrian) ke dalam queue. Pekerjaan yang dilakukan oleh prosedur ini adalah menaikkan nilai HEAD satu level. Jadi, setiap satu kali data dikeluarkan, maka posisi HEAD naik bertambah satu level. Misalkan HEAD berada pada indeks ke-1, maka ketika akan mengeluarkan/ menghapus data pada posisi paling depan (pada posisi HEAD), prosedur ini akan menaikkan posisi HEAD ke indeks array ke-2.
Contoh:
void Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;
}.
   Posisi HEAD sudah melewati posisi TAIL (HEAD > TAIL), berarti sudah tidak ada lagi data/ nilai di dalam queue tersebut, maka saat itu terjadi, HEAD dan TAIL dikembalikan ke posisi ke-0.
d.      Fungsi IsEmpty
   Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue,  apakah queue tersebut kosong atau tidak. Jika queuetersebut kosong (artinya, HEAD dan TAIL berada pada posisi 0, atau bisa juga ketika HEAD > TAIL), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak kosong/ berisi (artinya, HEAD dan TAIL tidak berada pada posisi 0), maka fungsi akan mengembalikan nilai 0 (false).
Contoh:
int IsEmpty()
{
if ((antrian.HEAD> antrian.TAIL) || (antrian.HEAD == 0) &&
(antrian.TAIL == 0))
return 1;
else
return 0;
}
e.       Fungsi IsFull
Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah queuetersebut penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada posisi MAX), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika queuetersebut tidak penuh (artinya, TAIL tidak berada pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false).
Contoh :
Int IsFull()
{
if (antrian.TAIL == max)
return 1;
else
return 0;
}.


Jumat, 15 Maret 2019

Soal Alpro + Jawaban

Quiz struck, struck Array, dan Pointer



1. Soal

Konsep Tugas Algoritma Dan Pemprograman 2
Rumah Makan Welcome To Podo Moro

*Inputan
Memasukkan Jumlah Pelanggan: inputan
(perulangan sesuai dengan jumlah pelanggan yang dimasukkan)
Pembeli ke-1
Nama pelanggan : inputan
Tanggal               : inputan
Memasukkan Jumlah Pesanan : inputan
(perulangan sesuai jumlah jenis produk yang dibeli)
Kode  Menu :
         Makanan
         Minuman
Memasukkan kode menu [1/2]= inputan
Jika memilih 1 maka muncul tampilan :
“Anda memilih kode menu makanan”
Ketentuan I
Masukkan pilihan [1-3]
Ketentuan II
Jika memilih 2 maka muncul tampilan
“Anda memilih kode menu minuman”
Ketentun II
Memasukkan pilihan menu [1-3]
*Output
Pelanggan  ke-n :
Nama : Hasil Proses
Tanggal : Hari Proses
Menu Pesanan : Hasil Proses
Jumlah Pesanan : Hasil Proses
Total Pembayaran adalah Rp. Total Pembayaran

Ketentuan I
1Warna Kuning adalah inputan
2. Warna Merah adalah Hasil Proses
Ketentuan II
Jika memilih 1;
Menu Makanan:
1. Ayam Gebrek+ Nasi
2. Ayam Camcam+ Nasi
3. Ayam Rica-rica + Nasi
4. Ayam Bakar Super Pedas
5.  Ayam Bakar Biasa
6. Nasi Goreng Original + Sosis
7. Nasi Goreng Rica-rica + Kentucki
8. Nasi Goreng pedas + Dadar
Jika memasukkan angka 1 “Anda memilih ayam Gebrek+ Nasi”
Jika memasukkan angka 2 “Anda memilih ayam Camcam+ Nasi”
Jika memasukkan angka 3 “Anda memilih ayam Rica-rica+ Nasi”
Jika memasukkan angka 4 “Anda memilih ayam Bakar Super Pedas”
Jika memasukkan angka 5 “Anda memilih ayam Bakar Biasa”
Jika memasukkan angka 6 “Anda memilih ayam Nasi Goreng Original + Sosis”
Jika memasukkan angka 7 “Anda memilih ayam Nasi Goreng Rica-rica + Kentucki”
Jika memasukkan angka 8 “Anda memilih ayam Nasi Goreng pedas + Dadar”
Jika Memilih 2:
Memilih Minuman:
1.        Es lumut bahagia
2.        Es kopi
3.        Es jeruk
4.        Teh Es
5.        Jus Jeruk
6.        Jus Alpukat
7.        Teh Hangat
8.        Air Mineral Biasa
9.        Air Mineral Dingin
Jika memasukkan angka 1 “Es Lumut Bahagia”
Jika memasukkan angka 2 “Es Kopi”
Jika memasukkan angka 3 “Es Jeruk ”
Jika memasukkan angka 4 “Teh Es”
Jika memasukkan angka 5 “jus jeruk”
Jika memasukkan angka 6 “Jus Alpukat ”
Jika memasukkan angka 7 “Teh Hangat”
Jika memasukkan angka 8 “Air Mineral Biasa”
Jika memasukkan angka 9 “Air Mineral Dingin”
Jika salah menginput maka akan atomatis kembali pada pemilihan menu awal.
2. Listing


#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;

struct aray
{
    string jm[5][5][5],nama[10];
};
struct aray1
{
    int jml [5],jenis_menu [5][5],harga [5][5][5],kembali1[5][5][5],kembali2[5][5][5], kembali3[5][5][5];
};
struct aray2
{
    float sa[5][5],porsi [5][5][5];
};
struct aray3
{
    char kn [5][5][5],mn [5][5][5];
};
struct aray4
{
     float porsi [5][5][5],total[5][5][5];
};


void garis()
{
    cout<< "====================================================================================================="<<endl;
}
void daftar_menu1()
{
    cout<< "   Menu Makanan                     Harga perporsi "<<endl;
    cout<< "1. Ayam Gebrek + nasi               Rp. 12.000"<<endl;
    cout<< "2. Ayam camcam + nasi               Rp. 12.000"<<endl;
    cout<< "3. Ayam Rica-rica + nasi            Rp  13.000"<<endl;
    cout<< "4. Nasi Goreng Original + Sosis     Rp  12.000"<<endl;
    cout<< "5. Nasi Goreng Rica-rica + Kentucki Rp. 17.000"<<endl;
    cout<< "6. Nasi Goreng pedas + Dadar        Rp. 15.000"<<endl;
    cout<< "7. Ayam Bakar Super Pedas           Rp  25.000" <<endl;
    cout<< "8. Ayam Bakar Biasa                 Rp  20.000" <<endl;
}

void daftar_menu2()
{
    cout<< "Menu Minuman                        Harga perporsi "<<endl;
    cout<< "1. Es Lumut Bahagia                 Rp.5000"<<endl;
    cout<< "2. Es Kopi                          Rp. 5.000"<<endl;
    cout<< "3. Es Jeruk                         Rp 3.000 "<<endl;
    cout<< "4. Teh Es                           Rp.3.000"<<endl;
    cout<< "5. Jus Jeruk                        Rp. 5.000"<<endl;
    cout<< "6. Jus Alpukat                      Rp.10.000"<<endl;
    cout<< "7. Teh Hangat                       Rp. 2.000"<< endl;
    cout<< "8. Air Mineral Biasa                Rp. 4.000"<<endl;
    cout<< "9. Air Minersl Dingin               Rp.5.000"<<endl;
}

int total_harga (int t, int h)
{
    return(t*h);
}

int jum_hrg (int j)
{
    int jum;
    jum = 0;
    jum = jum+j;
    return(jum);
}

int pajak (int p)
{
    return(p*0.1);
}

int total_pembayar (int b, int y)
{
    return(b+y);
}

main ()
{
    int z,x,y,jp;
    int ttl;
    int b=6;

    aray lin;
    aray1 lin1;
    aray2 lin2;
    aray3 lin3;
    aray4 lin4;

    garis();
    cout << "       WELCOME TO PODO MORO              " << endl;
    garis();
    ofstream myfile ("sherly.txt");
    cout<< "Memasukkan Jumlah Pembeli :";cin>>jp;
    for (x=1; x<=jp; x++)
    {
        system ("cls");

        cout<< "Pembeli ke       :"<<x<<endl;
        cout<< "Nama             :";cin>>lin.nama[x];
        cout<< "Code Pembelian   :"<<lin.nama<<endl;
        cout<< "Masukkan Jumlah Pesanan :";cin>>lin1.jml[x];
        for (y=1; y<=lin1.jml[x]; y++)
        {
            system ("cls");

            cout<< "Pesanan ke : "<<y<<endl;
            kembali11:

            cout<< " 1. Makanan "<<endl;
            cout<< " 2. Minuman "<<endl;
            cout<< " Masukkan pilihan anda : ";cin>>lin2.sa[x][y];

            system ("cls");

            if (lin2.sa[x][y]==1)
            {
                kembali2 :

                daftar_menu1 ();

                cout<< "Masukan banyak menu makanan : "; cin>>lin1.jenis_menu[x][y];
                for (z=1; z<=lin1.jenis_menu[x][y]; z++)
                {
                    cout<< "Pesanan Makanan Anda Yang Ke:"<<z<<endl;
                    cout<< "Silakan Anda Memasukkan Pilihan makanan: ";cin>>lin3.kn[x][y][z];
                    if (lin3.kn [x][y][z]=='1')
                    {
                        cout<< "Anda Memilih Ayam Gebrek + Nasi"<<endl;
                        lin1.harga [x][y][z]=12000;
                        lin.jm[x][y][z]="Ayam Gebrek + Nasi";
                    }
                    else if (lin3.kn [x][y][z]=='2')
                    {
                        cout<< "Anda Memilih Ayam Camcam + Nasi "<<endl;
                        lin1.harga [x][y][z]=12000;
                        lin.jm[x][y][z]="Ayam Camcam  + Nasi";
                    }
                    else if (lin3.kn[x][y][z]=='3')
                    {
                        cout<< "Anda Memilih Ayam Rica-rica + Nasi"<<endl;
                        lin1.harga [x][y][z]=13000;
                        lin.jm[x][y][z]="Ayam Rica-rica + Nasi";
                    }
                    else if (lin3.kn[x][y][z]=='4')
                    {
                        cout<< "Anda Memilih Nasi Goreng Original + Sosis"<<endl;
                        lin1.harga [x][y][z]=12000;
                        lin.jm[x][y][z]="Nasi Goreng Original + Sosis";
                    }
                    else if (lin3.kn[x][y][z]=='5')
                    {
                        cout<< "Anda Memilih Nasi Goreng Rica-rica + Kentucki"<<endl;
                        lin1.harga [x][y][z]=17000;
                        lin.jm[x][y][z]="Nasi Goreng Rica-rica + Kentucki";
                    }
                    else if (lin3.kn[x][y][z]=='6')
                    {
                        cout<< "Anda Memilih Nasi Goreng Pedas + Dadar"<<endl;
                        lin1.harga [x][y][z]=15000;
                        lin.jm[x][y][z]="Nasi Goreng Pedas + Dadar";
                    }
                    else if (lin3.kn[x][y][z]=='7')
                    {
                        cout<< "Anda Memilih Donat"<<endl;
                        lin1.harga [x][y][z]=25000;
                        lin.jm [x][y][z]="Donat";
                    }
                    else if (lin3.kn[x][y][z]=='8')
                    {
                        cout<< "Anda Memilih Ayam Bakar Biasa + Nasi"<<endl;
                        lin1.harga [x][y][z]=20000;
                        lin.jm [x][y][z]="Ayam Bakar Biasa+ Nasi";
                    }
                    else
                    {
                        system ("cls");

                        cout<< "Maaf Menu Yang Anda Pilih Tidak Ada Dalam Daftar Menu Kami"<<endl;
                        cout<< "Apakah Anda Ingin Mengulangi Pemesanan [Y/T]";cin>>lin1.kembali2[x][y][z];
                        if (lin1.kembali2 [x][y][z]=='Y'||lin1.kembali2[x][y][z]=='y')
                        {
                            goto kembali2;
                        }
                        else
                        {
                            exit(0);
                        }

                    }
                    cout<< "Silakan Anda Memasukkan Jumlah Porsi Sesuai Yang Anda Pesan :";cin >>lin4.porsi[x][y][z];
                }
            }
            if (lin2.sa[x][y]== 2)

            {
                kembali3 :

                daftar_menu2 ();

                cout<< "Masukan banyak menu makanan : "; cin>>lin1.jenis_menu[x][y];
                for (z=1; z<=lin1.jenis_menu[x][y]; z++)
                {
                    cout<< "Pesanan Makanan Anda Yang Ke:"<<z<<endl;
                    cout<< "Silakan Anda Memasukkan Pilihan makanan: ";cin>>lin3.mn[x][y][z];
                    if (lin3.mn [x][y][z]=='1')
                    {
                        cout<< "Anda Memilih Es Lumut Bahagia "<<endl;
                        lin1.harga [x][y][z]=5000;
                        lin.jm[x][y][z]="Es Lumut Bahagia ";
                    }
                    else if (lin3.mn [x][y][z]=='2')
                    {
                        cout<< "Anda Memilih Es Kopi   "<<endl;
                        lin1.harga [x][y][z]=5000;
                        lin.jm[x][y][z]="Es Kopi  ";
                    }
                    else if (lin3.mn[x][y][z]=='3')
                    {
                        cout<< "Anda Memilih Es Jeruk "<<endl;
                        lin1.harga [x][y][z]=3000;
                        lin.jm[x][y][z]="Es Jeruk ";
                    }
                    else if (lin3.mn[x][y][z]=='4')
                    {
                        cout<< "Anda Memilih Es teh "<<endl;
                        lin1.harga [x][y][z]=3000;
                        lin.jm[x][y][z]="Es Teh";
                    }
                    else if (lin3.mn[x][y][z]=='5')
                    {
                        cout<< "Anda Memilih Jus Jeruk  "<<endl;
                        lin1.harga [x][y][z]=5000;
                        lin.jm[x][y][z]="Jus Jeruk  ";
                    }
                    else if (lin3.mn[x][y][z]=='6')
                    {
                        cout<< "Anda Memilih Jus Alpukat"<<endl;
                        lin1.harga [x][y][z]=10000;
                        lin.jm[x][y][z]="Jus Alpukat";
                    }
                    else if (lin3.mn[x][y][z]=='7')
                    {
                        cout<< "Anda Memilih Teh Hangat "<<endl;
                        lin1.harga [x][y][z]=2000;
                        lin.jm [x][y][z]="Teh Hangat ";
                    }
                    else if (lin3.mn[x][y][z]=='8')
                    {
                        cout<< "Anda Memilih Air Mineral Biasa   "<<endl;
                        lin1.harga [x][y][z]=4000;
                        lin.jm [x][y][z]="Air Mineral Biasa ";
                    }
                    else if (lin3.mn[x][y][z]=='9')
                    {
                        cout<< "Anda Memilih Air Mineral Dingin   "<<endl;
                        lin1.harga [x][y][z]=5000;
                        lin.jm [x][y][z]="Air Mineral Dingin ";
                    }
                    else
                    {
                        system ("cls");

                        cout<< "Maaf Menu Yang Anda Pilih Tidak Ada Dalam Daftar Menu Kami"<<endl;
                        cout<< "Apakah Anda Ingin Mengulangi Pemesanan [Y/T]:";cin>>lin1.kembali3[z][x][y];
                        if (lin1.kembali3 [x][y][z]=='Y'||lin1.kembali3[x][y][z]=='y')
                        {
                            goto kembali3;
                        }
                        else
                        {
                            exit(0);
                        }

                    }
                    cout<< "Silakan Anda Memasukkan Jumlah Porsi Sesuai Yang Anda Pesan :";cin >>lin4.porsi[x][y][z];
                }

             }


        }
    }

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

        for (x=1; x<=jp; x++)
        {
            cout << "     " << x<<endl;
            cout << "\t\t" <<setiosflags(ios::left)<<setw(20)<< lin.nama[x];

            ttl = 0;
            for(y=1; y<=lin1.jml[x]; y++)
            {
                for(z=1; z<=lin1.jenis_menu[x][y]; z++)
                {
                    cout << "  \t"<<setiosflags(ios::left)<<setw(20)  << lin.jm[x][y][z];
                    cout << "   \t"<<setiosflags(ios::left)<<setw(5) << lin4.porsi[x][y][z];
                    cout << "   \t"<<setiosflags(ios::left)<<setw(5) << lin1.harga[x][y][z];
                    cout << "   \t"<<setiosflags(ios::left)<<setw(5) <<total_harga( lin4.porsi[x][y][z], lin1.harga[x][y][z]);
                    cout << endl;
                    cout << "\t\t\t\t";
                    ttl = ttl+total_harga( lin4.porsi[x][y][z], lin1.harga[x][y][z]);
                }
            }
            cout << "                                              ----------------------------------- +"<<endl;
            cout << "                                              Jumlah Total Harga    Rp "<<jum_hrg(ttl)<<endl;
            cout << "                                              Pajak 10%             Rp "<<pajak(jum_hrg(ttl))<<endl;
            cout << "                                              Total Pembayaran      Rp "<<total_pembayar(jum_hrg(ttl), pajak(jum_hrg(ttl)))<<endl;
            cout << endl;
            cout <<endl;
            garis();
            cout << "                                                      TERIMA KASIH :)            " <<endl;
            garis();
        }
        cout<<endl;
        myfile.open("sherly.txt");
        {

            garis();
            myfile << "| jumlah    |         Nama         |         Pesanan         | Banyak |   Harga Satuan   |   Total Harga  | " <<endl;
            myfile << "| Pelanggan |                      |                         | Porsi  |                  |                | " <<endl;
            garis();
            for (x=1; x<=jp; x++)
            {
                myfile  << "     " << x<<endl;
                myfile  << "\t\t" <<setiosflags(ios::left)<<setw(20)<< lin.nama[x];

                ttl = 0;
                for(y=1; y<=lin1.jml[x]; y++)
                {
                    myfile;for(z=1; z<=lin1.jenis_menu[x][y]; z++)
                    {
                        myfile  << "  \t"<<setiosflags(ios::left)<<setw(20)  << lin.jm[x][y][z];
                        myfile  << "   \t"<<setiosflags(ios::left)<<setw(5) << lin4.porsi[x][y][z];
                        myfile << "   \t"<<setiosflags(ios::left)<<setw(5) << lin1.harga[x][y][z];
                        myfile  << "   \t"<<setiosflags(ios::left)<<setw(5) <<total_harga( lin4.porsi[x][y][z], lin1.harga[x][y][z]);
                        myfile  << endl;
                        myfile  << "\t\t\t\t";
                        ttl = ttl+total_harga( lin4.porsi[x][y][z], lin1.harga[x][y][z]);
                    }
                }
                myfile  << "                                              ----------------------------------- +"<<endl;
                myfile  << "                                              Jumlah Total Harga    Rp "<<jum_hrg(ttl)<<endl;
                myfile  << "                                              Pajak 10%             Rp "<<pajak(jum_hrg(ttl))<<endl;
                myfile  << "                                              Total Pembayaran      Rp "<<total_pembayar(jum_hrg(ttl), pajak(jum_hrg(ttl)))<<endl;
                myfile  << endl;
                myfile  <<endl;
            }
            garis();
            myfile<< "                                                      TERIMA KASIH :)            " <<endl;
            garis();
            myfile.close();
        }
        getch();
}





3. Running

4. Akses File


5. Penjelasan Secara Umum

   baris 1-6 dari program tersebut adalah bagian liberary. Using namespace untuk mewakili penggunaan std sin dan cout. Baris 10-29 merupakan operasi struct identitas yang berisi tipe data . Objek struct berupa lin. Baris 32- 84 merupakan operasi fungsi. Operasi struct dapat berjalan jika tipe data atau variabel ditambahi dengan lin diawalnya. Baris 102 - 110 merupakan operasi untuk memasukkan data pembeli dan jumlah pesan.  Baris 111- 284 digunakan untuk menginputkan menu makan dan minum. Baris 293- 328 merupakan outputan program. Baris 330-369 merupakan file akses.




Belajar Blog di Martikulasi MABA 2022

MARTIKULASI MABA 2022 Ini adalah pertama kali saya membuat blog, ini pengalaman yang sangat mengesankan untuk saya, karena saya bisa membu...