Übungen zu Algorithmen und Datenstrukturen 1 - Übung 2

1. String Tokenizer

a) Spezifikation korrekt und vollständig?

b) Bessere Spezifikation

Ein "Token" ist eine nicht leere Zeichenkette, welche durch einen "Delimiter" (bspw. ';') begrenzt ist. Dieser Delimiter kann auch aus mehreren Zeichen bestehen.
Der strtock() Algorithmus kann dazu benutzt werden, den String s in einzelne Tokens zu zerlegen. Beim ersten Aufruf von strtok() muss die Zeichenkette s als erstes Argument übergeben werden. Zurückgeg. wird der erste gefunden Token begrenzt mit dem übergebenen Delimiter delim in der Zeichenkette. Sollen weitere Tokens aus der Zeichenkette extrahiert werden, kann der Alg. erneut mit einer leeren Zeichenkette als Argument aufgerufen werden. Der Parameter delim kann bei mehrmaligen Aufrufen mit verschiedenen Werten übergeben werden.
Wird kein Token (mehr) gefunden, wird eine leere Zeichenkette zurückgeg.
Ist der Delimiter delim in der Zeichenkette nicht enthalten, ist die ganze Zeichenkette ein Token und es wird die ganze Zeichenkette zurückgeg.
Sind die Anz. der Zeichen im übergebenen Delimiter delim größer als die Anz. der Zeichen in der Zeichenkette s, wird eine leere Zeichenkette zurückgeg.
Ist der übergebene Delimiter delim leer, wird die ganze Zeichenkette zurückgeg.
Ist die übergebene Zeichenkette s leer, wird eine leere Zeichenkette zurückgeg.

2. Pattern Matching

Spezifikation

Gesucht ist ein Algorithmus int search(↓char[] text ↓char[] pattern), der eine Zeichenkette pattern in einer anderen Zeichenkette text sucht.
Die Zeichenketten sind Aneinanderreihungen von Zeichen aus dem Zeichensatz ISO-8859-15.
Wird die Zeichenkette pattern in text gefunden, wird die Position von pattern in text zurückgeg. (Pos. des ersten Zeichens in text = 0). Wird sie nicht gefunden, wird -1 zurückgeg.
Ist eine der übergebenen Zeichenketten leer, wird -1 zurückgeg.
Der Algorithmus ist in Jana zu formulieren.