#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
const int ROWS = 14;
const int COL = 7;
void initPlane(char plane[ROWS][COL])
{
plane[14][7]={"ABCDEF","**X*XX","*X*X*X",
"3**XX*X","4X*X*XX","*X*X**",
"*X***X","X***XX","*X*XX*",
"X*XX*X","*X*XXX","**X*X*",
"**XX*X","****X*"};
}
//飞机座位布局打印
//输出,每个座位显示一个X
void printPlane(char msg[], char plane[ROWS][COL])
{
cout << msg << endl;
int Row,col;
for ( Row = 0; Row < ROWS ; Row ++)
{
cout << "Row" << " " << Row;
for (col = 0; col < COL; col++)
{
cout << setw(5) << plane [Row][col] << " ";
}
cout << endl;
}
}
int main()
{
int seatsTaken = 0;
int seats = ROWS * COL;
char plane[ROWS][COL];
char keep = 'y';
int row = 0;
char seat;
int rowIndex, seatIndex;
initPlane(plane);
cout << "请选择你想要的座位!" << endl;
while (seatsTaken < seats && keep == 'y')
{
//显示布局并获得座位选择
printPlane("*-可选\nX-已购\n\n当前座位表如下:", plane);
cout << "Row 1 和Row 2是头等舱。" << endl;
cout << "Row 3 到 Row 7是商务舱。" << endl;
cout << "Row 8 到 Row 13是经济舱。" << endl;
cout << "机票类型(头等舱、商务舱或经济舱):" ;
cin >> row;
cout << "座位数(A、B、C、D、E、F):" ;
cin >> seat;
// 调整输入
rowIndex = row;
if ( seat == 'A' || seat == 'a' )
seatIndex = 1;
else if ( seat == 'B' || seat == 'b' )
seatIndex = 2;
else if ( seat == 'C' || seat == 'c' )
seatIndex = 3;
else if ( seat == 'D' || seat == 'd' )
seatIndex = 4;
else if ( seat == 'E' || seat == 'e' )
seatIndex = 5;
else if ( seat == 'F' || seat == 'f' )
seatIndex = 6;
//检查座位是否有人坐
if (plane[rowIndex][seatIndex] == 'X')
{
cout << "对不起, " << row << " " << seat << "已经被他人预定" << endl;
}
else
{
cout << "好的,您预定" << row << " " << seat << "成功" << endl;
plane[rowIndex][seatIndex] = 'X';
seatsTaken++;
}
// 如果还有座位,继续往下运行
if (seatsTaken < seats)
{
cout << "是否选择其他座位? (yes-Y/no-N) ";
cin >> keep;
cout << endl << endl;
}
else
{
cout << "非常抱歉,该航班机票已被预定完,请您预定另外航班机票" << endl;
}
}
printPlane("最终座位表", plane);
system("pause");
system("cls");
return 0;
}
为什么这个数组会出错
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- -Undefined_ 2021-11-15 13:15关注
问题1:plane[14][7]这是指数组的行下标为4,列下标为7的元素,
问题2:"3*XXX", "4XXXX",这两个元素有7个字符,那么列长度就应该为8void initPlane(char plane[][COL]) { char s[14][7] = {"ABCDEF", "**X*XX", "*X*X*X", "**XX*X", "X*X*XX", "*X*X**", "*X***X", "X***XX", "*X*XX*", "X*XX*X", "*X*XXX", "**X*X*", "**XX*X", "****X*" }; for(int i=0;i<14;i++){ strcpy(plane[i],s[i]); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路