I have a problem here. How to make a loop to define that the input is roman number.... since my solution is incorrect... Help me... it's make me crazy.... :confused:
Code:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int value = 0, number, jumlah;
string roman;
char romancheck[]="IiVvXxLlCcDdMm";
char nonroman[]="AaBbEeFfGgHhJjKkLlNnOoPpQqRrSsTtUuVvWwYy";
/* while((roman != "I") || (roman != "i")||(roman != "V") || (roman != "v")||
(roman != "X") || (roman != "x")||(roman != "L") || (roman != "l")||
(roman != "C") || (roman != "c")||(roman != "D") || (roman != "d")||
(roman != "M") || (roman != "m"))
{
cout << "Invalid input" << endl;
break;
}
*/
do
{
cout << "Enter a roman number: ";
getline(cin, roman);
if(roman != nonroman)
{
cout << "Invalid output" << endl;
}
if((roman == "IX") || (roman == "ix"))
{
value = 9;
}
else if((roman == "IIX") || (roman == "iix"))
{
value = 8;
}
else if((roman == "IV") || (roman == "iv"))
{
value = 4;
}
else if((roman == "IIV") || (roman == "iiv"))
{
value = 3;
}
else if((roman == "XL") || (roman == "xl"))
{
value = 40;
}
else
{
for (int i=0; i<=roman.length(); i++)
{
char kiraan = roman[i];
kiraan = toupper(kiraan);
switch (kiraan)
{
case 'M' : value+= 1000;
break;
case 'D' : value+= 500;
break;
case 'C': value+= 100;
break;
case 'L' : value+= 50;
break;
case 'X' : value+= 10;
break;
case 'V' : value+= 5;
break;
case 'I' : value+= 1;
break;
}
}
}
}while(roman == romancheck);
cout << "Roman number " << roman << " in decimal form is " << value << endl;
system ("pause");
return 0;
}