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

C++租车系统输入合法车型(如Alto)却提示不可用的原因排查

C++租车系统问题修复方案

核心问题分析

  • 实例数据不共享:main函数中创建了Car c1和RentalSystem r1两个独立对象,c1输入的车型名称仅存在于自身的name成员中,r1的name为空值,导致CheckInput()无法匹配有效车型。
  • 循环逻辑错误:CheckInput的循环中,只要第一次匹配失败(比如输入Mercedes时,i=0的Alto不匹配),就会直接执行else分支输出错误并终止循环,不会继续检查后续车型。
  • 函数调用语法错误:c1.ShowDetails;缺少括号,正确写法应为c1.ShowDetails();,否则无法触发函数执行。

修复后的完整代码

#include<iostream>
#include<string>
using namespace std;

class Vehicle{
    public:
        string name;
        int seats;
        int model, totalrent;
};

class Car:public Vehicle{
    public:
        string AvailableCars[4] = { "Alto", "Mercedes", "Corolla", "Audi" };
        int CarStock[4] = { 4, 4, 4, 4 };  // 各车型库存
    
        void ShowDetails(){
            cout << "Available Cars are:\n";
            for(int i=0;i<4;i++){
                cout << AvailableCars[i] << endl;
            }
            cout << "Enter the car name you would like to rent: ";
            cin >> name;
        }
        
        void CheckInput(){
            bool found = false;
            for(int i=0;i<4;i++){
                if(AvailableCars[i] == name){
                    found = true;
                    cout << "Calculating rent!\n";
                    // 根据车型索引设置座位数
                    switch(i){
                        case 0: seats = 5; break;
                        case 1: seats = 2; break;
                        case 2: seats = 3; break;
                        case 3: seats = 4; break;
                    }
                    totalrent = seats * 10000;
                    cout << "Total Rent: " << totalrent << endl;
                    break;
                }
            }
            // 遍历完成后判断是否找到匹配车型
            if(!found){
                cout << "Sorry this car isn't available!" << endl;
            }
        }
};

class RentalSystem:public Car{
    public:
        void CalculateRent(){
            CheckInput();
        }
};

int main(){
    int choice;
    cout << "Enter choice pls (1 for rent car): ";
    cin >> choice;
    if(choice == 1){
        RentalSystem r1; // 仅需一个实例即可完成流程
        r1.ShowDetails();
        r1.CalculateRent();
    }
    else if(choice != 1 && choice != 2){
        cout << "Sorry choose between available options." << endl;
    }
    return 0;
}

关键修复点说明

  • 统一实例:只创建一个RentalSystem实例,确保输入的车型名称能被后续检查逻辑直接读取。
  • 优化循环逻辑:用found标记记录匹配结果,遍历所有车型后再输出错误信息,避免提前终止循环;同时用switch替代冗余的else if分支,简化代码结构。
  • 修正语法错误:补全函数调用的括号,确保ShowDetails正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:19