Lining up columns nicely.

Hello everyone, I'm having problems with making columns line up properly. Here is my code:




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <iomanip>

using namespace std;

int main ()
{
	double price = 1;							//stores the starting price
	double yearInt = 1;							//stores the yearly interest
	double monthInt; 							//will store monthly interest once yearly interest is added
	double payment = 1;							//stores how much is paid per month
	double month = 1;							//month counter
	double paidInt;								//displays how much interest was paid
	double paidPrice;							//displays how much of loan was paid off after interest
	double balance	;							//displays balance after payment is made
	double remBalance;
	{
		cout << "Please enter the dollar amount of the loan: $";
		cin >> price;
		cout << "Please enter the yearly rate of interest: ";
		cin >> yearInt;
		cout << "Please enter the monthly payment made: $";
		cin >> payment;
		cout << "Month	Principle	Interest Paid	Principle Paid	Remaining Balance" <<endl;
		cout << fixed << setprecision(2);
		balance = price;
		monthInt = yearInt / 1200;
		while (balance > 0)
		{
			month++;
			paidInt = balance * monthInt;
			paidPrice = payment - paidInt;
			remBalance = balance - paidPrice;

			cout << month << setw(6) << " "<< balance << setw(6)<< " "<< paidInt << setw(6) << " "<< paidPrice << setw(6) << " "<< remBalance << endl;
			balance = remBalance;
		}
		cout << "Number of months to pay off loan: " << month << endl;
		cout << "Total interest paid on loan: " << endl;
		cout << "You have a credit of: " << remBalance << endl;
	}
}




At the moment I'm using the setw manipulator. When the program prints, it looks like this:



Please enter the dollar amount of the loan: $400
Please enter the yearly rate of interest: 20
Please enter the monthly payment made: $20
Month   Principle       Interest Paid   Principle Paid  Remaining Balance
2.00      400.00      6.67      13.33      386.67
3.00      386.67      6.44      13.56      373.11
4.00      373.11      6.22      13.78      359.33
5.00      359.33      5.99      14.01      345.32
6.00      345.32      5.76      14.24      331.07
7.00      331.07      5.52      14.48      316.59
8.00      316.59      5.28      14.72      301.87
9.00      301.87      5.03      14.97      286.90
10.00      286.90      4.78      15.22      271.68
11.00      271.68      4.53      15.47      256.21
12.00      256.21      4.27      15.73      240.48
13.00      240.48      4.01      15.99      224.49
14.00      224.49      3.74      16.26      208.23
15.00      208.23      3.47      16.53      191.70
16.00      191.70      3.19      16.81      174.89
17.00      174.89      2.91      17.09      157.81
18.00      157.81      2.63      17.37      140.44
19.00      140.44      2.34      17.66      122.78
20.00      122.78      2.05      17.95      104.83
21.00      104.83      1.75      18.25      86.57
22.00      86.57      1.44      18.56      68.02
23.00      68.02      1.13      18.87      49.15
24.00      49.15      0.82      19.18      29.97
25.00      29.97      0.50      19.50      10.47
26.00      10.47      0.17      19.83      -9.36
Number of months to pay off loan: 26.00
Total interest paid on loan:
You have a credit of: -9.36
Press any key to continue . . .


I am aware I can just change setw to a higher number to make it look nicer, but I want to do more than that. If you look at where the 10th month is, the whole line is indented a little bit and doesnt line up properly with the above lines. I am also concerned that if the user enters numbers with more digits, the output won't line up properly either.

How can I make it so that everything will line up nicely, no matter what (within reason) the user enters?

Thanks a lot for any help.
Topic archived. No new replies allowed.