EPROG-LU - Aufgabe 3138 (Wildcards)
3138 |
Wildcard |
Wildcards |
Kategorie: | String |
Klasse: | mittel |
Eingabe: | siehe Spezifikation |
Ausgabe: | siehe Spezifikation |
|
Abzugebende Files: Wildcard.txt, Wildcard.java, *.java , 10120.txt, 9987.txt |
Kurzbeschreibung:
Ein String wird mit einem Suchbegriff verglichen.
Allgemeine Hinweise:
-
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten,
die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie
diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Wildcard.java muß aber die Methode main enthalten. Weiters müssen alle abgegebenen Klassenfiles in demselben Verzeichnis vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
[Wir tun das jetzt auch :-)]
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns
nicht getestet werden und werden daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Ihr Programm soll zwei Strings einlesen. Der zweite String enthält einen Suchbegriff.
Im Suchbegriff haben die folgenden Zeichen eine spezielle Bedeutung:
? * [ ] ^ \
Diese Zeichen werden "Wildcards" genannt. Dabei steht ein Fragezeichen für ein
beliebiges Zeichen, ein Stern für einen beliebigen Teilstring (kann auch leer
sein) und in eckige Klammern eingeschlossene Zeichen für eines dieser Zeichen.
Wenn aber das erste Zeichen in der eckigen Klammer ein Hochzeichen ^ ist, dann
ist jedes Zeichen, das nicht in der Klammer vorkommt, passend. (Siehe hierzu
auch die Spezifikation des Erstrundenbeispiels, wo diese Themen erschöpfend
erläutert werden).
Mit dem verkehrten Schrägstrich wird die Spezialbedeutung des nächsten
Zeichens aufgehoben.
Ihr Programm soll feststellen, ob der Suchbegriff zum ersten String paßt.
Dazu müssen sie den Suchbegriff in Einzelteile zerlegen (jeweils zwischen 2
Sternen) und für jeden Teil prüfen, ob Sie eine Übereinstimmung im ersten
String finden (wobei Sie für jeden Teil erst ab der Stelle suchen dürfen,
wo Sie mit dem vorhergehenden Teil aufgehört haben). Wenn der Suchbegriff
nicht mit einem Stern beginnt, muß der erste Teil mit dem Anfang des ersten
Strings übereinstimmen; analoges gilt für das Ende.
Eingabedaten:
Lesen Sie zwei Strings ein. Der erste String darf maximal 30 Zeichen lang sein
und unterliegt keinerlei syntaktischen Beschränkungen.
Der zweite String enthält den Suchbegriff. Die Sonderzeichen müssen syntaktisch korrekt gesetzt werden
oder durch einen Backslash aufgehoben werden
(Falsch wäre z.B. [a[b] , da die zweite öffnende Klammer an dieser Stelle
nicht stehen darf. Statt dessen müßte [a\[b] eingegeben werden.)
Der zweite String darf maximal 30 Zeichen lang sein.
Ausgabedaten:
Bei korrekten Eingabedaten soll Ihr Programm "JA" ausgeben, falls der Vergleich positiv ist, ansonsten "NEIN". Geben Sie danach einen Zeilenvorschub
aus.
Fehlerbehandlung:
Bei fehlerhaften Eingabedaten ist die Meldung "FALSCHE EINGABE", gefolgt von
einem Zeilenvorschub, auszugeben.
Lesen Sie aber auf jeden Fall beide Strings ein, auch wenn schon der erste
fehlerhaft ist.
Beispiele:
Eingabedaten
|
Erich E?*[gh]
Hallo H*x*
|
Testen:
Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java Wildcard < Wildcard.i1 > Wildcard.out1
Das erzeugte File Wildcard.out1 können Sie dann mit dem mitgelieferten Outputfile Wildcard.o1 vergleichen.