* * * * * * * * * * * * * * * * * *Name: Spitzer Peter * *MatrNr. 0425549 * *E-MAil: peter_spitzer@gmx.at * * * * * * * * * * * * * * * * * * * * Kategorie: String Klasse: mittel Kurzbeschreibung: Ein String wird mit einem Suchbegriff verglichen. 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. 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. Beispiele: Eingabedaten Erich E?*[gh] Hallo H*x* Ausgabedaten JA NEIN PERSOENLICHE BESCHREIBUNG DES PROGRAMMS: Ich arbeite in dieser Runde mit regulären Ausdrücken (siehe eingabe.MATCHES(muster)) Zu Beginn des Programms werden 2 Strings (eingabe und suchbegriff) eingelesen. Anschließend wird ein leerer String namens "muster" geöffnet. Nun wird der string "suchbegriff" zeichen für zeichen durchgelaufen und ueberprueft ob sich eins, wie in der Spezifikation genanntes, Sonderzeichen darin befindet. Bei regulären Ausdrücken sind "[ ]" bzw "^" schon deffiniert. Aus diesem Grund muessen nur das "?", "*" und "\" näher behandelt werden. Im Falle des "?" schreibt das Programm das Zeichen in einen "." und im Falle eines "*" in ".*" um. Wenn sich nun ein "\" in dem Suchebegriff befindet (welches dazu dient das das nächste Zeichen "gequotet" wird, d.h. einfach uebernommen), dann schreibt das Programm einen "\" , das naechste Zeichen wird übernommen und spring zum naechsten Zeichen weiter (i++) Dieser umgeaenderte "suchbegriff" wird unter "muster" abgespeicher. Und anschließend mittels der Operation matches verglichen. Wenn der EingabeString nun mit dem MusterString übereinstimmt, wird ein "JA" ausgegeben, andern Falls ein "NEIN". Im Falle einer Exception wird "FALSCHE EINGABE" ausgegeben.