Advertisement
dzieciol

karp robin

Apr 6th, 2016
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.34 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* run this program using the console pauser or add your own getch, system("pause") or input loop */
  5. int *tw_tab (int r){
  6.     int i;
  7.     int *wsk;
  8.     wsk=malloc(r*sizeof(int));
  9.     for (i=0;i<r;i++){
  10.         printf("t[%d]=",i+1);
  11.         scanf("%d",&wsk[i]);
  12.  
  13.     }
  14. return wsk;
  15. }
  16.  
  17. int karprobin (int *tekst, int t, int *szukana, int s){
  18.    
  19.     int i,j;
  20.     int r;
  21.     int h;
  22.     int sz;
  23.     sz=szukana[s];
  24.    
  25.     int m;
  26.     m=1;
  27.     for (i=s-1;i>=0;i--){
  28.         m=m*10;
  29.         sz=sz+szukana[i]*m;
  30.        
  31.     }
  32.     int k;
  33.    
  34.     k=1;
  35.     r=0;
  36.    
  37.     for (i=0;i<=t-s;i++){
  38.         if (i==0){
  39.             h=0;
  40.             for (j=s;j>=0;j--){
  41.                 h=h+tekst[j]*k;
  42.                 k=k*10;
  43.             }
  44.            
  45.             if(h==sz)r++;
  46.        
  47.        
  48.        
  49.         }else{
  50.         h=h-(tekst[i-1]*(m));
  51.        
  52.         h=(h*10)+tekst[i+s];
  53.    
  54.         if (h==sz)r++;
  55.     }
  56.     }
  57.    
  58. return r;  
  59. }
  60. int main(int argc, char *argv[]) {
  61.      int n,m,temp;
  62.     printf("jaką długość ma przeszykiwany tekst ");
  63.     scanf("%d",&n);
  64.     printf ("wprowadź tekst \n");
  65.     int *prz_wsk;
  66.     prz_wsk=tw_tab(n);
  67.     printf ("wprowadź długość poszukiwanego wzorca  ");
  68.     scanf("%d",&m);
  69.     printf ("wprowadź wzorzec \n");
  70.     int *tab_wsk;
  71.     tab_wsk=tw_tab(m);
  72.     int i;
  73.     if(m>n)printf("error");else
  74.    
  75.     printf("szukany wzór występuje w tekście  %d razy ",karprobin(prz_wsk,n-1,tab_wsk,m-1));
  76.    
  77.    
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement