Advertisement
Guest User

Untitled

a guest
Mar 17th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6.  
  7. //l - lewy index tablicy, p - prawy index tablicy
  8. int szukaj(int l, int p, long int szukana, int *tab)
  9. {
  10.      if(l>p)
  11.        return -1;
  12.  
  13.      int sr = (l+p)/2;
  14.  
  15.      if(szukana == tab[sr])
  16.         return sr;
  17.  
  18.     if(szukana < tab[sr])
  19.         return szukaj(l,sr-1,szukana,tab); //przeszukujemy lewą część tablicy
  20.     else
  21.         return szukaj(sr+1,p,szukana,tab); //przeszukujemy prawą część tablicy
  22. }
  23.  
  24.  
  25. int main()
  26. {
  27.     int i;
  28.     long int n,szukana;
  29.  
  30.     printf("Podaj ile liczb chcesz wylosowac do tablicy z zakresu <0,100>: ");
  31.     scanf("%ld",&n); //podajemy ilość elementów do wczytania n < 1000000
  32.  
  33.     int *tab;
  34.     tab = (int *)malloc(n * sizeof(int));
  35.     srand(time(NULL));
  36.     for(i=0;i<n;i++)
  37.     {
  38.        tab[i]= rand()%101;//wczytanie elementów tablicy
  39.        printf("%d\n",tab[i]);
  40.     }
  41.  
  42.  
  43.     printf("Podaj liczbe do wyszukania: ");
  44.     scanf("%ld",&szukana);
  45.  
  46.     int pozycja = szukaj(0,n-1,szukana,tab);
  47.  
  48.     if(pozycja==-1)
  49.         printf("Liczba %ld nie wystepuje w zbiorze\n",szukana);
  50.     else
  51.         printf("Liczba %ld wystepuje w zbiorze w komorce o nr %d\n",szukana,pozycja);
  52.  
  53.     system("pause");
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement