Advertisement
Kocyk

Untitled

Jun 19th, 2019
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.78 KB | None | 0 0
  1. void qsort (int *tab, short l, short n)
  2. {
  3.     if (n <= l) return;
  4.     int i = l-1;
  5.     int j = n+1;
  6.     int s = tab[(n+l)/2];
  7.     int x=0;
  8.     while(i <= j)
  9.     {
  10.         while(s > tab[++i]);
  11.         while(s < tab[--j]);
  12.         if (i <= j) swap(tab[i], tab[j]);
  13.     }
  14.     if(j > l) qsort(tab, l, j);
  15.     if(i < n) qsort(tab, i, n);
  16. }
  17.  
  18.  
  19. int flagapolska(int *tab, short n)
  20. {
  21.     int p=0, k=n-1;
  22.     while(p<k)
  23.     {
  24.         while(p<n-1 && tab[p]%2==0) p++;
  25.         while(k>=0 && tab[k]%2==1) k--;
  26.         if(p<k)
  27.         {
  28.             swap(tab[p],tab[k]);
  29.         }
  30.     }
  31.     return k;
  32. }
  33.  
  34. int naiwny(int n, int m, string tekst, string wzorzec, int *tab)
  35. {
  36.     int x=-1, j=0;
  37.     for(int i = 0; i < n-1; i++)
  38.     {
  39.         if (wzorzec == tekst.substr(i,m))
  40.         {
  41.             tab[j]=i;
  42.             j++;
  43.         }
  44.     }
  45.     return j;
  46. }
  47. int KMP (int n, int m, int *ind, string tekst, string wzorzec)
  48. {
  49.     int *tab;
  50.     tab = new int[m];
  51.     tab[0]=0;
  52.     tab[1]=0;
  53.     int t=0;
  54.     int x=0;
  55.     for(int i=2; i<=m; i++)
  56.     {
  57.         while(t>0 and wzorzec[t]!=wzorzec[i-1]) t=tab[t];
  58.         if(wzorzec[t]==wzorzec[i-1])t++;
  59.         tab[i]=t;
  60.     }
  61.     int i=1;
  62.     int j=0;
  63.     while(i<=n-m+1)
  64.     {
  65.         while(wzorzec[j]==tekst[i+j-1] and j<m) j++;
  66.         if(j==m)
  67.         {
  68.             ind[x]=i-1;
  69.             x++;
  70.             //x=i;
  71.             j=m;
  72.         }
  73.         i=i+max(1,j-tab[j]);
  74.         j=tab[j];
  75.  
  76.     }
  77. return x;
  78. }
  79.  
  80. bool pierwsza(int n)
  81. {
  82.     if(n<2)
  83.         return false;
  84.  
  85.     for(int i=2;i*i<=n;i++)
  86.         if(n%i==0)
  87.             return false;
  88.     return true;
  89. }
  90. int hasze (string tekst)
  91. {
  92.     int n=tekst.length();
  93.     int pd=n, lp;
  94.     int hasz=0;
  95.     cout << "Podaj liczbe pierwsza\n";
  96.     do
  97.     {
  98.        cin >> lp;
  99.        if(pierwsza(lp)==false)cout << "Podaj liczbe pierwsza\n";
  100.     }
  101.     while(pierwsza(lp)==false);
  102.     for(int i = 0; i<n; i++)
  103.        for(int j = 0; j<i; j++)
  104.         {
  105.             if(tekst[i]==tekst[j])
  106.             {
  107.                 pd--;
  108.                 break;
  109.             }
  110.         }
  111.     for(int i = 0; i<n; i++)
  112.         {
  113.             hasz +=((int)tekst[i]-97)*(int)pow((double)pd,(double)n-i-1) % lp;
  114.         }
  115.     cout << hasz << endl;
  116. }
  117.  
  118. int liniowe(int n, int x, int tab[])
  119. {
  120.     int a = -1;
  121.     for(int i=0;i<n;i++){
  122.         if(tab[i]==x) {
  123.             a=i;
  124.             i=n;
  125.         }
  126.     }
  127.     return a;
  128. }
  129. int Bisekcja(int szukana, int tab[], int poczatek, int koniec)
  130. {
  131.     int srodek;
  132.     while (poczatek<koniec)
  133.     {
  134.         srodek=(poczatek + koniec)/2;
  135.         if (szukana<=tab[srodek])
  136.             koniec=srodek;
  137.         else
  138.             poczatek=srodek+1;
  139.     }
  140.     if (szukana == tab[poczatek])
  141.         return poczatek;
  142.     else return -1;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement