You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++航空管理系统目的地校验始终返回INVALID DESTINATION错误求助

Bug根因分析

  • 核心逻辑错误:目的地校验的遍历逻辑存在缺陷,每次遍历列表元素时都会覆盖stat状态值。即使前面已经匹配到合法目的地,后续遍历到不匹配元素时会将stat重置为0,最终stat的值仅和列表最后一个元素的匹配结果相关,绝大多数情况下都会是0,触发无效提示。
  • 次要体验问题:国际目的地列表输出时未添加换行,用户查看可选目的地不清晰,也可能导致输入匹配失误。

修复方案

修改校验遍历逻辑:匹配到合法目的地后立即跳出循环,避免stat被后续不匹配的元素覆盖,同时每次校验前重置stat初始值为0,避免历史值干扰。

核心代码修改示例

仅需要调整两个case内的校验循环即可:

本地目的地校验修改

// 遍历前重置stat为未匹配状态
stat = 0;
for(int i=0;i<4;i++){
    if(dest==local_des[i]){
        stat=1;
        // 匹配成功直接跳出循环,无需继续遍历
        break;
    }
}

国际目的地校验修改

stat = 0;
for(int j=0;j<5;j++){
    if(dest==inter_des[j]){
        stat=1;
        break;
    }
}

完整修复后代码参考

string dest;
string local_des[4]={"HYDERABAD","KOLKATA","GWALIOR","DELHI"};
string inter_des[5]={"USA","PARIS","DUBAI","LAS VEGAS","LONDON"};
char option;
int stat,a,b;
cout<<"\nPlease select your destination type:\n";
cout<<"1.Local Destinations\n";
cout<<"2.International Destinations\n";
cout<<"\nENTER YOUR CHOICE(1 or 2)\n";
cin>>option;

switch(option){
    case '1':
        for(a=0;a<4;a++){
            cout<<"\n"<<local_des[a];
        }
        cout<<"\nNow Enter Your Destination(IN BLOCK LETTERS):";
        cin.ignore();
        getline(cin,dest);
        // 修复后的校验逻辑
        stat=0;
        for(int i=0;i<4;i++){
            if(dest==local_des[i]){
                stat=1;
                break;
            }
        }
        if(stat==1){
            cout<<"DESTINATION CONFIRMED!\n";
        }   
        else{
            cout<<"INVALID DESTINATION\n";
        }
        break;
    case '2':
        for(b=0;b<5;b++){
            cout<<"\n"<<inter_des[b];
        }
        cout<<"\nNow Enter Your Destination(IN BLOCK LETTERS):";
        cin.ignore();
        getline(cin,dest); 
        // 修复后的校验逻辑
        stat=0;
        for(int j=0;j<5;j++){
            if(dest==inter_des[j]){
                stat=1;
                break;
            }
        }
        if(stat==1){
            cout<<"DESTINATION CONFIRMED!\n";
        }   
        else{
            cout<<"INVALID DESTINATION\n";
        }
        break;
    default:
        cout<<"INVALID OPTION";
} 

内容的提问来源于stack exchange,提问作者Tejasri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:54:02