C ++航班预订计划

时间:2017-07-23 08:05:25

标签: c++ console

我正在写一个程序来分配航班座位。

代码:

#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个座位时,答案是错误的。

有人可以指出我做错了什么。

由于

1 个答案:

答案 0 :(得分:2)

问题在于以下几行:

for(i=1; i<=10; i++)
{
    available[i]=1;
}

您已声明int available[10]。这意味着索引可以从09

因此循环应该是 for(i=0; i<10; i++)