//   QUEUE

#include	<stdio.h>
#include	<stdlib.h>

#define QUEUE_SIZE 5			// Queue size
char	queue[QUEUE_SIZE][100];

int		front;					// menunjuk ke ujung terdepan queue
int		rear;					// menunjuk ke elemen sesudah ujung terbelakang 

#define	next(a)	( ((a) +1) % QUEUE_SIZE)	// menghitung indeks elemen berikutnya



// inisialisasi

void init()
{
	front=rear=0;
}

// error 

void error(char *s)
{
	fprintf(stderr,s);
}

// fungsi untuk memeriksa apakah queue itu kosong atau tidak

int empty()
{
	return front==rear;

}


// ENQUEUE sebuah task baru 

void enqueue(char *x)
{
// Periksalah terlebih dahulu, apakah queue itu full atau tidak
// Jika tidak full, tambahkan baru ke queue
// Selesaikan fungsi ini


}

// DEQUEUE sebuah task dari queue, dan menjalankannya

void dequeue()
{
	char *x;

// Periksalah apakah queue itu kosong atau tidak
// Jika tidak kosong, DEQUEUE-lah sebuah elemen dari queue, dan tampilkan pada layar baris sbb. "Menjalankan task: (isi task)"
// Selesaikan fungsi ini

}

// Menampilkan isi QUEUE

void queue_print()
{

// Selesaikan fungsi ini

}

// Main function

int main(void)
{

	int mode;
	char val[100],cmode[4];
	
	init();
	while(1){
		printf("[1] tambahkan task [2] eksekusi [3] selesai\t");	
		gets(cmode);		mode=atoi(cmode);
		if(mode==3) break;
		switch(mode){
			case 1:
				fprintf(stdout,"Isi task:\t");	
				gets(val);	// tuliskan task yang akan ditambahkan pada queue
				enqueue(val);	
				queue_print();			
				break;
			case 2:
				dequeue();
				queue_print();
				break;
			default:
				break;
		}
	}

}

