Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Römische Zahlen in Dezimalzahlen (Unterprogramme)

Ihr Programm soll eine Funktion enthalten, die EINZELNE römische Ziffern in die entsprechende Dezimalzahl umwandelt. Lesen Sie dafür einen einzelnen Buchstaben von der Tastatur mit scnaf() ein.

Folgende Umrechnungstabelle: I=1;V=5;X=10;L=50;C=100;D=500;M=1000

Eine gültige Eingabe soll zum Abbruch des Programms führen.

 

Mögliche Ausgabe:

Geben Sie eine roemische Ziffer ein: M

Der Dezimalwert der Eingabe ist:      1000

Geben Sie eine römische Ziffer ein:   4

Diese Zahl ist kein vorgeschriebener Wert! Abbruch Danke!

2 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (2)

SuggarDaddy 13. November 2019 13:41   reply report
HowDenKing
Aufgabe richtet sich nach spezifischen Programmiersprachen,
scanf() ist ein C/C++ spezifischer Befehl.
Hier sollte auf eine Allgemeinere Aufgabenstellung zurückgegriffen werden, um eine breitere Zielgruppe anzusprechen.

Abgesehen davon, dass die Aufgabenstellung Dezimalzahlen, also Kommazahlen, verlangt, aber einzelne Römische Zahlen keine Dezimalzahlen beinhalten und somit in der "Möglichen Ausgabe" auch keine Dezimalzahl ausgegeben wurde.
Wenn man denn unbedingt eine Dezimalzahl haben möchte, müsste man .0 ausgeben, was wiederum keinen wirklichen Sinn ergibt.

Nein, dort steht es sollen nur die römischen Zahlen in Dezimalzahlen umgewandelt werden. Du kannst ja sie auch mit Konstanten definieren also die Dezimalzahlen und so einfügen dann brauchst du auch keine Kommazahlen mehr:).
Ich habe scanf() geschrieben weil meiner Meinung nach in C das am leichtesten programmiert werden kann aber es gibt keineswegs ein begrenztes Spektrum wie du das programmieren sollst.
War aber auch mein Fehler leider, mit scanf() meine ich ja C im gegeben falls, stimmt auch wiederum. Ich war zu nachlässig.
HowDenKing 13. November 2019 12:43   reply report
Aufgabe richtet sich nach spezifischen Programmiersprachen,
scanf() ist ein C/C++ spezifischer Befehl.
Hier sollte auf eine Allgemeinere Aufgabenstellung zurückgegriffen werden, um eine breitere Zielgruppe anzusprechen.

Abgesehen davon, dass die Aufgabenstellung Dezimalzahlen, also Kommazahlen, verlangt, aber einzelne Römische Zahlen keine Dezimalzahlen beinhalten und somit in der "Möglichen Ausgabe" auch keine Dezimalzahl ausgegeben wurde.
Wenn man denn unbedingt eine Dezimalzahl haben möchte, müsste man .0 ausgeben, was wiederum keinen wirklichen Sinn ergibt.

6 Lösung(en)

romZiff = ['I', 'V', 'X', 'L',  'C', 'D', 'M'  ]
romWert = [  1,   5,  10,  50,  100, 500, 1000 ]

def rom_in_zahl(i):
    for j in range(0, len(romZiff)):    
        if i == romZiff[j]:
            return romWert[j]    
  
a = 1
while a:                          # Endlosschleife    

    i = input('Geben Sie eine roemische Ziffer ein: ')  

    if  i not in romZiff:
        print('Das ist keine roemische Ziffer!')
        print()        
        
    else:
        print('Der Dezimalwert der Eingabe ist:    ', rom_in_zahl(i))
        print()
                

Lösung von: Alex Groeg (Freies Lernen)

// Kotlin

fun main() {
    val romMap = mapOf(
            'I' to 1,
            'V' to 5,
            'X' to 10,
            'L' to 50,
            'C' to 100,
            'D' to 500,
            'M' to 1000
    )

    var line: String

    do {
        print("Geben Sie eine roemische Ziffer ein: ")
        line = readLine()!!

        if(line.length != 1)
            break

        val char = line[0]

        if(!romMap.containsKey(char))
            break

        println("Der Dezimalwert der Eingabe ist: ${romMap[char]}")
    } while(true)
}
                

Lösung von: Linus Götz (Lichtenberg-Gymnasium Cuxhaven)

package romnumtodec;

