PDA

View Full Version : سوال: مشکل این برنامه کجاست؟



fati63
شنبه 11 آذر 1391, 22:08 عصر
کد زیر مربوط به پیاده سازی یک منو با صف چرخشی هست ولی زیر برنامه مربوط 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;
}

omidshaman
یک شنبه 12 آذر 1391, 12:57 عصر
مشکلش اینه که یک کاراکتر اضافه نشون میده دیگه اره؟
اگر اره خوب کافیه خط 39 رو عوض کنی ! چون front شما همیشه -1 میشه وقتی میره داخل print

for(int i = front+1; i <= rear; i ++)

fati63
یک شنبه 12 آذر 1391, 16:07 عصر
بله درسته تغییرات رو اعمال کردم درست شده ممنون
مشکلش اینه که یک کاراکتر اضافه نشون میده دیگه اره؟
اگر اره خوب کافیه خط 39 رو عوض کنی ! چون front شما همیشه -1 میشه وقتی میره داخل print

for(int i = front+1; i <= rear; i ++)