Mata Kuliah : Analisis Algoritma & Struktur Data Dosen : Jaenal Arifin, S.Kom, MM, M.Kom. Prodi :
Teknik Informatika Hari/Tanggal : Senin / 18 Juli 2022 Kelas : MC Waktu : 150 Menit
1.A Ketik ulang kode program dibawah ini lalu jalankan kemudian analisislah dengan memberikan
keterangan/penjelasan dari tiap baris kode programnya!
1.B Berkaitan dengan program diatas, jawablah pertanyaan berikut:
a. Apakah program diatas bisa berjalan dengan baik? Jika tidak, beri penjelasan kenapa dan
dimana letak kesalahannya?
Jawaban :
Tidak bisa , letak kesalahan berada di tulisan array yang terdapat salah penulisan abjad huruf
besar dan kecilnya
b. Header iomanip pada program diatas → #include <iomanip> berfungsi untuk apa?
Jawaban :
File header untuk menentukan beberapa manipulator yang masing-masing mengambil satu
argumen.
c. Jelaskan apa itu const dalam syntax const int size!
Mendeklarasikan konstanta yang nilainya tidak dapat dirubah oleh user.
d. Apa fungsi setw dalam syntax cout<<setw(3)<<NumList[d];
Untuk mengatur lebar dari suatu tampilan data.
2. Buatlah sebuah program atau sistem antrian pasien yang dapat menginput nomer antrian,
pemanggilan giliran, melihat data antrian, menghitung waktu tunggu pasien pada saat mengantri
untuk berobat. Gunakan algoritma queue yang pernah dipelajari atau silahkan memodifikasi dari
contoh program latihan yang pernah diberikan dan buatlah tampilannya seperti gambar berikut :
13
22
56
Keterangan gambar:
Gambar 1: Tampilan utama program sistem antrian pasien (menu program)
Gambar 2: Menu 1> Proses input nomer antrian dengan menampilkan isi antrian (agar tidak double)
Gambar 3: Menu 3> Menampilkan nomer antrian yang diinputkan atau sisa antrian setelah
dipanggil Gambar 4: Menu 4> Untuk mengetahui lama waktu tunggu untuk dilayani (pada urutan
tertentu) dengan memperhatikan jumlah antrian depannya
Gambar 5: Menu 5> tampilan jika antrian dikosongkan
Gambar 6: Menu 6> tampilan jika memilih keluar dari program
#define MAX 5
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 Tampil()
{
printf(" Data Antrian :");
if (IsEmpty() == 0)
{
for (int i = antrian.head; i <= antrian.tail; i++)
{
printf(" %d", antrian.data[i]);
}
}
else
printf(" Belum ada!\n");
}
Enqueue(int data)
{
if (IsEmpty() == 1)
{
antrian.head = antrian.tail = 0;
antrian.data[antrian.tail] = data;
printf(" Antrian %d dimasukan ", antrian.data[antrian.tail]);
}
else if (IsFull() == 0)
{
antrian.tail++;
antrian.data[antrian.tail] = data;
printf(" Antrian %d dimasukan ", antrian.data[antrian.tail]);
}
else if (IsFull() == 1)
printf(" Antrian penuh!");
}
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--;
printf(" Antrian nomor %d sudah diambil", e);
return e;
}
void Clear()
{
antrian.head = antrian.tail = -1;
printf(" Antrian sudah dikosongkan");
}
if (IsEmpty() == 0)
{
cout << " Perkiraan waktu layanan (menit) :"<< time_queue[RandIndex] << endl;
int urutan = 1;
if (antrian.data[i] == nomor_ant)
{
cout << endl << " Anda berada diantrian ke : "<< (i+1) << endl;
cout << " Waktu tunggu anda : "<< (time_queue[RandIndex] * urutan) << endl;
}
urutan++;
}
}
}else{
printf(" Antrian kosong!\n");
}
}
main()
{
int pil;
int data;
int nomor_antrian;
Create();
do
{
system("cls");
cout << " |===================================|" << endl;
cout << " | oO SISTEM ANTRIAN PASIEN Oo |" << endl;
cout << " |===================================|" << endl;
cout << " | 1. Input Nomor Antrian | " << endl;
cout << " | 2. Panggil Nomor Antrian | " << endl;
cout << " | 3. Tampilkan Nomor Antrian | " << endl;
cout << " | 4. Perkirakan Waktu Tunggu | " << endl;
cout << " | 5. Bersihkan Antrian | " << endl;
cout << " | 6. Keluar | " << endl;
cout << " |===================================|" << endl;
cout << " Tentukan Pilihan : ";
cin >> pil;
switch (pil)
{
case 1:
Tampil();
cout << endl << " Masukan antrian baru : ";
cin >> data;
Enqueue(data);
break;
case 2:
Dequeue();
break;
case 3:
Tampil();
break;
case 4:
break;
}
getch();
} while (pil != 6);
// return 0;
exit(0);
}
-o- Selamat Mengerjakan Semoga Sukses -o-