[c] porównywanie ze wzorcem

Awatar użytkownika
piti-n
Użytkownik
Użytkownik
Posty: 534
Rejestracja: 24 gru 2010, o 22:42
Płeć: Mężczyzna
Lokalizacja: Wroclaw
Podziękował: 41 razy
Pomógł: 45 razy

[c] porównywanie ze wzorcem

Post autor: piti-n »

Treść zadania to " Napisz funkcję strMatch, która ustala zgodność wzorca z łańcuchem. Znak ’ ?’ we
wzorcu oznacza zgodność z dowolnym innym znakiem, znak ’*’ oznacza zgodność
z dowolnym, również pustym, łańcuchem, znak różny od ’ ?’ i ’*’ oznacza zgod-
ność tylko z samym sobą. Na przykład, strMatch(”*.doc”,s) ma zwracać TRUE
wtedy i tylko wtedy, gdy napis s jest postaci ”xxxxx.doc” oraz strMatch(”a???”,s)
ma zwracać TRUE wtedy i tylko wtedy, gdy s ma długość 4 i zaczyna się od
litery ’a’."

Ogólnie program nie jest trudny, ale mam problem z pustym łańcuchem znaków. Jak nic nie wpiszę ( terminal linux) tylko poprostu nacisnę ENTER to program nadal czeka na to abym wpisał coś. Może ma ktoś pomysł co zrobić z tym pustym łańcuchem?-- 28 gru 2011, o 21:24 --Próbowałem coś z kodami ASCII, ale nic nie szło
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[c] porównywanie ze wzorcem

Post autor: Afish »

Bodaj ctrl+d oznacza eof. Na Windowsie jest chyba ctrl+z. To o to chodzi?
Awatar użytkownika
piti-n
Użytkownik
Użytkownik
Posty: 534
Rejestracja: 24 gru 2010, o 22:42
Płeć: Mężczyzna
Lokalizacja: Wroclaw
Podziękował: 41 razy
Pomógł: 45 razy

[c] porównywanie ze wzorcem

Post autor: piti-n »

Raczej nie o to. Chodzi o algorytm, a nie o przerwanie działania programu. Chodzi o to żeby po wpisaniu wzorca 'qwerty' i później łańcucha do porównania ' ' (pusty) to wyskakiwało błąd a nie oczekiwało na wpisanie czegoś.

-- 28 gru 2011, o 22:14 --

Według mnie powinien być jakiś if przyrównujący łańcuch do jakiejś wartości, ale nie wiem jakiej
void_t
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 14 maja 2011, o 18:25
Płeć: Mężczyzna
Pomógł: 26 razy

[c] porównywanie ze wzorcem

Post autor: void_t »

A, rozumiem, implementacja elementarnych wyrażeń regularnych.

Kiedy naciskasz ENTER to otrzymujesz znak nowej linii ('\n') ale chyba nie o to chodzi?
Awatar użytkownika
piti-n
Użytkownik
Użytkownik
Posty: 534
Rejestracja: 24 gru 2010, o 22:42
Płeć: Mężczyzna
Lokalizacja: Wroclaw
Podziękował: 41 razy
Pomógł: 45 razy

[c] porównywanie ze wzorcem

Post autor: piti-n »

Tak, po naciśnięciu ENTER powinno przyjmować to jako łańcuch pusty-- 28 gru 2011, o 22:50 --Jak rozumię powinienem poczytać o elementarnych wyrażeń regularnych. To klucz do rozwiązania tego zadania?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[c] porównywanie ze wzorcem

Post autor: Afish »

piti-n pisze:Chodzi o to żeby po wpisaniu wzorca 'qwerty' i później łańcucha do porównania ' ' (pusty) to wyskakiwało błąd a nie oczekiwało na wpisanie czegoś.
No pusty łańcuch, czyli nic nie udało się wczytać. A dlaczego nic się nie wczytało? Bo napotkało się eof. Albo wczytuj do znaku nowej linii i po sprawie.
void_t
Użytkownik
Użytkownik
Posty: 103
Rejestracja: 14 maja 2011, o 18:25
Płeć: Mężczyzna
Pomógł: 26 razy

[c] porównywanie ze wzorcem

Post autor: void_t »

A o prawdziwych wyrażeniach regularnych też nie zaszkodzi poczytać - poniekąd funkcja, którą implementujesz ma je interpretować.
ODPOWIEDZ