Advertisement
bartek27210

lab1_algo

Mar 16th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int dlugosc(char *lan);
  5. int sprawdz(char *tekst, char *wzor);
  6. int* sprawdz_w(char *teskt, char *wzor, int *ilosc);
  7.  
  8. int main()
  9. {
  10.     char tekst[100];
  11.     char wzor[5];
  12.     int i=0;
  13.     int ilosc=0,*tab=NULL;
  14.     for(;;)
  15.     {printf("Podaj lancuch znakow: \n");
  16.     fflush(stdin);
  17.     scanf("%99[^\n]s",tekst);
  18.     printf("Podaj wzor: \n");
  19.     fflush(stdin);
  20.     scanf("%4[^\n]s",wzor);
  21.     i=sprawdz(tekst,wzor);
  22.     printf("Wynik funkcji spradz to: %i\n", i);
  23.     tab=sprawdz_w(tekst,wzor,&ilosc);
  24.     printf("\nIlosc to: %i\n",ilosc);
  25.     for(i=0;i<ilosc;i++)
  26.     {
  27.         printf("\n %d - %d\n",i,*(tab+i));
  28.     }
  29.     system("pause");
  30.     return 0;
  31.     }
  32. }
  33.  
  34. int dlugosc(char *lan)
  35. { int i=0;
  36.     while(*(lan+i)!='\0')
  37.     { i++;}
  38.     return i;
  39. }
  40.  
  41. int sprawdz(char *tekst, char *wzor)
  42. {
  43.     int i=0;
  44.     int j=0;
  45.     int k=0;
  46.     int y=dlugosc(wzor);
  47.     int z=dlugosc(tekst);
  48.     for(i;i<z;i++)
  49.     {if(tekst[i]==wzor[j])
  50.         {for(k;k<y;k++)
  51.             {if(tekst[i+k]!=wzor[k]) break;
  52.                 }if(k==y)
  53.                 return i;
  54.         }
  55.     }
  56. return -1;
  57. }
  58.  
  59. int* sprawdz_w(char *tekst, char *wzor, int *ilosc)
  60. {
  61.     int i=0;
  62.     int j=0;
  63.     int k=0;
  64.     int y=dlugosc(wzor);
  65.     int z=dlugosc(tekst);
  66.     int *tab=NULL;
  67.     tab=NULL;
  68.     for(i=0;i<z;i++)
  69.     {   for(j=0;j<y;j++)
  70.         {if(tekst[i+j]!=wzor[j]) break;
  71.         } if(j==y)
  72.             {tab=(int*)realloc(tab,(k+1)*sizeof(int));
  73.             *(tab+k)=i;
  74.             k++;
  75.             }
  76.     }
  77.     *ilosc=k;
  78.     //printf("\n\n\n Talica: ");
  79.         //for(i=0;i<k;i++);
  80.         //{printf("\n %d   -   %d",i,*(tab+i));
  81.         //}
  82.         return tab;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement