bartek27210

lab1 algorytmy

Mar 15th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.68 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 *tekst, char *wzor,int *ilosc);
  7.  
  8. main()
  9. {
  10.     char nazwa[99];
  11.     char wzor[5];
  12.     int i=0;
  13.     int ilosc=0;
  14.     printf("Podaj dowlony lancuch\n");
  15.     gets(nazwa);
  16.     //scanf("%98[^\n]s",&nazwa);
  17.     printf("Podaj wzor\n");
  18.     gets(wzor);
  19.     //scanf("%49[^\n]s",&wzor);
  20.     i=sprawdz(nazwa,wzor);
  21.     printf("\nWynik funkcji sprawdz to: %i",i);
  22.     sprawdz_w(nazwa,wzor,&ilosc);
  23.     printf("\nIlosc to: %i", ilosc);
  24.     system("pause");
  25.     return 0;
  26. }
  27.  
  28. int dlugosc(char *lan)
  29. {
  30.     int i=0;
  31.     while(*(lan+i)!='\0')
  32.     {
  33.         i++;
  34.     }
  35.     return i;
  36. }
  37.  
  38. int sprawdz(char *tekst, char *wzor)
  39. {
  40.     int i=0;
  41.     int j=0;
  42.     int k=0;
  43.     int y=dlugosc(wzor);
  44.     for(i=0;i<dlugosc(tekst);i++)
  45.     {
  46.         if(tekst[i]==wzor[j])
  47.         {
  48.             for(k=1;k<y;k++)
  49.             {
  50.                 if(tekst[i+k]!=wzor[k]) break;
  51.             }
  52.             if (k==y)
  53.                 return i;
  54.         }
  55.     }
  56.  
  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 m=dlugosc(wzor);
  65.     int n=dlugosc(tekst);
  66.     int *tab=NULL;
  67.     tab=(int*)malloc(0*sizeof(int));
  68.     for(i=0; i<n;i++)
  69.     {
  70.         for(j=0;j<m;j++)
  71.         {
  72.             if(tekst[i+j]!=wzor[j]) break;
  73.         }
  74.         if(j==m);
  75.         {
  76.             tab=(int*)realloc(tab,(k+1)*sizeof(int));
  77.             *(tab+k)=1;
  78.             k++;
  79.         }
  80.     }
  81.     *ilosc=k;
  82.     printf("\n\n\n Tablica: ");
  83.     for(i=0;i<k;i++)
  84.     {
  85.         printf("\n%i - %i",i,*(tab+i));
  86.     }
  87.     return 0;
  88.     }
Advertisement
Add Comment
Please, Sign In to add comment