Conv. int to Roman Numerals!

I have a project due tonight where I have to convert integers to Roman Numerals.

The problem I have with my current code is that the flow is a little bit off, integers greater than 1000 have been causing me an issue, it has been printing the wrong output.

For example, to convert the integer 1192 to Roman Numearls, the correct output would be:
MCXCII

However, my program outputs:
MCIXXXXXXXXXXXXII


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
  #include <iostream>
#include <string>
using namespace std;

int main()
{
	int number;
	int test;
	char play;

	
	do 
	{
		string roman = "";
		cout << "Please enter an integer you would like to convert" << endl;
		cin >> number;

		if (number >= 4000 || number <= 0)
		{
			cout << "That is an invalid integer" << endl;
		}
		else 
		{
			if (number >= 1000)
			{
				test = (number / 1000);
				for (int i = 0; i < test; i ++)
				{
					roman += 'M';
				}
				number %= 1000;

			}
			if ( number >= 100) 
			{
				test = (number / 100);
				if ( test == 9 )
				{
					roman += "CM";
				}
				else if ( test >= 5)
				{
					roman += 'D';

					for (int i = 0; i < test; i ++)
					{
						roman += 'C';
						test -= 5;
					}
				}
				else if (test == 4)
				{
					roman += "CD";
				}
				else if ( test >= 1)
				{
					for (int i = 0; i < test; i ++ )
					{
						roman += 'C';
					}
				}
				number %= 100;
			}
			if (number >= 10)
			{
				test = (number / 10);

				if (test == 9 )
				{
					roman += "IX";
				}
				else if ( test >= 5 )
				{
					roman += 'L';
					for (int i = 0; i < test; i++)
					{
						roman += 'X';
						test =- 5;
					}
				}
				if (test == 4)
				{
					roman += "XL";
				}
				else if (test >= 1) 
				{
					for (int i = 0; i < test; i ++)
					{
						roman += 'X';
					}
				}
				number %= 10;

			}
			if (number >= 1)
			{
				test = number;
				if (test == 9)
				{
					roman += "IX";
				}
				else if (test >= 5) 
				{
					roman += 'V';
					for (int i = 0; i < test; i++)
					{
					roman += 'I';
					test -= 5;
					}
				}
				else if ( test == 4) 
				{
					roman += 'IV';
				}
				else if (test >= 1)
				{
					for (int i = 0; i < test; i++)
					{
						roman += 'I';
					}
				}
			}


			cout << "Roman Numeral: " << roman << endl;
			cout << "Would you like to convert another integer? (Y/N)" << endl;
			cin >> play;

		}

	

	
	}while (play !='N' && play != 'n');
			cout << "Thank you for playing" << endl;
	
	system ("PAUSE");
	return 0;
}
On line 81 you forgot an else, so the code at line 85 is executed. Also, on line 70 you should have XC not IX.
Topic archived. No new replies allowed.