# Logic errors...

• 10-02-2007
xMEGANx
Logic errors...
Here is a copy of my program:

Code:

```#include <iostream> using namespace std; int main() { double initial_amount;  // beginning amount \$240,000 double interest_rate6;  // 6% interest applied double interest_rate7;  // 7% interest applied int monthly_payment;    // amount paid each month \$1500 int payment_period;  // 12 months per year int total_months; // total number of months to pay for house double down_payment;    //\$40,000 double loan_balance; // amount currently owed double payment_amount;  // how much has been paid total double years; // years double left_over; //amount left over         cout << "Enter the initial price of the house (eg. xxxxxx.xx): ";         cin >> initial_amount;         cout << "Enter the down payment for the house (eg. xxxxx.xx): ";         cin >> down_payment;         cout << "Enter the annual interest rate for the first 3 years in decimal form (6% equals 1.06 eg. x.xx): ";         cin >> interest_rate6;         cout << "Enter the annual interest rate following the first 3 years in decimal form (7% equals 1.07 eg. x.xx): ";         cin >>  interest_rate7;         cout << "Enter your monthly payment (eg. xxxx.xx): ";         cin >> monthly_payment;         cout << "Enter the amount of annual payment periods (if once a month, press 12): ";         cin >> payment_period; loan_balance = (initial_amount - down_payment) - (monthly_payment*payment_period); years = payment_period*12; while (payment_amount > loan_balance) { if (years > 3) {         loan_balance = (payment_amount*interest_rate6) - loan_balance; } else         loan_balance = (loan_balance*interest_rate7) - loan_balance; } left_over = initial_amount - payment_amount; total_months = (loan_balance/monthly_payment)/12;         cout.setf(ios::fixed);         cout.setf(ios::showpoint);         cout.precision(2);                 cout << "It will take you " << total_months <<" months to purchase the house." << endl;         cout << "The final monthly payment for your house is \$" << left_over << endl;         return 0; }```
In the final output it shows that the total months it would take for the person to purchase the house would be 109,202 and the left over value in the final month is \$240,000 (the original price of the house)

I must be going crazy, but I cannot put my finger on these simple logical errors. Thanks!
• 10-03-2007
Daved
>> while (payment_amount > loan_balance)
At this point in the code, payment_amount is uninitialized (your compiler warnings should have told you that).

Even if you initialize it, the logic of that loop is off. Does it make sense to run the loop while the payment amount is greater than the loan balance?
• 10-03-2007
entry_point
base on my observation,

years = payment_period*12; should be years = payment_period/12;
b'coz if you enter 12 in this line.
Code:

```cout << "Enter the amount of annual payment periods (if once a month, press 12): "; cin >> payment_period;```
the total would be 144 years.

im not sure about the leftover but i think yoiu have no computation for payment_amount.

Code:

`total_months = (loan_balance/monthly_payment)/12;`
ex.
loan_balance = 1000
monthly payment = 100

1000/100=10 months (no need to divide it from 12)