Что бы я сделал для ясности кода, это отделить вашу логику от вашей главной функции в другую функцию
void gatherInputAndCalculate()
{
double hRate = 0.0, cTime = 0.0;
char iRate, l('l'), h('h');
cout << "Please enter the hourly rate: ";
cin >> hRate;
cout << "Please enter total consulting time in minutes: ";
cin >> cTime;
cout << "Is the income rate low or high (l - Low | h - High): ";
cin >> iRate;
cout << calculate(iRate, cTime, hRate) << endl;
system("pause");
}
и затем в вашем главном, обведите его
int main()
{
for(int i = 0; i < 3; i++)
{
gatherInputAndCalculate();
}
return 0;
}
Это не значит, что вы не можете просто обернуть весь логический блок в цикле for, но это хорошая практика, чтобы обернуть объединенные логические блоки в функции для ясности / отладки. Это не вступит в игру для простых заданий, подобных этому, но в реальном мире, где ваша кодовая база насчитывает сотни тысяч строк, это действительно помогает, поэтому внедрение хороших практик сейчас сделает простой переход!
Отказ от ответственности Я ни разу не проверял ваш код на правильность, формы или формы. Я просто взял логику, которая была у вас в основной функции, и поместил ее в свою собственную функцию. Любые ошибки, ранее существовавшие в нем, будут в функции, которую я предоставил. Нечто подобное вышло бы за рамки этого вопроса. (Не то, чтобы я не указывал на одно, если бы видел его, но есть еще одна вещь, с которой мы, настоящие программисты, боремся: иногда нам не разрешают исправлять ошибки, потому что нам предоставлялось достаточно средств чтобы исправить только несколько из них, и нам сказали, какие из них исправить. Это может расстраивать, когда вы тот тип, который любит делать вещи правильно, все время, каждый раз.)