#c
#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;
}
Комментарии:
1. Вы вызываете
computeFee()
2 раза. В первый раз вы отбрасываете возвращаемое значение, когда печатаете значение во второй раз. После удаленияcomputeFee();
строки вы можете захотеть напечатать некоторую инструкцию для пользователя, которую он должен ввести.2.
cin >> ride_type
будет считан символ новой строки, оставшийся во входном потоке от предыдущего вызова.
Ответ №1:
При каждом вызове computeFee()
выполняется код функции. В вашем коде вы вызываете его дважды, поэтому он будет запрашивать у вас входные данные два раза. И учитывая, что при первом вызове вы его не назначаете, первый ввод будет потерян. Чтобы это работало так, как вы хотите, ваш main
код должен быть:
int main(){
double fee;
fee = computeFee();
cout << fee;
return 0;
}