import java.util.HashMap;

public class calculate {
    
    HashMap<String, Integer> num = new HashMap<>();
    String str = "";
    
    public calculate(String str){
        num.put("I", 1);
        num.put("V", 5);
        num.put("X", 10);
        num.put("L", 50);
        num.put("C", 100);
        num.put("D", 500);
        num.put("M", 1000);
        if(str.equals("I") == true ||
                str.equals("V") == true ||
                str.equals("X") == true ||
                str.equals("L") == true ||
                str.equals("C") == true ||
                str.equals("D") == true ||
                str.equals("M") == true){
        this.str = str;
        }else{
            System.out.println("Enter a valid character [ I | V | X | L | C | D | M ]");
        }
    }
    
    public int getDecimal(){
        int valReturn = num.get(str);
        return valReturn;
    }
}
                

Lösung von: Zeno Rauch (Berufsbildung Baden & kantonsschule Baden)

using System;
using System.Collections.Generic;

namespace Römer
{
    class Program
    {
        static Dictionary<char, int> RömischeZahlen;

        //Statischer Konstruktor zum füllen eines Dictionaries mit Wertigkeiten zu den Ziffern
        static Program()
        {
            RömischeZahlen = new Dictionary<char, int>();

            RömischeZahlen.Add('I', 1);
            RömischeZahlen.Add('V', 5);
            RömischeZahlen.Add('X', 10);
            RömischeZahlen.Add('L', 50);
            RömischeZahlen.Add('C', 100);
            RömischeZahlen.Add('D', 500);
            RömischeZahlen.Add('M', 1000);
        }

        static void Main(string[] args)
        {
            bool res;

            //Führe die Schleife solange aus, bis eine falsche Eingabe getätigt wird
            do
            {
                Console.Write("Gebe eine römische Ziffer ein: ");
                res = decodeSingle(Console.ReadKey().KeyChar);
            } while (res);

            Console.ReadLine();
        }

        static bool decodeSingle(char ziffer)
        {
            //Prüfe ob das Zeichen existiert und gebe dieses aus.
            if (RömischeZahlen.ContainsKey(ziffer))
            {
                Console.WriteLine($"\nEingegebenes Zeichen: {ziffer}\nDezimalzahl des Zeichens: {RömischeZahlen[ziffer]}\n");
                return true;
            }
            //Sollte das Zeichen nicht existieren, so gebe false zurück.
            else
            {
                Console.WriteLine("\nDiese Zahl existiert nicht! Abbruch...");
                return false;
            }
        }
    }
}
                

Lösung von: Tobias Golz (Wilhelm Büchner Hochschule)

// display
document.write(`
  <div id="display">Geben Sie eine römische Ziffer ein: </div>
`);

document.addEventListener('keydown', readKey)

function readKey(ev) {
  let display = document.getElementById('display'),
      rom = 'I V X L C D M'.split(' '),
      dec = '1 5 10 50 100 500 1000'.split(' '),
      index = rom.indexOf(ev.key);
  // shifttasten ignorieren
  if (ev.key != 'Shift') {
    display.innerHTML += `${ev.key}<br>`;
    // gültige römische ziffer
    if (index > -1) {
      display.innerHTML +=
        `Der Dezimalwert der Eingabe ist: ${dec[index]}`;
      // programmabbruch
      document.removeEventListener('keydown', readKey);
    // ungültige römische ziffer
    } else display.innerHTML += `Diese Zahl ist kein vorgeschriebener
      Wert! Abbruch Danke!<br><br>Geben Sie eine römische Ziffer ein: `;
  }
}                                                            // lissalanda@gmx.at
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// NET Core 3.x

using System;

namespace CS_Aufgabe_Roemische_Zahlen
{
    class Program
    {
        enum RoemischeZiffern
        {
            I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000
        }

        static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("Bitte 'Römische Ziffer' eingeben: ");
                var i = Console.ReadLine().ToUpper()[..1];

                if (!Enum.IsDefined(typeof(RoemischeZiffern), i))
                {
                    Console.WriteLine("Keine gültige 'Römische Ziffer'!");
                    return;
                }

                Console.WriteLine($"Römisch {i} entspricht Dezimal {(int)Enum.Parse(typeof(RoemischeZiffern), i)}");
            }
        }
    }
}

                

Lösung von: Jens Kelm ()

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Mittel
Webcode: 8c0q-zuje
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen