Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 26 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Algorytm GS' C++.cpp:
//www.algorytm.org
//Algorytm GS' - wersja algorytmu Galila-Seiferasa dla pewnej klasy wzorcow
//(c)2002 Tomasz Lubinski
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <math.h>
#ifdef __cplusplus
int max (int value1, int value2);
int max(int value1, int value2)
{return ( (value1 > value2) ? value1 : value2);}
#endif
void main(void)
{
char *wzorzec;
char *tekst;
int m,n,i,j;
printf("Podaj tekst\n");
scanf("%s", tekst);
printf("Podaj wzorzec (pamietaj, ze musi to byc wzorzec latwy)\n");
scanf("%s", wzorzec);
n=strlen(tekst);
m=strlen(wzorzec);
printf("Indeksy wystapien wzorca w tekscie\n");
i=0;
while (i<=n-m+1)
{
j=0;
while ((j<m)&&(wzorzec[j]==tekst[i+j-1])) j++;
if (j==m) printf("%d\n", i);
i=i+max(1,ceil(j/3));
}
getch();
}
//---------------------------------------------------------------------------