Sprache: C#
Mit diesem Snippet lassen sich arabische Zahlen in römische Zahlen umwandeln.
public static string IntToRomanNumber(int number)
{
StringBuilder result = new StringBuilder();
int[] digitsValues = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
string[] romanDigits = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
while (number > 0)
{
for (int i = digitsValues.Count() - 1; i >= 0; i--)
if (number / digitsValues[i] >= 1)
{
number -= digitsValues[i];
result.Append(romanDigits[i]);
break;
}
}
return result.ToString();
}
public static string IntToRomanNumber(int number)
{
StringBuilder result = new StringBuilder();
int[] digitsValues = { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
string[] romanDigits = { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
while (number > 0)
{
for (int i = digitsValues.Count() - 1; i >= 0; i--)
if (number / digitsValues[i] >= 1)
{
number -= digitsValues[i];
result.Append(romanDigits[i]);
break;
}
}
return result.ToString();
}
Alte URL:
/snippet/roemische-zahlen/1457
das funktioniert doch nicht oder? muss die 2. Schleife keine „while“ Schleife sein?
Wenn du die Zahl 20 übergibst dann kommt als Ergebnis XIXI raus
Nicht nachvollziehbar. Hast Du es denn ausprobiert?
Ich habe mit folgendem Testcode:
[code]
Console.WriteLine(IntToRomanNumber(1));
Console.WriteLine(IntToRomanNumber(4));
Console.WriteLine(IntToRomanNumber(5));
Console.WriteLine(IntToRomanNumber(6));
Console.WriteLine(IntToRomanNumber(9));
Console.WriteLine(IntToRomanNumber(10));
Console.WriteLine(IntToRomanNumber(14));
Console.WriteLine(IntToRomanNumber(19));
Console.WriteLine(IntToRomanNumber(20));
Console.WriteLine(IntToRomanNumber(50));
Console.WriteLine(IntToRomanNumber(69));
Console.WriteLine(IntToRomanNumber(1976));
Console.WriteLine(IntToRomanNumber(2018));
[/code]
folgenden Output:
I
IV
V
VI
IX
X
XIV
XIX
XX
L
LXIX
MCMLXXVI
MMXVIII