Как я мог правильно настроить это уравнение кредита на основе моего кода? - PullRequest
0 голосов
/ 16 января 2019

Вопрос хочет, чтобы я создал 2 сценария

  1. Пользователь принимает предложение скидки дилера и финансирует автомобиль через свой местный кредитный союз.

и

  1. Пользователь отклоняет предложение дилера о скидке, но принимает более низкую ставку финансирования дилера.

Ожидается, что я воспользуюсь формулой периодического платежа: основная * ставка / (1 - (ставка + 1) срок) и использую ее для получения ежемесячного или годового платежа.

Проблема, с которой я столкнулся в своем коде, который, как мне кажется, как-то связан с моими уравнениями, которые я использую для получения годовых или ежемесячных платежей по кредиту, наверняка не дает мне правильного ответа на мои входные данные, и я не знаю, Зачем.

Я несколько раз пытался изменить уравнения, но безрезультатно.

int main()


// these are the variables I will be using in maths for this project
double annualpayment; // what will be displayed once all is calculated annually 
double monthlypayment; // what will be displayed once all is calculated monthly
double prinicple; // amount borrowed
double rate; // interest rate
double mterm; // what the user will enter for monthly term 
double yterm; // what user will enter for yearly term
double years; // term of loan (yearly)
double month; // term of loan (monthly)
double sqrdMonth; // sqrt of term of loan (monthly)
double sqrdYear; // sqrt of term of loan (yearly)
char choice;
}
{
    cout << "Enter your principle: " << endl; // total amount borrowing
    cin >> prinicple;

    cout << "Enter your your interest rate: " << endl; // interest rate on loan
    cin >> rate;

    cout << "Will this be (M)onthly or (Y)early payment? (enter y or m)"; // declaring if it will be a monthly or yearly payment
    cin >> choice;

    if (choice = 'M') // if its monthly 
        mterm = 12; // there are 12 months within a year
    cout << "How many years will this loan be for?" << endl;
    cin >> years; // I need this information for getting the exact
    month = mterm * years;
    sqrdMonth = sqrt(month); // I need to square root the months for the periodic payment formula
    monthlypayment = (prinicple * rate) / (rate); sqrdMonth; // this is where my problem is 
                                                //  ^^^^ why is it asking me to close my equation with a ';'
    cout << "Your monthly loan payment is: ";
    cout << monthlypayment;

    if (choice = 'Y')
        yterm = 1;
    cout << "How many years will this loan be for?" << endl;
    cin >> years;
    years = yterm * years;
    sqrdYear = sqrt(years); // I need to square root the years for the periodic payment formula
    annualpayment = (prinicple * rate) / (rate); sqrdYear; // this is where my problem is 
                                        // ^^^^ why is it asking me to close my equation with a ';'
    cout << "Your annual loan payment is: ";
    cout << annualpayment;


}

}

Я ожидаю, что пользователь введет принцип, ставку и продолжительность кредита, затем компилятор выполнит математические вычисления и выведет правильные числа. Мои реальные результаты - отрицательные числа или иррациональные числа.

1 Ответ

0 голосов
/ 16 января 2019

Несколько ошибок

if (choice = 'M') // if its monthly 
    mterm = 12; // there are 12 months within a year

Первый момент, который должен сказать

if (choice == 'M') // if its monthly 
    mterm = 12; // there are 12 months within a year

В C ++ мы используем == для проверки на равенство и = для присвоения переменной.

Еще более серьезно подумайте об этом

if (choice == 'M') // if its monthly 
    mterm = 12; // there are 12 months within a year
cout << "How many years will this loan be for?" << endl;
cin >> years; // I need this information for getting the exact
month = mterm * years;

Теперь предположим, что choice не 'M' как вы думаете, значение mterm будет?

Ответ в том, что он не определен. Тем не менее, вы используете переменную в формуле двумя строками вниз. Плохо использовать переменные с неопределенными значениями.

Мне кажется, что вам нужно реструктурировать свой код, чтобы включить больше операторов в оператор if

if (choice == 'M')
{
    mterm = 12; // there are 12 months within a year
    cout << "How many years will this loan be for?" << endl;
    cin >> years; // I need this information for getting the exact
    month = mterm * years;
    sqrdMonth = sqrt(month); // I need to square root the months for the periodic payment formula
    monthlypayment = (prinicple * rate) / (rate); sqrdMonth; // this is where my problem is 
                                            //  ^^^^ why is it asking me to close my equation with a ';'
    cout << "Your monthly loan payment is: ";
    cout << monthlypayment;
}

Наконец, это

monthlypayment = (prinicple * rate) / (rate); sqrdMonth;

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

...