我是 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
}
我认为你不必为你的解决方案运行循环,当你从用户那里获取行和列时,你可以简单地从字母表中减去 A
来检查这是否是列,如果你从任何大写字母中减去 A
它将变成像 A-A=0,B-A=1,C-A=2
这样的数组计数所以这是您可以使用的解决方案:
int row;
char colum;
cout<<"Enter the row number with colum letter ex(0 A): ";
cin>>row>>colum;
colum = toupper(colum);
int c= int(colum - 'A');
//check if the seat is taken
if( seatChart[row][c] == 'X'){
cout<<"seat is already taken\n\n";
}else
seatChart[row][c] = 'X';
我是一名优秀的程序员,十分优秀!