首页 > 解决方案 > 为什么控制台要求更多输入?C++

问题描述

我正在尝试制作一个程序,在该程序中,我根据乘车类型和用户租用东西的时间来计算费用。我想出了如何做到这一点的方法,但是当我尝试读取输入时,控制台不断要求更多输入。

double computeFee(){
    double fee, hour_rate, minute_rate;
    char ride_type, colon;
    int hour_started, minute_started, hour_ended, minute_ended, total_minutes;
    
    cin >> ride_type >> hour_started >> colon >> minute_started >> colon >>  hour_ended >> colon >> minute_ended;
    total_minutes = ((hour_ended * 60) + minute_ended) - ((hour_started * 60) + minute_started);
    
    switch(ride_type){
        case 'J':
            hour_rate = 500;
            minute_rate = 10;
            break;
        
        case 'K':
            hour_rate = 200;
            minute_rate = 5;
            break;
        
        case 'B':
            hour_rate = 100;
            minute_rate = 2;
            break;
        
        case '0':
            return 1;
            break;
    }

    if (total_minutes < 60){
        fee = total_minutes * minute_rate;
    }else{
        fee = ((total_minutes/60) * hour_rate) + ((total_minutes%60) * minute_rate);
    }
            
    return fee;
}

int main(){
    double total, fee;
    
    computeFee();
    fee = computeFee();
   
    cout << fee;
        
    return 0;
}

标签: c++

解决方案


每次调用computeFee(),都会执行函数代码。在您的代码中,您调用它两次,因此它会要求您输入两次。并且鉴于您第一次调用它时没有分配它,第一个输入将丢失。为了让它按照你想要的方式工作,你的main代码应该是:

int main(){
    double fee;
    
    fee = computeFee();
   
    cout << fee;
        
    return 0;
}

推荐阅读