C# :: Aufgabe #30 :: Lösung #7

8 Lösungen Lösungen öffentlich
#30

Zahlen in Römischer Schreibweise

Anfänger - C# von pocki - 29.12.2012 um 19:40 Uhr
Schreibe eine Programm welches eine Ganzzahl einliest und diese anschließend in römischer Schreibweise wieder ausgibt und umgekehrt bei einer eingegebenen Zahl in römischer Schreibweise diese als normale Zahl wieder ausgibt:

Konsolenausgabe:


Geben Sie eine Zahl ein: 1234
entspricht: MCCXXXIV

Geben Sie eine Zahl ein: DXXXVII
entspricht: 537


Die Erkennung der Schreibweise sollte automatisch funktionieren.
#7
vote_ok
von stbehl (1640 Punkte) - 05.02.2018 um 10:55 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer30
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Geben Sie eine Zahl ein: ");
            string zahl = Console.ReadLine();
            int wert = 0, zahlInt, ausgabe = 0;
            if (Int32.TryParse(zahl, out zahlInt))
            {
                
                for (int i = 0; i <= zahl.Length-1; i++)
                {
                    switch (zahl[i])
                    {
                        case '1':
                            wert = 1;
                            break;
                        case '2':
                            wert = 2;
                            break;
                        case '3':
                            wert = 3;
                            break;
                        case '4':
                            wert = 4;
                            break;
                        case '5':
                            wert = 5;
                            break;
                        case '6':
                            wert = 6;
                            break;
                        case '7':
                            wert = 7;
                            break;
                        case '8':
                            wert = 8;
                            break;
                        case '9':
                            wert = 9;
                            break;
                        default:
                            break;
                    }

                    switch (zahl.Length - i)
                    {
                        case 1:
                            if (wert <= 3)
                            {
                                for (int l = 1; l <= wert; l++)
                                {
                                    Console.Write("I");
                                }
                            }
                            else if (wert == 4)
                            {
                                Console.WriteLine("IV");
                            }
                            else if (wert == 5)
                            {
                                Console.Write("V");
                            }
                            else if (wert <= 8)
                            {
                                Console.Write("X");
                                for (int l = 1; l <= wert-5; l++)
                                {
                                    Console.Write("I");
                                }
                            }
                            else
                            {
                                Console.Write("IX");
                            }
                            break;
                        case 2:
                            if (wert <= 4)
                            {
                                for (int l = 1; l <= wert; l++)
                                {
                                    Console.Write("X");
                                }
                            }
                            else if (wert == 5)
                            {
                                Console.Write("L");
                            }
                            else
                            {
                                Console.Write("L");
                                for (int l = 1; l <= wert-5; l++)
                                {
                                    Console.Write("X");
                                }
                            }
                            break;
                        case 3:
                            if (wert <= 4)
                            {
                                for (int l = 1; l <= wert; l++)
                                {
                                    Console.Write("C");
                                }
                            }
                            else if (wert == 5)
                            {
                                Console.Write("D");
                            }
                            else
                            {
                                Console.Write("D");
                                for (int l = 1; l <= wert - 5; l++)
                                {
                                    Console.Write("C");
                                }
                            }
                            break;
                        case 4:
                                for (int l = 1; l <= wert; l++)
                                {
                                    Console.Write("M");
                                }
                            break;
                        default:
                            break;
                    }
                }
            }
            else
            {
                for (int i = 0; i <= zahl.Length-1; i++)
                {
                    switch (zahl[i])
                    {
                        case 'I':
                            ausgabe++;
                            break;
                        case 'V':
                            ausgabe += 5;
                            break;
                        case 'X':
                            ausgabe += 10;
                            break;
                        case 'L':
                            ausgabe += 50;
                            break;
                        case 'C':
                            ausgabe += 100;
                            break;
                        case 'D':
                            ausgabe += 500;
                            break;
                        case 'M':
                            ausgabe += 1000;
                            break;
                    }
                }
                Console.WriteLine(ausgabe);
            }



            Console.ReadKey();
        }

    }
}

Kommentare:

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

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