如何在C ++中检查飞机座位预订

时间:2017-04-01 22:55:12

标签: c++

我是C ++的新手,我正试图在飞机上预留一个带有二维阵列的座位;一切正常,但不会检查座位是否已被占用。

for example: 
 1  A B C D
 2  A B C D
 3  A B C D
 4  A B C D
 5  A B C D

如果用户选择第1行字母A,那么它将是:

 1  X B C D
 2  A B C D
 3  A B C D
 4  A B C D
 5  A B C D

然后,如果用户再次选择第1行字母A,则应显示消息说座位已被占用。这是我的代码

void reserveSeat(char seatChart[ROW][COLUM]){

    int row;
    char colum;

    cout<<"Enter the row number with colum letter ex(0 A): ";
    cin>>row>>colum;
    colum = toupper(colum);

    for(int r = 0; r<ROW;r++){

        for(int c = 0; c<COLUM;c++){

            if(seatChart[row][c] == colum){

                //check if the seat is taken
                if( seatChart[row][c] == 'X'){

                    cout<<"seat is already taken\n\n";
                }else
                    seatChart[row][c] = 'X';   
            } 
        }//end of inner for loop
    }//end of outer for loop
}

3 个答案:

答案 0 :(得分:2)

我认为你不必为你的解决方案运行循环,当你从用户那里获取行和列时,你可以简单地从字母表中减去A来检查这是否是列,如果你减去{ {1}}形成任何大写字母它将成为像A一样的数组计数 所以这是你可以使用的解决方案:

A-A=0,B-A=1,C-A=2

答案 1 :(得分:1)

第二个query.pages永远不可能是真的,因为您已经在检查它是否是别的东西。您可以删除第一个[38940{}, 284306{}, ...]声明并检查它是否是“X&#39;或不。

if

答案 2 :(得分:-3)

试试此代码:http://ideone.com/WfFsX9

    #include <iostream>
    using namespace std;

    void reserveSeat(int x, int y, char **tab)
    {
        if(tab[x][y]=='X')
        cout<<"Already Reserved"<<endl;
        else
        tab[x][y]='X';  

    }



    int main() {

//setup
    char **tab = new char *[5];
    for(int i = 0; i<5; i++)
    {
        tab[i] = new char[4];
    }
        for (int i = 0; i<5; i++)
            for (int j = 0; j<4; j++)
            {
                tab[i][j] = 65 + j;
            }

//Lets try to reserve

    reserveSeat(0,0,tab);
    reserveSeat(0,0,tab);


//printing
            for (int i = 0; i<5; i++)
            {
                cout<<i+1<<" ";
            for (int j = 0; j<4; j++)
            {
                cout<<tab[i][j]<<" ";
            }
                cout<<endl;
            }

        return 0;
    }