Код работает математика не

Мой код хорошо компилируется, но математические формулы, которые я использую, не дают правильного результата. Мне нужно рассчитать остаток, снятые и проценты за все 3 месяца. Я также обязан подтвердить ввод пользователя. Для этих целей я использую вложенные циклы. Пожалуйста, дайте мне знать, если вы заметите мою ошибку. Спасибо, милые люди!

cout << "Please enter the starting balance: ";
cin  >>  startBalance;
cout << "Please enter the annual interest rate: ";
cin  >> annualInterest;

for (int month = 1; month <= 3; month++) {

do {
cout << setprecision(5);
cout << "Please enter the total amount deposited on month " << month << ": ";
cin >> balance;

if (balance <0)  {
goodChoice = false;
cout << "\n\t***ERROR " << balance << " ***";
cout << "*** Choice must be positive***\n" << endl;
}

else {
goodChoice = true;
}

startBalance += balance; //need to calculate the balance for all 3 months

} while (!goodChoice);

do {
cout << setprecision(5);
cout << "Please enter the total amount withdrawn on " << month << ": ";
cin >> withdrawn;

if ( (withdrawn <0) || (withdrawn > startBalance) ) {
goodChoice = false;
cout << "***ERROR " << withdrawn << " ***";
cout << "*** Choice must be positive or greater than the balance***" << endl;
}

else {
goodChoice = true;
}
finalWithdrawn += withdrawn; // the total amount of withdrawn

finalBalance = startBalance - withdrawn;

monthInterest = ((startBalance + finalBalance) / 2) * (annualInterest / 12);
totalInterest += monthInterest; //total interest for all 3 months
endBalance = monthInterest + finalBalance;} while (!goodChoice);
}

cout << "Total Deposit: " << endBalance << endl;
cout << "Total Withdrawn: " << finalWithdrawn << endl;
cout << "Total Interest: " << totalInterest << endl;
cout << "Final Balance: " << endBalance << endl;

0

Решение

У вас есть много дополнительных переменных, которые не нужны. Кроме того, ваша процентная ставка может быть в процентах вместо десятичного числа, то есть 10% = 0,1. Кроме того, ваш monthInterest берет среднее, а затем применяет интерес. Я написал это, и это похоже на работу.

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
float totalDeposit = 0.0f;
float totalWithdrawn = 0.0f;
float totalInterest = 0.0f;
float totalBalance = 0.0f;

float interestRate = 0.0f;

setprecision(5); //?

cout << "Enter starting balance: ";
cin >> totalBalance;
cout << "Enter annual interest rate (%): ";
cin >> interestRate;

// Convert to monthly and non-percent; i.e. 10% = 0.1 = 10 / 100
interestRate = interestRate / 100.0f / 12.0f;

for (int month = 1; month <= 3; month++)
{
float deposit = -1.0; // Default to an error state

while (deposit < 0.0)
{
cout << "Enter total deposited in month " << month << ": ";
cin >> deposit;

if (deposit < 0.0f)
{
cout << "ERROR: Invalid amount" << endl;
continue;
}
}

float withdrawn = -1.0f; // Default to an error state

while (withdrawn < 0.0f)
{
cout << "Enter total withdrawn in month " << month << ": ";
cin >> withdrawn;

if (withdrawn < 0.0f)
{
cout << "ERROR: Invalid amount" << endl;
continue;
}
}

totalDeposit += deposit;
totalWithdrawn += withdrawn;
totalBalance = totalBalance + deposit - withdrawn;
totalBalance += totalBalance * interestRate;
totalInterest += totalBalance * interestRate;
}

cout << "Total Deposit: " << totalDeposit << endl;
cout << "Total Withdrawn: " << totalWithdrawn << endl;
cout << "Total Interest: " << totalInterest << endl;
cout << "Final Balance: " << totalBalance << endl;

int wait; // Pause so console window doesn't close. Delete this line.
cin >> wait;

return 0;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]