OK, I think I have fixed the issues but now the file is not being created.
Code:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <iostream>
using namespace std;
int openOutputFile(ofstream& o);
void writeHeaderLinesToOutputFile(ofstream& o);
int createAndSaveLoanData(ofstream& o);
void calculateOneLineOfLoanResults(double r, double m, double& mp, double& tp);
double calculatemonthlyPayment(double r, double m);
double calculateTotalPayment(double& mPmt, double m);
int writeLineOfResultsToOutputFile(ofstream& o, double r, double m, double& mp, double& tp);
int main()
{
ofstream outFile;
openOutputFile(outFile);
cin.get();
return 0;
}
int openOutputFile(ofstream& outFile)
{
char outputName[50];
cout << "Please type the name of the output file, including the extension: ";
cin >> outputName;
outFile.open(outputName);
if (outFile.fail())
{
cerr << "Could not open " << outputName << "!" << endl;
return EXIT_FAILURE;
}
createAndSaveLoanData(outFile);
return 0;
}
int createAndSaveLoanData(ofstream& outFile)
{
double monthlyPmt, total;
writeHeaderLinesToOutputFile(outFile);
for (double r = .04; r < .0725 ; r = r + .0025)
{
for (double m = 240; m < 370; m = m + 60)
{
calculateOneLineOfLoanResults(r, m, monthlyPmt, total);
writeLineOfResultsToOutputFile(outFile, r, m, monthlyPmt, total);
}
}
return 0;
}
void writeHeaderLinesToOutputFile(ofstream& outFile)
{
outFile << "Loan Amount: $1000" << '\n' <<'\n';
outFile << left << setw(12) << "Interest" << left << setw(12) << "Duration" << left << setw(12) << "Monthly";
outFile << left << setw(12) << "Total" << '\n';
outFile << left << setw(12) << "rate" << left << setw(12) << "(years)" << left << setw(12) << "payment";
outFile << left << setw(12) << "payment" << '\n';
}
void calculateOneLineOfLoanResults(double rate, double months , double& monthlyPmt, double& total)
{
monthlyPmt = calculatemonthlyPayment(rate, months);
total = calculateTotalPayment(monthlyPmt, months);
}
double calculatemonthlyPayment(double rate, double months)
{
double ratem, expm, monthlyPmt;
double loan = 1000;
double e_to_the_m;
ratem = rate / 1200;
expm = (1.0 + ratem);
e_to_the_m = pow(expm, months);
monthlyPmt = (ratem * e_to_the_m * loan) / e_to_the_m - 1.0;
return monthlyPmt;
}
double calculateTotalPayment(double& monthlyPmt, double months)
{
double total;
total = monthlyPmt * months;
return total;
}
int writeLineOfResultsToOutputFile(ofstream& outFile, double rate, double months, double& monthlyPmt, double& total )
{
outFile << left << setw(12) << rate << left << setw(12) << (months / 12) << left << setw(12) << monthlyPmt;
outFile << left << setw(12) << total << '\n';
outFile.close();
return 0;
}