Why am I getting a debug runtime error every time I run this program in Visual S
ID: 3787834 • Letter: W
Question
Why am I getting a debug runtime error every time I run this program in Visual Studio?
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;
//Reads the inputs principal amount, rate of interest, and number of payments.
void readInputs(double &presentValue, double &rateOfInterest, int &numOfPayments, double &tax_pm)
{
cout << "Enter the loan amount: ";
cin >> presentValue;
cout << "Enter the yearly rate of interest(as a percentage): ";
cin >> rateOfInterest;
rateOfInterest = (rateOfInterest / 100) / 12;
cout << "Enter the number of payments (in months): ";
cin >> numOfPayments;
cout << "What is the tax amount per year? $";
cin >> tax_pm;
}
//Calculates the EMI per payment, given the inputs.
void EMICalc(double presentValue, double rateOfInterest, int numOfPayments, double &EMI)
{
EMI = (rateOfInterest * presentValue) / (1 - pow((1 + rateOfInterest), (-1 * numOfPayments)));
EMI = floor(EMI * 100 + 0.5) / 100;
}
//Calcualtes the total amount of tax paid each year
void calculateTax(double tax, int numOfPayments)
{
double No_of_Payments_in_years = numOfPayments / 12;
double totalTax = tax * No_of_Payments_in_years;
double tax_pm = totalTax / numOfPayments;
}
void printTable(double pV, double roI, int noP, double emi, double tax, double tax_pm)
{
//For including thousand separator
locale system_locale("");
cout.imbue(system_locale);
cin.imbue(system_locale);
ofstream outFile;
//For including thousand separator
outFile.imbue(system_locale);
outFile.open("MortgageTablePgmV2_Results.txt");
outFile << "Principal $" << pV << " Payment $" << emi << endl;
outFile << "Annual Interest " << fixed << setprecision(1) << roI * 12 * 100 << "% Term " << noP << " Months" << endl << endl;
//Printing table header with proper formatting
outFile << left << setw(15) << " Payment" << setw(16) << " Amount " << setw(18) << " Principal " << setw(18) << " Interest " << setw(15) << " Tax " << setw(10) << " PrincipalBalance " << endl;
double interest, principal;
for (int i = 0; i < noP; i++)
{
interest = pV * roI;
if (interest < 0)
{
interest = 0;
}
principal = emi - interest;
if (principal < 0)
{
principal = 0;
}
pV = pV - principal + tax;
if (pV < 0)
{
pV = 0;
}
//Writing calculated values to file with required format
outFile << right << setw(5) << (i + 1) << setw(10) << fixed << setprecision(2) << "$" << (principal + interest);
outFile << setw(10) << fixed << setprecision(2) << "$" << principal << setw(10) << fixed << setprecision(2) << "$" << interest;
outFile << setw(10) << fixed << setprecision(2) << "$" << tax_pm << setw(10) << fixed << setprecision(2) << "$" << pV << endl;
}
outFile << "Final Payment " << interest + principal << endl;
}
int main()
{
double presentValue, rateOfInterest, EMI, tax, tax_pm;
int numOfPayments;
readInputs(presentValue, rateOfInterest, numOfPayments, tax_pm);
EMICalc(presentValue, rateOfInterest, numOfPayments, EMI);
calculateTax(tax, numOfPayments);
printTable(presentValue, rateOfInterest, numOfPayments, EMI, tax, tax_pm);
cout << "The monthly EMI is: " << EMI << endl;
double totalInterest = EMI * numOfPayments - presentValue;
cout << "Total interest paid: " << totalInterest << endl;
}
Explanation / Answer
Hi,
I dont see any issues with code. it is working. Issue must be with your debuggin settings in IDE. To get ride of this issue you may stop your debug settings.
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
using namespace std;
//Reads the inputs principal amount, rate of interest, and number of payments.
void readInputs(double &presentValue, double &rateOfInterest, int &numOfPayments, double &tax_pm)
{
cout << "Enter the loan amount: ";
cin >> presentValue;
cout << "Enter the yearly rate of interest(as a percentage): ";
cin >> rateOfInterest;
rateOfInterest = (rateOfInterest / 100) / 12;
cout << "Enter the number of payments (in months): ";
cin >> numOfPayments;
cout << "What is the tax amount per year? $";
cin >> tax_pm;
}
//Calculates the EMI per payment, given the inputs.
void EMICalc(double presentValue, double rateOfInterest, int numOfPayments, double &EMI)
{
EMI = (rateOfInterest * presentValue) / (1 - pow((1 + rateOfInterest), (-1 * numOfPayments)));
EMI = floor(EMI * 100 + 0.5) / 100;
}
//Calcualtes the total amount of tax paid each year
void calculateTax(double tax, int numOfPayments)
{
double No_of_Payments_in_years = numOfPayments / 12;
double totalTax = tax * No_of_Payments_in_years;
double tax_pm = totalTax / numOfPayments;
}
void printTable(double pV, double roI, int noP, double emi, double tax, double tax_pm)
{
//For including thousand separator
locale system_locale("");
cout.imbue(system_locale);
cin.imbue(system_locale);
ofstream outFile;
//For including thousand separator
outFile.imbue(system_locale);
outFile.open("MortgageTablePgmV2_Results.txt");
outFile << "Principal $" << pV << " Payment $" << emi << endl;
outFile << "Annual Interest " << fixed << setprecision(1) << roI * 12 * 100 << "% Term " << noP << " Months" << endl << endl;
//Printing table header with proper formatting
outFile << left << setw(15) << " Payment" << setw(16) << " Amount " << setw(18) << " Principal " << setw(18) << " Interest " << setw(15) << " Tax " << setw(10) << " PrincipalBalance " << endl;
double interest, principal;
for (int i = 0; i < noP; i++)
{
interest = pV * roI;
if (interest < 0)
{
interest = 0;
}
principal = emi - interest;
if (principal < 0)
{
principal = 0;
}
pV = pV - principal + tax;
if (pV < 0)
{
pV = 0;
}
//Writing calculated values to file with required format
outFile << right << setw(5) << (i + 1) << setw(10) << fixed << setprecision(2) << "$" << (principal + interest);
outFile << setw(10) << fixed << setprecision(2) << "$" << principal << setw(10) << fixed << setprecision(2) << "$" << interest;
outFile << setw(10) << fixed << setprecision(2) << "$" << tax_pm << setw(10) << fixed << setprecision(2) << "$" << pV << endl;
}
outFile << "Final Payment " << interest + principal << endl;
}
int main()
{
double presentValue, rateOfInterest, EMI, tax, tax_pm;
int numOfPayments;
readInputs(presentValue, rateOfInterest, numOfPayments, tax_pm);
EMICalc(presentValue, rateOfInterest, numOfPayments, EMI);
calculateTax(tax, numOfPayments);
printTable(presentValue, rateOfInterest, numOfPayments, EMI, tax, tax_pm);
cout << "The monthly EMI is: " << EMI << endl;
double totalInterest = EMI * numOfPayments - presentValue;
cout << "Total interest paid: " << totalInterest << endl;
}
Output:
sh-4.2$ g++ -o main *.cpp
sh-4.2$ main
Enter the loan amount: 10000
Enter the yearly rate of interest(as a percentage): 10
Enter the number of payments (in months): 12
What is the tax amount per year? $100
The monthly EMI is: 879.16
Total interest paid: 549.92
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.