Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int dlugosc(char *lan);
- int sprawdz(char *tekst, char *wzor);
- int *sprawdz_w(char *tekst, char *wzor, int *ilosc);
- int main()
- {
- char tekst[100];
- char wzor[5];
- for(;;)
- {
- int *tab=NULL,ilosc=0,i=0,czy=0;
- printf("podaj tekst: ");
- fflush(stdin);
- tekst[0]='\0';
- scanf("%99[^\n]s",tekst);
- printf("podaj wzor: ");
- wzor[0]=0;
- fflush(stdin);
- scanf("%4[^\n]s",wzor);
- if((czy=sprawdz(tekst,wzor))==-1)
- break;
- printf("indeks rozpoczecia wzorca: %d\n",sprawdz(tekst,wzor));
- tab=sprawdz_w(tekst,wzor,&ilosc);
- printf("ilosc wzorcow w tekscie: %d\n",ilosc);
- for(;i<ilosc;i++)
- {
- printf("Indeks %d wystapienia wzorca: %d\n",i+1,tab[i]);
- }
- }
- }
- int dlugosc(char *lan)
- {
- int i=0;
- while(lan[i]!='\0')
- i++;
- return i;
- }
- int sprawdz(char *tekst, char *wzor)
- {
- int i=0,j=0,text_len=dlugosc(tekst),pattern_len=dlugosc(wzor);
- for(i=0;i<text_len;i++)
- {
- if(tekst[i]!=wzor[0])
- continue;
- for(j=0;j<pattern_len;j++)
- {
- if(tekst[i+j]!=wzor[j])
- break;
- }
- if(j==pattern_len)
- return i;
- if(text_len-(i+1)<pattern_len)
- return -1;
- }
- return -1;
- }
- int *sprawdz_w(char *tekst, char *wzor, int *ilosc)
- {
- int i=0,j=0,text_len=dlugosc(tekst),pattern_len=dlugosc(wzor),*tab=NULL,ile=0;
- for(i=0;i<text_len;i++)
- {
- if(tekst[i]!=wzor[0])
- continue;
- for(j=0;j<pattern_len;j++)
- {
- if(tekst[i+j]!=wzor[j])
- break;
- }
- if(j==pattern_len)
- {
- tab=(int*)realloc(tab,(ile+1)*sizeof(int));
- tab[ile]=i;
- ile++;
- }
- if(text_len-(i+1)<pattern_len)
- break;
- }
- *ilosc=ile;
- return tab;
- }
Add Comment
Please, Sign In to add comment