I am facing a problem while doing a chart. I would want to output the chart in a same row without changing the code and without making it horizontal. I would wish to use for loop to solve this problem because I can iterate over everything because I have the same elements.
The code is displayed below:
# include <iostream>
using namespace std;
class InterestCalculator
{
protected:
float principal_amount = 320.8;
float interest_rate = 60.7;
float interest = interest_rate/100 * principal_amount;
public:
void printInterest()
{
cout<<"Principal Amount: RM "<<principal_amount<<endl;
cout<<"Interest Rate(%): "<<interest_rate<<endl;
cout<<"Interest: RM"<<interest<<endl;
}
};
class LoanCalculator : public InterestCalculator
{
private:
int loan_term;
int month;
float month_payment;
public:
void displayVariable()
{
cout<<"Enter loan amount (RM): ";
cin>>principal_amount;
cout<<"\n\nEnter annual interest rate(%): ";
cin>>interest_rate;
interest_rate = interest_rate / 100;
cout<<"\n\nEnter loan term in years: ";
cin>>loan_term;
month = loan_term*12;
month_payment = (principal_amount*interest_rate + principal_amount) / month;
cout<<endl<<endl;
}
void outputStatistics()
{
cout<<"Month\tPayment(RM)\tPrincipal(RM)\tInterest(RM)\tBalance(RM)\n";
for(int i = 1; i <=month; i++)
{
cout<<i<<endl;
}
for(int j = 0; j <=month; j++)
{
cout<<"\t"<<month_payment<<endl;
}
}
};
int main()
{
LoanCalculator obj;
obj.displayVariable();
obj.outputStatistics();
return 0;
}
The output of the abovementioned code:
Enter loan amount (RM): 120
Enter annual interest rate(%): 1.2
Enter loan term in years: 1
Month Payment(RM) Principal(RM) Interest(RM) Balance(RM)
1
2
3
4
5
6
7
8
9
10
11
12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
10.12
Process returned 0 (0x0) execution time : 3.940 s
Press any key to continue.
The desired output:
Enter loan amount (RM): 120
Enter annual interest rate(%): 1.2
Enter loan term in years: 1
Month Payment(RM) Principal(RM) Interest(RM) Balance(RM)
1 10.12
2 10.12
3 10.12
4 10.12
5 10.12
6 10.12
7 10.12
8 10.12
9 10.12
10 10.12
11 10.12
12 10.12
Process returned 0 (0x0) execution time : 3.940 s
Press any key to continue.
You don't need to undo endl
you just need to reorganise your code so that you do things in the correct order in the first place, like this
void outputStatistics()
{
cout<<"Month\tPayment(RM)\tPrincipal(RM)\tInterest(RM)\tBalance(RM)\n";
for(int i = 1; i <=month; i++)
{
// output one row at a time
cout<<i<<"\t"<<month_payment<<endl;
}
}
This code outputs one row at a time, your code outputted one column first and the next column second.