Filtrowanie ciągu znaków

0

Witam mam następujące zadanie do wykonania w C:

Opracować program wczytujący ze standardowego wejścia ciągi znaków oddzielone spacją i wyświetlający te te ciągi, które mają zawierają zadany ciąg znaków. Można założyć, że wszystkie wprowadzane dane będą poprawne.

Przykładowo dla zadanego ciągu abb i znaków na standardowym wejściu:

ababbssh shhhh aa abbbb ssss dwkkw aaa oeiufffll

program powinien wyświetlić:

ababbssh abbbb"

Wszelka pomoc oraz porady jak to ugryźć mile widziane :)

0

Zadanie nie jest trudne, zrób to tak:

  1. Pobierz szukany podciąg od użytkownika.
  2. Pobierz ciągi w których masz szukać wzorca.
  3. Podziel ciąg z punktu 2 po spacjach i wynikowe ciągi zapisz do tablicy char.
  4. Dla każdego elementu w tablicy wyszukuj wzorca.

Wyszukiwanie wzorca: (nie znam czystego C, może jest tam coś co wyszukuje w tekście, nie wiem) ale to co Ci podam też zadziała

  1. Szukaj pierwszego a
  2. Jeśli następne dwa znaki są b to jest ok i wypisujesz tę tablicę, jeśli nie szukasz następnego a, jeśli jest to znów sprawdzasz czy jest b na dwóch następnych pozycjach, oczywiście robisz te operacje tak aby nie wyjść poza zakres ciągu znaków
0

Potrzebujesz wyszukiwac zadanego wzorca w ciągu znaków wejściowych (w pętli), jedyny problem to właśnie substring algorytm (wyszukiwanie danego ciagu znaków w innym ciągu [znaków]), naiwna wersja (pseudokod), via Wikipedia:

function NaiveSearch(string s[1..n], string pattern[1..m])

   for i from 1 to n-m+1

      for j from 1 to m

         if s[i+j-1] ≠ pattern[j]

            jump to next iteration of outer loop

      return i

   return not found

Najgorszy przypadek to będzie O(mn), ale średnio O(m + n).
Bardziej wydajne algorytmy, również Wikipedia, tutaj: https://en.wikipedia.org/wiki/String_searching_algorithm

1 użytkowników online, w tym zalogowanych: 0, gości: 1