skip to main content

kiesler.at

Variablen mit Hashtable verwalten
updated by rck, 2004-10-03

Beispiel 1186 der EPROG-Beispielsammlung lässt sich sehr schön mit einer Hashtable lösen. Es handelt sich hierbei um eine schlichte Variablenverwaltung für ganzzahlige Werte.
                     
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

Die Eingabe

Die Aufgabe 1186 sieht als Eingabe eine Liste von Variablen vor. Abgeschlossen wird das ganze durch eine Query in der Form "?Variable" oder "?Zahl".


Beispiel 1: Möchten wir uns beispielsweise die Variablen NOTENSCHNITT=4 und REIFENZAHL=4 merken und im Anschluß herausfinden, wie hoch denn nun der Notenschnitt war, übergeben wir unserem Programm folgendes:


NOTENSCHNITT=4 REIFENZAHL=4 ?NOTENSCHNITT


Beispiel 2: Das Angenehme an unserem Programm ist aus Benutzersicht, dass man Werte von Variablen nicht nur bei der Ausgabe, sondern auch schon bei der Eingabe verwenden kann. Folgendes wäre für das Programm korrekt, macht allerdings in der Praxis nicht so besonders viel Sinn:


NOTENSCHNITT=4 REIFENZAHL=NOTENSCHNITT ?REIFENZAHL


Beispiel 3: Man kann sich nun auch die ganzen Variablendefinitionen sparen und gleich von Anfang an eine Konstante ausgeben. Das geht folgendermaßen:


?4


Beispiel 4: Was nicht geht, ist Variablen ausgeben, die noch nicht definiert wurden:


?NOTENSCHNITT


Dieses Beispiel würde zu der Fehlermeldung "FALSCHE EINGABE" führen.

Weitere Fehlerfälle

Bezüglich der Fehlermeldungen ist unser Programm sehr puristisch, es gibt nur die Meldung "FALSCHE EINGABE", falls etwas nicht stimmt.


Der Fehler kann auftreten, wenn


  • Ein Variablenname Umlaute oder sonst irgendwas schlimmes enthält (erlaubt sind nur Buchstaben, nicht erlaubt wäre zB GRÜNDUNGSBESCHRÄNKUNG=61)
  • Eine undefinierte Variable als Wert verwendet wird (zB NAME=UNBEKANNT)
  • Eine Zahl mit Vorzeichen, Dezimalpunkt oder sonstigen Sonderzeichen angegeben wird
  • Eine Zahl, die Außerhalb des Short-Zahlenbereichs liegt, angegeben wird (2^15-1)
  • mehr als 10 Variablen definiert werden
                     
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004