toDecimal - nicht zulässige Eingaben

mrzb6
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 4. Okt 2010 21:50
Wohnort: Darmstadt

toDecimal - nicht zulässige Eingaben

Beitrag von mrzb6 »

Hey,

nachdem bei mir zahlreiche Stunden Arbeit in diverse toDecimal-Prozeduren geflossen sind (von denen keine 100% überzeugen konnte), wollte ich mal fragen, wie penibel unzulässige Eingaben gefunden werden sollen:
  • CMM entspricht 900+1000=1900 statt 1000+900=1900. MCM wäre richtig, aus den drei Regeln im Praktikums-PDF lässt sich aber nicht ableiten, dass CMM falsch wäre.
    IVI ist eine "schmutzige" Darstellung von 5. Wiederum gilt, dass V richtig wäre, aus dem PDF aber nicht hervorgeht, dass IVI falsch wäre.
Nachdem vor allem IVI mich auf die Palme gebracht hat (stirb, IVI :evil:), ist jetzt die Frage, ob solche Fälle überhaupt abgefangen werden sollen.
Was meint Ihr?

Benutzeravatar
zimpfer
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 15. Mär 2009 01:07

Re: toDecimal - nicht zulässige Eingaben

Beitrag von zimpfer »

In der Aufgabenstellung steht:
Bzgl. der Prüfung der Eingabe
reicht es hier, wenn Sie zu Beginn prüfen, ob alle Zeichen der Eingabe aus der Menge der zulässigen Zeichen
stammen und während der Konvertierung einen Fehler ausgeben, wenn ein Fall auftritt, den ihr Code nicht kon-
vertieren kann.
Die genannten Fehler müssen also nicht abgefangen werden, nur illegale Zeichen müssen erkannt und abgefangen werden.


Ursprünglich war auch eine 100%ige syntaktische Prüfung gedacht, aber diese ist in Assembler nicht einfach und wurde weggelassen.

mrzb6
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 4. Okt 2010 21:50
Wohnort: Darmstadt

Re: toDecimal - nicht zulässige Eingaben

Beitrag von mrzb6 »

Okay, vielen Dank.

nein23
Windoof-User
Windoof-User
Beiträge: 29
Registriert: 7. Okt 2009 18:15
Wohnort: Darmstadt

Re: toDecimal - nicht zulässige Eingaben

Beitrag von nein23 »

hallo, ich hatte mir zuerst garkeine gedanken zur überprüfung gemacht, da ich erstmal eine lauffähige konvertireung haben wollte. allerdings viel mir danach auf dass mein algorithmus eine komplette syntaktische überprüfung beinhaltet. nun stelle ich mir die frage, da in der aufgabenstellung steht dass man "zu Beginn" überprüfen soll, ob das ok ist. denn bei mir wird die syntaktische korrektheit stets wärend der konvertierung überprüft, allerdings nich zu beginn.

Benutzeravatar
zimpfer
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 15. Mär 2009 01:07

Re: toDecimal - nicht zulässige Eingaben

Beitrag von zimpfer »

nein23 hat geschrieben:hallo, ich hatte mir zuerst garkeine gedanken zur überprüfung gemacht, da ich erstmal eine lauffähige konvertireung haben wollte. allerdings viel mir danach auf dass mein algorithmus eine komplette syntaktische überprüfung beinhaltet. nun stelle ich mir die frage, da in der aufgabenstellung steht dass man "zu Beginn" überprüfen soll, ob das ok ist. denn bei mir wird die syntaktische korrektheit stets wärend der konvertierung überprüft, allerdings nich zu beginn.
Das ist natürlich auch in Ordnung.

kbraden
Mausschubser
Mausschubser
Beiträge: 98
Registriert: 15. Okt 2010 20:35

Re: toDecimal - nicht zulässige Eingaben

Beitrag von kbraden »

Es ist nicht zulässig auf ein Subtraktionspaar ein einzelnes Zeichen folgen zu lassen, das eine höhere Wertigkeit als der linke Teil des Subtraktionspaars hat. Bspw. ist XCLIII (90 + 50 + 3) als Darstellung von 143 nicht erlaubt, da L einen höheren Wert als X hat. Die korrekte Darstellung von 143 ist CXLIII (100+40+3).
Versteh ich das jetzt richtig, dass das bei toDecimal auch nicht abgefangen werden muss?

Benutzeravatar
zimpfer
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 15. Mär 2009 01:07

Re: toDecimal - nicht zulässige Eingaben

Beitrag von zimpfer »

kbraden hat geschrieben:
Es ist nicht zulässig auf ein Subtraktionspaar ein einzelnes Zeichen folgen zu lassen, das eine höhere Wertigkeit als der linke Teil des Subtraktionspaars hat. Bspw. ist XCLIII (90 + 50 + 3) als Darstellung von 143 nicht erlaubt, da L einen höheren Wert als X hat. Die korrekte Darstellung von 143 ist CXLIII (100+40+3).
Versteh ich das jetzt richtig, dass das bei toDecimal auch nicht abgefangen werden muss?
Bei toRoman sollen illegale Zahlen abgefangen werden, bei toDecimal müssen nur illegale Zeichen abgefangen werden.

nein23
Windoof-User
Windoof-User
Beiträge: 29
Registriert: 7. Okt 2009 18:15
Wohnort: Darmstadt

Re: toDecimal - nicht zulässige Eingaben

Beitrag von nein23 »

wäre 12b34c6 dann eine illegale zahl oder sind damit nur zahlen >=4000 gemeint?

Benutzeravatar
zimpfer
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 144
Registriert: 15. Mär 2009 01:07

Re: toDecimal - nicht zulässige Eingaben

Beitrag von zimpfer »

nein23 hat geschrieben:wäre 12b34c6 dann eine illegale zahl oder sind damit nur zahlen >=4000 gemeint?
Solche Eingaben werden vom vorgegebenen scanf abgefangen, scanf würde in diesem Fall nur 12 speichern und den Rest ignorieren.

Das muss nicht abgefangen werden, eine Wertebereichsprüfung reicht.

Uhr
Windoof-User
Windoof-User
Beiträge: 24
Registriert: 30. Sep 2010 17:14

Re: toDecimal - nicht zulässige Eingaben

Beitrag von Uhr »

Ich muss jetzt noch mal konkret nachfragen, da die Tutoren sich scheinbar auch nicht ganz sicher sind bzw. die Aufgabe ursprünglich wohl anders interpretiert hatten. Daher ein einfaches Beispiel:

IIV

Nach der Beschreibung der römischen Regeln natürlich nicht korrekt, da zwei kleinere Zeichen links von V stehen. Wenn wir aber davon ausgehen, dass nur falsche Zeichen abgefangen werden sollen, ergibt sich bei uns als Ausgabe schlicht 5, durch die Rechnung 1+4. Ist das so gedacht oder sollte in einem solchen Fall ein Fehler ausgegeben werden?

Der Grund für die Unsicherheit ist, dass in der Aufgabe ja steht, dass wir einen Fehler ausgeben sollen, wenn unser Programm die Eingabe nicht verarbeiten kann. Und zwar nachdem wir die Zeichen schon überprüft haben. Ohne die erzwungene Einhaltung korrekter Regeln kann das allerdings gar nicht passieren.

mike
Erstie
Erstie
Beiträge: 16
Registriert: 6. Nov 2011 13:59

Re: toDecimal - nicht zulässige Eingaben

Beitrag von mike »

Hi,

also ich denke der Satz "Eingabe nicht verarbeiten" gilt nur für ungültige Zeichen, weil er kann ja mit IIX die Eingabe verarbeiten, nur stimmt diese nicht mit einer Regel überein. Es kann aber eine Zahl berechnet werden die je nach Interpretation, Regel sogar stimmt.


Gruß
Mike

mw1039
Computerversteher
Computerversteher
Beiträge: 346
Registriert: 12. Apr 2011 12:18

Re: toDecimal - nicht zulässige Eingaben

Beitrag von mw1039 »

Die Aufgabenstellung sagt ja
Bzgl. der Prüfung der Eingabe reicht es hier, wenn Sie zu Beginn prüfen, ob alle Zeichen der Eingabe aus der Menge der zulässigen Zeichen stammen...
Das ist so zu verstehen, dass ihr z.B. bei Q32IV eine Fehlermeldung ausgeben sollt. Abgesehen vond er Pruefung nicht zulaessiger Zeichen enthalten die Testcases der Tutoren aber nur gueltige roemische Zahlen.

Das gilt aber ausdruecklich nur fuer die Richtung roman->decimal. Fuer decimal->roman sollt ihr bei allen denkbaren falschen Eingaben einen Fehler ausgeben. Also z.B. bei "Q32IV" und bei "4000".

radix89
Mausschubser
Mausschubser
Beiträge: 66
Registriert: 13. Apr 2011 13:45

Re: toDecimal - nicht zulässige Eingaben

Beitrag von radix89 »

mw1039 hat geschrieben:Das gilt aber ausdruecklich nur fuer die Richtung roman->decimal. Fuer decimal->roman sollt ihr bei allen denkbaren falschen Eingaben einen Fehler ausgeben. Also z.B. bei "Q32IV" und bei "4000".
Wie soll ich das denn bei der toRoman prüfen, im Template steht doch schon ganz am Anfang Dezimalzahl einlesen.
Dann gehe ich doch davon aus, dass eine Dezimalzahl eingelesen wird und danach in Input steht.

XT-19
Neuling
Neuling
Beiträge: 4
Registriert: 27. Okt 2011 13:31

Re: toDecimal - nicht zulässige Eingaben

Beitrag von XT-19 »

Wie schaut es mit der Antwort aus? Es würde mich mal sehr interessieren, was die Tutoren dazu sagen.
Cheers,
XT

michi21
Neuling
Neuling
Beiträge: 3
Registriert: 14. Apr 2011 08:22

Re: toDecimal - nicht zulässige Eingaben

Beitrag von michi21 »

Mich würde die Antwort auch mal interessieren, vor allem, da teilweise unterschiedliche Antworten gegeben werden:
mw1039 hat geschrieben:Das gilt aber ausdruecklich nur fuer die Richtung roman->decimal. Fuer decimal->roman sollt ihr bei allen denkbaren falschen Eingaben einen Fehler ausgeben. Also z.B. bei "Q32IV" und bei "4000".
zimpfer hat geschrieben:
nein23 hat geschrieben:wäre 12b34c6 dann eine illegale zahl oder sind damit nur zahlen >=4000 gemeint?
Solche Eingaben werden vom vorgegebenen scanf abgefangen, scanf würde in diesem Fall nur 12 speichern und den Rest ignorieren.

Das muss nicht abgefangen werden, eine Wertebereichsprüfung reicht.
Was ist denn nun richtig?

Antworten

Zurück zu „Archiv“