C# :: Aufgabe #100 :: Lösung #9

9 Lösungen Lösungen öffentlich
#100

Jahreszahlenkonverter für römische Schreibweise

Anfänger - C# von BlackBird321 - 04.06.2015 um 22:36 Uhr
Bitte schreibe ein Programm, welches eine einzugebende Jahreszahl in eine römische Schreibweise umwandelt.

Beispiel:

1995 = MCMXCV
2015 = MMXV
#9
vote_ok
von hollst (13980 Punkte) - 30.01.2017 um 16:30 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

namespace aufgabe_100  {
    static class Program  {
        static void Main()  {
            //Aufgabenstellung umgekehrt
            Console.Write("Bitte Jahreszahl eingeben (Römische Zahl z. B. MMXVII für 2017): ");
            string input = Console.ReadLine();
            Console.WriteLine(input.RomeToInt_hollst().ToString());
            Console.ReadKey();
        }
    }

    static class myExtensions   {
        public static int RomeToInt_hollst(this String s)   {
            Dictionary<string, int> d = new Dictionary<string, int>() {
                {"M", 1000 }, {"D", 500 }, {"C", 100 }, {"L", 50 }, {"X", 10 }, {"V", 5 }, {"I", 1 }
            };            
            int result = 0, merker = 0;                       
            for (var i = 0; i < s.Length; i++ )  {
                string ss = s[i].ToString().ToUpper();
                if (d.Keys.Contains(ss))  {
                    int value = d[ss];
                    if (merker < value)
                        result -= merker;
                    //  Steht ein weniger wertes Zeichen vor einem höherwertigen, so hat man den Wert des niedriger wertigen Zeichens abzuziehen.
                    //  Gibt sicherlich noch weitere, uneinheitliche Regeln.
                    else
                        result += merker;
                    merker = value;
                }
                else
                    return -1;               
            }
            result += merker;
            return result;
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben