我是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
}
答案 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;
}