GRY-Online.pl --> Archiwum Forum

Problem z kodem w c++

31.10.2003
23:17
[1]

Blendon [ Generaďż˝ ]

Problem z kodem w c++

Mam pewnien problem. Omawialem dzisiaj Algorytm Knutha-Morrisa-Pratta - wyszukiwanie wzorca. Znalezlem w necie kod zrodlowy tego algorytmu w C++ i na poczatku wszystko jest ok, program sie kompiluje, ale po wprowadzeniu danych wyskakuje blad w windowsie i program sie zamyka. Generalnie rzecz bioroac nie wiem co jest zle. Oto ten kod:

#include <iostrem.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

#ifdef __cplusplus
int max (int value1, int value2);
int max(int value1, int value2)
‹return ( (value1 > value2) ? value1 : value2); ›
#endif

int main(void)

char *wzorzec;
char *tekst;
int m,n,i,j,t;
int P[100];//maksymalna dlugosc wzorca to 100 symboli
printf("Podaj tekst\n");
scanf("%s", tekst);
printf("Podaj wzorzec\n");
scanf("%s", wzorzec);
n=strlen(tekst);
m=strlen(wzorzec);
printf("Indeksy poczatku wzorca w tekscie\n");

//obliczenie tablicy P
P[0]=0; P[1]=0; t=0;
for (j=2; j<=m; j++)

while ((t>0)&&(wzorzec[t]!=wzorzec[j-1])) t=P[t];
if (wzorzec[t]==wzorzec[j-1]) t++;
P[j]=t;


//algorytm KMP
i=1; j=0;
while (i<=n-m+1)

j=P[j];
while((j<m)&&(wzorzec[j]==tekst[i+j-1])) j++;
if (j==m) printf("%d\n",i);
i=i+max(1,j-P[j]);

getch();
return 0;


PS. Uzywam kompilatora dev c++ 4.9.8.0

31.10.2003
23:32
[2]

mORfeOoSH [ NULL ]

char *wzorzec = new char[100];
char *tekst = new char[100];

sprobuj tak, moze zadziala

31.10.2003
23:42
smile
[3]

Blendon [ Generaďż˝ ]

mORfeOoSH -----> wielkie dzieki, nie wiem jak to zrobiles, ale dziala bez zarzutu!

31.10.2003
23:47
[4]

mORfeOoSH [ NULL ]

duzo cwicze gdy jestem sam :)

01.11.2003
00:48
[5]

Vein [ Sannin ]

morfeoosh - tak wiem ze duzo cwiczysz z gumowym kurczakeim jak jestes sam
a co do tego co zorbil morfeoosh to poprostu ustalil max. ilosc znakow dla tej zmiennej.... poprostu nie byl ot dokonczony algorytm, trzeba bylo ustalic wielkosc zmiennych (tak tak karpiu, ucze sie ucze !!!)

© 2000-2024 GRY-OnLine S.A.