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.

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

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