struct Seat { char type; int number; bool reserved; } seats[25];
struct Ticket { Seat seat; string passenger; } tickets[25];
int surplusF=5, surplusE=20;
check(name):遍歷 tickets 檢查是否已訂票。printSeat(type):輸出指定艙位未預訂座位號。reservation(name, num, type):驗證座位合法性、可用性,更新狀態、減少餘額。printTickets():按 type 後 number 排序輸出。void input() {
string name; cin>>name;
if (name==".") return;
if (check(name)) { printTickets(name); input(); return; }
if (surplusF+surplusE==0) { cout<<"售罄\n"; return; }
char type; cin>>type;
if (type=='F' && surplusF) { printSeat('F'); int n; cin>>n; reservation(name,n,'F'); }
else if (type=='E' && surplusE) { printSeat('E'); int n; cin>>n; reservation(name,n,'E'); }
else { cout<<"無效輸入\n"; input(); }
input(); // 遞歸處理下一位
}
包含初始化、遞歸輸入、驗證、預訂、排序輸出等模塊,總計約 150 行。使用 cin/cout、string、vector 等 C++ 標準庫,邏輯清晰。
此作業展示了 C++ 面向過程編程實現業務邏輯:結構體建模實體、遞歸處理交互流程、標準庫排序輸出。雖未用類封裝,但結構清晰、功能完整,符合入門課程要求。