PDA

View Full Version : سوال: در پیاده سازی یه منو با صف چرخشی برای چاپ محتویات پشته خروجی درستی نمیدهد. مشکلش کجاست؟؟



fati63
شنبه 11 آذر 1391, 21:36 عصر
با سلام کد زیر رو برای پیاده سازی صف چرخشی نوشتم ولی زیر برنامه print به درستی محتویات پشته را چاپ نمیکند. لطفا راهنمایی کنید. #include<iostream.h>
#include<conio.h>
#define max 5
class rqueue {
int front,rear;
int a[max];
public:
rqueue();
int addq (int x);
int delq();
void print();
};
rqueue :: rqueue()
{
front=-1;
rear=-1;}
int rqueue ::addq(int x)
{
rear=(rear+1)%(max-1);
if(rear==front)
return 0;
else
a[rear]=x;
return 1;
}
int rqueue ::delq()
{
if(rear== front) return 0;
else {
front=(front+1)%(max-1);
return a[front];

}}
void rqueue::print()
{
if(front==rear)
cout << "Queue is empty.";
for(int i = front; i <= rear; i ++)
cout << a[i] << " ";
getch();
}
int main()
{ int d,z,f;
rqueue q;

cout<<"1-add"<<"\n"<<"2-del" <<"\n"<<"3-print"<<"\n"<<"4-exit"<<"\n";
cout <<"select number between (1-4)"<<"\n";
cin>>z;
while(z>=1&&z<=4)
{
if (z==1){
cout<<"enter number for add queue"<<"\n";
cin>>f;
d=q.addq(f);
if(d==0)
cout <<"queue is full"<<"\n";
}
else
if(z==2)
{
d=q.delq() ;
if (d==0)
cout<<"queue is empty"<<"\n" ;
else cout<<d<<"\n";
}
else
if(z==3){
q.print();
}
else

if (z==4) {
break;}
cout<<"1-add"<<"\n"<<"2-del" <<"\n"<<"3-print"<<"\n"<<"4-exit"<<"\n";
cout <<"select number between (1-4)"<<"\n";
cin>>z;}
getch();
return 0;
}