2016-03-24 1 views
-1

Мой код плохой, был бы признателен за помощь в том, что я делаю неправильно, и что я должен делать вместо этого.C++ Cant do Loan Calculator: вычисление и компилятор вопрос

Мое назначение должно быть следующим: Вход:

  1. займа (основная сумма).
  2. Годовой процент.
  3. Количество лет.

Выходной сигнал (инкрементируемый в месяц): 1. Сумма кредита. 2. Уплаченная сумма. 3. Ежемесячные проценты.

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

Ошибка компилятора в строке 32 с функцией pow.

Ежемесячный платеж = основной капитал * MonthlyInterest/(1- (1/1 + MonthlyInterest)^лет * 12)) (если у кого-то есть лучший расчет, скажите, хотя это то, что мне дали).

Что я должен исправить/что мне делать. Очень понравилась бы помощь.

#include <iostream> 
#include <cmath> 
using namespace std; 
int main() 
{   
cout << "Loan calculator"<<endl; 
double principalAmount, 
monthlyRate, 
nMonths; 
{ 
    cout<<"Loan amount:"<<endl; 
    cin >>principalAmount; 

    cout <<"Annual Interest rate:"<<endl; 
    cin >>monthlyRate; 

    cout<<"Duration of years:"<<endl; 
    cin >>nMonths;  
} 

float totalPaid=0; 
float monthlyPayment=0; 
float remaining=principalAmount; 
float interestAdd; 
float toAdd; 

cout <<"Loan Amount per month, Monthly paid, Montly Interest."<<endl; 

while (remaining > 0){ 
    monthlyRate/=100/12; 
    monthlyPayment= (principalAmount * monthlyRate)/(1-(1/(pow((1+monthlyRate),(nMonths))))); 
    monthlyPayment++; 
    remaining+=interestAdd; 

if (remaining > monthlyPayment) { 
toAdd=monthlyPayment; } 
else { 
toAdd=remaining; 
} 
cout << monthlyRate << ". $" <<interestAdd << ". $" <<toAdd <<". $" <<remaining <<endl; 
totalPaid+=toAdd; 
remaining-=toAdd; 

} 
return 0; 
} 
+0

'100/12' эквивалентно' 8'. Ты уверен? – MikeCAT

+0

Где я это сделал? monthRate/= 100/12; ? – DragonflyBeach

+0

Почему вы добавили его в «ежемесячный платеж» после выделения формулы? – MikeCAT

ответ

1

pow() принимает два параметра, но ваш код передачи одного параметра к нему. Это является причиной ошибки вашего компилятора.

Дополнительную информацию см. В справочной странице/документации функции pow().

+0

Хорошо. Таким образом, мое уравнение вверху: Ежемесячный платеж = основнойАнал * Ежемесячный опрос/(1- (1/1 + MonthlyInterest)^лет * 12)) Должно быть: (pow (nMonths)) – DragonflyBeach

+0

Нет, вы все еще передавая единственный параметр функции pow(). Функция pow() принимает два параметра, как я уже сказал. pow (x, y) вычисляет x, поднятую до y-й степени. –

+0

Также использование токена 'pow' сразу после') 'токена здесь не очень хорошо, и некоторый оператор должен находиться между ними. – MikeCAT