Advertisement
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 lan[100];
- char wzr[100];
- int index = 0;
- int*indexy = NULL;
- int ilosc = 0;
- int i = 0;
- while(1)
- {
- printf("--------------\nWpisz lancuch>");
- fflush(stdin);
- *lan = 0;
- scanf("%99[^\n]s", lan);
- if(*lan == 0)
- {
- printf("Lancuch pusty!\n\n");
- continue;
- }
- printf("Dlugosc ciagu: %d", dlugosc(lan));
- printf("\n\nPodaj wzor do znalezienia:>");
- fflush(stdin);
- *wzr = 0;
- scanf("%99[^\n]s", wzr);
- if(*wzr == 0)
- {
- printf("Lancuch pusty!\n\n");
- continue;
- }
- index = sprawdz(lan, wzr);
- if(index == -1)
- {
- printf("\nNie znaleziono wzoru w tekscie!");
- break;
- }
- else
- printf("\nZnaleziono wzor w miejscu: %d", index);
- indexy = sprawdz_w(lan, wzr, &ilosc);
- printf("\nZnaleziono %d wzorow w miejscach:\n", ilosc);
- for(i = 0; i < ilosc; i++)
- printf("%d\t", indexy[i]);
- printf("\n\n");
- }
- getch();
- return 0;
- }
- int dlugosc(char *lan)
- {
- int i = 0;
- while(lan[i]!='\0')
- i++;
- return i;
- }
- int sprawdz(char*tekst, char*wzor)
- {
- int i = 0;
- int j = 0;
- int f = 0;
- int len = dlugosc(tekst);
- int lenwz = dlugosc(wzor);
- for(i = 0; i < len; i++)
- {
- if(lenwz > len + i) break;
- for(j = 0; j < lenwz; j++)
- {
- //printf("\n[%d] = %c\t|\t%c = [%d]", i+j, tekst[i+j], wzor[j], j);
- if(tekst[j+i] != wzor[j])
- break;
- }
- if(j == lenwz) return i;
- }
- return -1;
- }
- int* sprawdz_w(char *tekst, char *wzor, int *ilosc)
- {
- int * indeksy = NULL;
- int i = 0;
- int j = 0;
- int f = 0;
- int len = dlugosc(tekst);
- int lenwz = dlugosc(wzor);
- *ilosc = 0;
- for(i = 0; i < len; i++)
- {
- if(lenwz > len + i) break;
- for(j = 0; j < lenwz; j++)
- {
- //printf("\n[%d] = %c\t|\t%c = [%d]", i+j, tekst[i+j], wzor[j], j);
- if(tekst[j+i] != wzor[j])
- break;
- }
- if(j == lenwz)
- {
- indeksy = (int*) realloc(indeksy, sizeof(int) * (*ilosc+1));
- indeksy[*ilosc] = i;
- (*ilosc)++;
- }
- }
- return indeksy;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement