Advertisement
bartek27210

lab 3

Apr 19th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int szukanie_liniowe_1(int *tab,int n,int x);
  6. int* szukanie_liniowe_2(int *tab,int n,int x,int *ilosc);
  7. void sortowanie(int* tab,int n);
  8. int szukanie_binarne(int *tab,int n, int x);
  9.  
  10. int main()
  11. {
  12.     int *tab=NULL;
  13.     int *tab_indeksow=NULL;
  14.     int ilosc=0;
  15.     int n=0;
  16.     int x=0;
  17.     int y=0;
  18.     int z=0;
  19.     int i=0;
  20.     int j=0;
  21.  
  22.  
  23.     printf("podaj rozmiar tablicy: \n");
  24.     fflush(stdin);
  25.     scanf("%d",&n);
  26.     tab=(int*)realloc(tab,n*sizeof(int));
  27.     printf("podaj liczby\n");
  28.  
  29.     for(i=0;i<n;i++)
  30.     {
  31.         fflush(stdin);
  32.         scanf("%d",tab+i);
  33.     }
  34.  
  35.     printf("podaj szukany element\n");
  36.     scanf("%d",&x);
  37.  
  38.     y=szukanie_liniowe_1(tab,n,x);
  39.     tab_indeksow=szukanie_liniowe_2(tab,n,x,&ilosc);
  40.  
  41.     printf("\nWynik funkcji szukanie liniowe 1: %d\n",y);
  42.     printf("Wynik funkcji szukanie liniowe 2: %d\n",ilosc);
  43.     printf("\ntablica indeksow\n");
  44.  
  45.     for(j=0;j<ilosc;j++)
  46.     {
  47.         printf("%d  -   %d\n",j+1,tab_indeksow[j]);
  48.     }
  49.     printf("\n");
  50.     sortowanie(tab,n);
  51.     printf("\n");
  52.     for(i=0;i<n;i++)
  53.     {
  54.         printf("%d ",tab[i]);
  55.     }
  56.  
  57.     z=szukanie_binarne(tab,n,x);
  58.     printf("\nWynik szukania binarnego %d\n",z);
  59.  
  60.     return 0;
  61.  
  62. }
  63.  
  64. int szukanie_liniowe_1(int *tab,int n,int x)
  65. {
  66.     int i=0;
  67.     for(i;i<n;i++)
  68.     {
  69.         if(tab[i]==x)
  70.             return i;
  71.  
  72.     }
  73.     return -1;
  74. }
  75.  
  76. int* szukanie_liniowe_2(int *tab,int n,int x,int *ilosc)
  77. {
  78.     int i=0;
  79.     int *tab_indeksow=NULL;
  80.  
  81.     for(i;i<n;i++)
  82.     {
  83.         if(tab[i]==x)
  84.         {
  85.             *ilosc+=1;
  86.             tab_indeksow=(int*)realloc(tab_indeksow,(*ilosc)*sizeof(int));
  87.             tab_indeksow[*ilosc-1]=i;
  88.  
  89.         }
  90.  
  91.     }
  92.  
  93.     return tab_indeksow;
  94. }
  95.  
  96. void sortowanie(int* tab,int n)
  97. {
  98.     int j=0;
  99.     int i=0;
  100.     int tmp=0;
  101.     for(j=0;j<n;j++)
  102.     {
  103.         for(i=0;i<n;i++)
  104.         {
  105.             if(tab[i]>tab[i+1])
  106.                 {tmp=tab[i+1];
  107.                  tab[i+1]=tab[i];
  108.                  tab[i]=tmp;
  109.                 }
  110.         }
  111.  
  112.     }
  113.  
  114. }
  115.  
  116. int szukanie_binarne(int *tab,int n, int x)
  117. {
  118.     int left=0;
  119.     int right=n;
  120.     int mid=0;
  121.  
  122.     while(left<=right)
  123.     {
  124.         mid=((left+right)/2);
  125.         if(tab[mid]==x)
  126.             return mid;
  127.         else
  128.         {if(tab[mid]<x)
  129.             left=mid+1;
  130.         else right=mid-1;
  131.         }
  132.  
  133.     }
  134.     return -1;
  135.  
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement