TUGAS PRAKTIKUM MODUL XI LINKED LIST - QUEUE Prepared by: Bambang Susanto
Problem 1: Manajer Restoran Definisi Masalah
Anda adalah manager dari sebuah restoran pizza terkenal. Kebetulan pada hari ini seluruh karyawan yang bertugas menerima order dari pelanggan sedang sakit dan tidak bisa masuk kerja. Tanggung jawab Anda hari ini ditambah dengan menerima pesanan dari pelanggan. Setiap Anda menerima pesanan, Anda harus memberitahukan berapa lama waktu tunggu kepada pelanggan sebelum semua hidangan keluar. Untuk mempermudah persoalan, restoran Anda hanya menyediakan dua jenis makanan yaitu pizza dan pasta. Pizza siap dihidangkan dalam 12 menit, sedangkan pasta membutuhkan 8 menit. Pada satu saat, peralatan masak Anda hanya mampu membuat 4 hidangan pada satu jenis makanan. Jika pelanggan meja pertama memesan 2 pizza dan 2 pasta, waktu tunggunya adalah 12 menit. Jika pelanggan pertama dan kedua datang pada waktu yang sama dan pelanggan meja kedua memesan 3 pasta, maka waktu tunggunya adalah 16 menit (batch 1 sebanyak 4 pasta selama 8 menit, lalu batch 2 sebanyak 1 pasta selama 8 menit). Soal Asumsi:
Seluruh input dari user selalu valid. Input nama pelanggan tidak lebih dari 20 karakter.
Buatlah sebuah sistem antrean pesanan! (Menggunakan struktur data queue beserta fungsi untuk menambahkan data / Enqueue() pada antrean dan mengambil data / Dequeue()). Anda harus memberitahukan berapa lama waktu tunggu kepada pelanggan sebelum semua hidangan keluar. Buatlah program untuk menghitung waktu tersebut berdasarkan sistem antrean yang telah diimplementasi! Contoh: Misalnya ada 5 pelanggan yang masing-masing pesanannya adalah:
Pelanggan 1 2 3 4 5
Pesanan 2 pizza 2 pasta 3 pasta 2 pizza 2 pasta 4 pizza 4 pasta
Pelanggan 1 2 3 4 5
Waktu Tunggu 12 menit 16 menit 12 menit 16 menit 24 menit
Pesanan 1 pizza 2 pasta 3 pizza 4 pizza 4 pasta 2 pasta 1 pizza
Pelanggan 1 2 3 4 5
Waktu Tunggu 12 menit 12 menit 24 menit 16 menit 36 menit
Pesanan 1 pizza 2 pasta 2 pizza 4 pasta 2 pizza 2 pasta 1 pizza 2 pasta
Pelanggan 1 2 3 4 5
Waktu Tunggu 12 menit 16 menit 24 menit 16 menit 24 menit
Contoh lain: Pelanggan 1 2 3 4 5 Contoh lain: Pelanggan 1 2 3 4 5
Contoh Input dan Output
Contoh 1: 3 orang pelanggan
Contoh lain: 5 orang pelanggan
Deliverable
Simpan tugas problem ke-1 dengan nama problem1.c. Jangan lupa memberikan identitas (header file) di awal file ini. Pastikan program dapat dikompilasi dan dijalankan dengan benar. Tampilan program dibuat semirip mungkin dengan contoh diatas (karakter center-aligned). Gunakan linked list untuk mengimplementasi struktur data yang dibutuhkan. Tidak boleh menggunakan static array.
Problem 2: Reverse Queue Definisi Masalah
Buatlah program untuk membalikkan urutan seluruh isi queue! Queue berukuran minimal 1 dan maksimal 20 buah tipe data integer. Ukuran queue di-random secara otomatis menggunakan fungsi random pada library <stdlib.h>. Seluruh isi (elemen) queue di-generate secara random juga dengan nilai maksimal 20 (dari 0 hingga 20). User tidak meng-input apapun ke program.
Contoh Input dan Output
Deliverable
Simpan tugas problem ke-2 dengan nama problem2.c. Jangan lupa memberikan identitas (header file) di awal file ini. Pastikan program dapat dikompilasi dan dijalankan dengan benar. Gunakan linked list untuk mengimplementasi struktur data yang dibutuhkan. Tidak boleh menggunakan static array.
Petunjuk Penyerahan Tugas Praktikum Modul XII Simpan kedua file (problem1.c dan problem2.c) dalam satu folder. Gunakan program 7-zip untuk mengkompresi menjadi arsip TAR (.tar) atau ZIP (.zip). Penamaan file arsip bebas (disarankan menggunakan NIM). File arsip ini yang akan di-submit ke server MIKU saat pengumpulan tugas pendahuluan saat memasuki laboratorium. Hanya file kode saja yang dimasukkan ke dalam arsip. File executable tidak perlu dimasukkan.
Selesai.