C++ Queue program daftar menu
berikut adalah program C++ dalam membuat sebuah program daftar menu yang mengimplementasikan ADT Queue/antrian.
langsung aja gann.....
langsung aja gann.....
#include <iostream>
#include <conio.h> //untuk membaca perintah "getch()"
#include <windows.h> //untuk membaca perintah "system"
using namespace std;
#define MaxEl 5
typedef int address;
typedef int infotype;
typedef struct
{
infotype T[MaxEl];
address Head;
address Tail;
}Queue;
void CreateEmpety(Queue &Q);
int IsEmpety(Queue Q);
int IsFull(Queue Q);
int IsOneElmt(Queue Q);
void Add(Queue &Q, infotype val);
void Del(Queue &Q, infotype &val);
void PrintQueue(Queue Q);
int NQueue(Queue Q);
int IdxQueue(Queue Q, infotype val);
void Geser(Queue &Q, int indeks);
int main()
{
int Pilih,Nilai,indeks;
Queue Queue1;
CreateEmpety(Queue1);
menu:
system("cls");
cout<<"............MENU............"<<"\n\n";
cout<<"1. TAMBAH ANTRIAN"<<endl;
cout<<"2. TAMPILKAN ANTRIAN"<<endl;
cout<<"3. HAPUS ANTRIAN"<<endl;
cout<<"4. JUMLAH ANTRIAN YANG ADA"<<endl;;
cout<<"5. CARI NOMER ANTRIAN"<<endl;
cout<<"6. GESER NOMER ANTRIAN"<<endl;
cout<<"7. EXIT "<<endl;
cout<<"............................"<<"\n\n";
cout<<"Masukan Pilihan Anda :";
cin>>Pilih;
switch(Pilih)
{
case 1:
cout<<" Masukan Nilai Kedalam Antrian : ";
cin>>Nilai;
Add(Queue1, Nilai);
getch();
goto menu;
case 2:
PrintQueue(Queue1);
getch();
goto menu;
case 3:
Del(Queue1, Nilai);
cout<<" Antrian saat ini : ";
PrintQueue(Queue1);
getch();
goto menu;
case 4:
NQueue(Queue1);
cout<<endl;
cout<<" Antrian yang ada :"<<endl;
PrintQueue(Queue1);
getch();
goto menu;
case 5:
cout<<" Masukan Nomer Antrian Yang Ingin Dicari :";
cin>>Nilai;
cout<<" Antrian saat ini :";
PrintQueue(Queue1);
IdxQueue(Queue1, Nilai);
getch();
goto menu;
case 6:
Geser(Queue1, indeks);
cout<<" Antrian saat ini :";
PrintQueue(Queue1);
getch();
goto menu;
default:
cout<<" Tidak Ada Pilihan Tersebut, Silahkan Masukan Pilihan Yang Benar";
getch();
goto menu;
case 7:
exit(0);
}
getch();
}
void CreateEmpety(Queue &Q)
{
Q.Head=Q.Tail=-1;
}
int IsEmpety(Queue Q)
{
return(Q.Head==-1 && Q.Tail==-1);
}
int IsFull(Queue Q)
{
return(Q.Head<Q.Tail && Q.Tail-Q.Head==MaxEl-1 ||
Q.Head>Q.Tail && Q.Head-Q.Tail==1);
}
int IsOneElmt(Queue Q)
{
return(Q.Head==Q.Tail && Q.Head!=-1);
}
void Add(Queue &Q, infotype val)
{
if (!IsFull(Q))
if (IsEmpety(Q))
{
Q.Head=Q.Tail=0;
Q.T[Q.Head]=val;
}
else
{
if (Q.Tail==MaxEl-1)
Q.Tail=0;
else
Q.Tail++;
Q.T[Q.Tail]=val;
cout<<" SAVINGS !!!"<<endl;
}
}
void Del(Queue &Q, infotype &val)
{
if (!IsEmpety(Q))
{
val = Q.T[Q.Head];
if (IsOneElmt(Q))
CreateEmpety(Q);
else
if (Q.Head==MaxEl-1)
Q.Head=0;
else
Q.Head++;
}
else
cout<<" !!!ANTRIAN TIDAK DITEMUKAN!!!\n";
}
void PrintQueue(Queue Q)
{
address i;
if (Q.Head<=Q.Tail)
{
for (int i =Q.Head; i < Q.Tail+1; i++)
{
cout<<Q.T[i]<<" ";
}
}
else
{
for (int i = Q.Head; i < MaxEl-1; i++)
{
cout<<Q.T[i]<<" ";
}
for (int i = 0; i < Q.Tail; i++)
{
cout<<Q.T[i]<<" ";
}
}
cout<< endl;
}
int NQueue(Queue Q)
{
int hasil;
if(Q.Head>=Q.Tail)
{
hasil=Q.Head-Q.Tail+1;
}
else if(Q.Head<Q.Tail)
{
hasil=Q.Tail+1-Q.Head;
}
else
{
hasil=0;
}
cout<<" Jumlah antrian : "<<hasil;
return hasil;
}
int IdxQueue(Queue Q, infotype val)
{
if(Q.Head<Q.Tail)
{
for(int i=Q.Head; i<=Q.Tail; i++)
{
if(val==Q.T[i])
{
cout<<" nomer antrian ada di dalam index ke- "<<i<< endl;
}
else{
cout<<" nomer antrian tidak ada di index ke- "<<i<< endl;
}
}
}
getch();
}
void Geser(Queue &Q, int indeks)
{
int temp;
int a=Q.Head;
int b=Q.Tail;
if(Q.Head<Q.Tail)
{
for(int i=a; i<b; i++)
{
temp=Q.T[Q.Head];
Del(Q,indeks);
Add(Q, temp);
}
}
else
{
for(int i=b; i<a; i++)
{
temp=Q.T[Q.Tail];
Del(Q,indeks);
Add(Q, temp);
}
}
}
jika sudah, langsung compile dan nikmati hasilnya.
terimakasih untuk kunjungannya.
terimakasih untuk kunjungannya.

Thank you for nice information. Please visit our web:
ReplyDeleteClick Here
"https://uhamka.ac.id"