Hello!

Do anyone know optimal solution for roman numerals to 100?

I made a program just for numerals to 10, but I have no idea how to solve it to 100 optimally cuz if statements are not a very good solution.

``````static void Main(string[] args)
{
int number;
bool checkValue;

Console.Write("Enter the number between 1 and 10: ");

checkValue = int.TryParse(Console.ReadLine(), out number);

if (checkValue)
{
if (number > 1 && number < 10)
{
if (number == 1)
{
Console.WriteLine("I");
}
else if (number == 2)
{
Console.WriteLine("II");
}
else if (number == 3)
{
Console.WriteLine("III");
}
else if (number == 4)
{
Console.WriteLine("IV");
}
else if (number == 5)
{
Console.WriteLine("V");
}
else if (number == 6)
{
Console.WriteLine("VI");
}
else if (number == 7)
{
Console.WriteLine("VII");
}
else if (number == 8)
{
Console.WriteLine("VIII");
}
else if (number == 9)
{
Console.WriteLine("IX");
}
else if (number == 10)
{
Console.WriteLine("X");
}
}
else
{
Console.WriteLine("\nERROR! Entered number must be between 1 and 10.");
}
}
else
{
Console.WriteLine("\nERROR! Entered value must be a number.");
}

}``````

Any help is the most welcome! ;)

A basic algorithm would be something like:

``````int temp = inputValue;
string roman = String.Empty;
while (temp > 999)
{
roman += "M";
temp -= 1000;
}
while (temp > 899)
{
roman += "CM";
temp -= 100;
}
while (temp > 499)
{
roman += "D";
temp -= 500;
}
while (temp > 399)
{
roman += "CD";
temp -= 100;
}
while (temp > 99)
{
roman += "C";
temp -= 100;
}
while (temp > 89)
{
roman += "XC";
temp -= 10;
}
// and so on...``````

There are probably more efficient ways of doing it, but it gives you a general idea.

``````switch (number)
{
case 1:
Console.WriteLine("I");
break;
case 2:
Console.WriteLine("II");
break;
}``````

Much better than if/else for more than 3 statements.

``````string[] romanNumerals = {  //Roman Numerals in Here....    };
int input;

Console.Write("Please enter the number you would like converting to numeral");

Console.Write(romanNumerals[input]);

What you could also do is put all your roman numerals in to a text file and read each roman numeral in to the array...

anyway think that way may be a bit easier than many many if or switch statements...``````

james6754, that is a terrible idea, that would take forever to fill in and you still would probably miss some numbers.

If you can get your hands on "A Programmer's Introduction to C#" I believe there is a full blown example of exactly what you are trying to do (if I remember correctly).

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.