Feedback

C# - Römische Zahlen

Veröffentlicht von am 08.10.2010
(2 Bewertungen)
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();
}
Abgelegt unter RömischeZahlen, Roman, umwandeln.

2 Kommentare zum Snippet

Mariops007 schrieb am 31.03.2018:
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
Patrick Semmler schrieb am 01.04.2018:
Nicht nachvollziehbar. Hast Du es denn ausprobiert?
Ich habe mit folgendem Testcode:

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));


folgenden Output:
I
IV
V
VI
IX
X
XIV
XIX
XX
L
LXIX
MCMLXXVI
MMXVIII
 

Logge dich ein, um hier zu kommentieren!