我正在写一个程序来分配航班座位。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int i=0, j=0, seatNo;
int seatsAllotted=0;
//10 seats numbered 1 through 10
//0->seat unavailable
//1->seat available
int available[10];
for(i=1; i<=10; i++)
{
available[i]=1;
}
int choice;
while(1)
{
cout<<"\n\n1. BOOKING";
cout<<"\n";
cout<<"2. CANCELLATION\n";
cin>>choice;
switch(choice)
{
//BOOKING PART
case 1:
int no;
cout<<"\n\nEnter no. of seats to be booked: ";
cin>>no;
if((seatsAllotted+no)>10)
{
cout<<"Insufficient no. of seats are available";
}
else
{
for(j=1; j<=no; j++)
{
for(i=1; i<=10; i++)
{
if(available[i]==1)
{
seatNo=i;
available[i]=0;
break;
}
}
cout<<"\nSeat nos. allotted are: ";
cout<<seatNo;
seatsAllotted+=1;
}
}
break;
//CANCELLATION PART
case 2:
int cancel;
cout<<"\n\nEnter the seat nos. to be cancelled: ";
cin>>cancel;
available[cancel]=1;
seatsAllotted-=1;
break;
default:
cout<<"Wrong choice";
}
}
return 0;
}
通常程序输出座位号。如预期的。 但是当我输入某些值时,同一座位没有。被分配两次。
请参阅图片
https://preview.ibb.co/knP3FQ/book.png
当我输入3作为输入时,输出是正确的。 但是当我想预订8个座位时,答案是错误的。
有人可以指出我做错了什么。
由于
答案 0 :(得分:2)
问题在于以下几行:
for(i=1; i<=10; i++)
{
available[i]=1;
}
您已声明int available[10]
。这意味着索引可以从0
到9
,
因此循环应该是
for(i=0; i<10; i++)