Как добавить цикл в эту программу? - PullRequest
0 голосов
/ 12 апреля 2011

Мой домашний вопрос:

В течение налогового сезона каждую пятницу бухгалтерская фирма J & J оказывает помощь людям, которые готовят свои собственные налоговые декларации.Их обвинения следующие.

a.Если человек имеет низкий доход (<= 25 000) и время консультации меньше или равно 30 минутам, плата не взимается;в противном случае плата за обслуживание составляет 40% от обычной почасовой ставки за время более 30 минут. </p>

b.Для других, если время консультации меньше или равно 20 минутам, плата за обслуживание не взимается;в противном случае плата за обслуживание составляет 70% от обычной почасовой ставки за время более 20 минут.

(Например, предположим, что человек имеет низкий доход и провел 1 час 15 минут, а почасовая ставка составляет 70,00 долл. США)Затем сумма счета составляет 70,00 х 0,40 х (45/60) = 21,00 долл. США.

Напишите программу, в которой пользователю предлагается ввести почасовую ставку, общее время консультации и наличие у человека низкого дохода.,Программа должна вывести сумму счета.Программа должна содержать функцию, которая принимает в качестве входных данных почасовую ставку, общее время консультации и значение, указывающее, имеет ли человек низкий доход.Функция должна вернуть сумму счета.Программа может предложить пользователю ввести время консультации в минутах.

И вот код, который я написал:

#include <iostream>

using namespace std;

double calculate(char iRate, double cTime, double hRate);

int main()
{
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");
return 0;
}

double calculate(char iRate, double cTime, double hRate)
{
    double bAmount = 0.0;
    if (iRate == 'l' && cTime > 30)
        bAmount = (hRate * 40) * ((cTime)- 30)/6000;
    else if (iRate == 'h' && cTime > 20)
        bAmount = (hRate * 70) * ((cTime)- 30)/6000;

    return bAmount;
}

Я не уверен, как я могу добавитьцикл до этого, чтобы он работал 3 раза?

1 Ответ

2 голосов
/ 12 апреля 2011

Что бы я сделал для ясности кода, это отделить вашу логику от вашей главной функции в другую функцию

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, но это хорошая практика, чтобы обернуть объединенные логические блоки в функции для ясности / отладки. Это не вступит в игру для простых заданий, подобных этому, но в реальном мире, где ваша кодовая база насчитывает сотни тысяч строк, это действительно помогает, поэтому внедрение хороших практик сейчас сделает простой переход!

Отказ от ответственности Я ни разу не проверял ваш код на правильность, формы или формы. Я просто взял логику, которая была у вас в основной функции, и поместил ее в свою собственную функцию. Любые ошибки, ранее существовавшие в нем, будут в функции, которую я предоставил. Нечто подобное вышло бы за рамки этого вопроса. (Не то, чтобы я не указывал на одно, если бы видел его, но есть еще одна вещь, с которой мы, настоящие программисты, боремся: иногда нам не разрешают исправлять ошибки, потому что нам предоставлялось достаточно средств чтобы исправить только несколько из них, и нам сказали, какие из них исправить. Это может расстраивать, когда вы тот тип, который любит делать вещи правильно, все время, каждый раз.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...