Advertisement
elektryk798

AiSD_lab3_final

Apr 20th, 2017
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.93 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int szukanie_liniowe_1(int tab[],int n,int x);
  5. int *szukanie_liniowe_2(int tablica[],int n,int x,int *ilosc);
  6. void sortuj(int tablica[],int n);
  7. int szukanie_binarne(int tab[],int n,int x);
  8.  
  9. int main()
  10. {
  11.     int *szukane_indeksy=NULL,i=0,*tablica=NULL,dlugosc=0,szukany_element,ilosc_znalezionych_indeksow=0;
  12.     printf("Podaj ilosc elementow tablicy: ");
  13.     scanf("%d",&dlugosc);
  14.     tablica=(int*)realloc(tablica,dlugosc*sizeof(int));
  15.     for(i=0;i<dlugosc;i++)
  16.         scanf("%d",tablica+i);
  17.     printf("Tablica: ");
  18.     for(i=0;i<dlugosc;i++)
  19.         printf("%d ",tablica[i]);
  20.     printf("\nPodaj szukana wartosc: ");
  21.     scanf("%d",&szukany_element);
  22.     printf("Szukanie liniowe 1: %d\n",szukanie_liniowe_1(tablica,dlugosc,szukany_element));
  23.     szukane_indeksy=szukanie_liniowe_2(tablica,dlugosc,szukany_element,&ilosc_znalezionych_indeksow);
  24.     printf("indeksy ze znaleziona wartoscia: ");
  25.     for(i=0;i<ilosc_znalezionych_indeksow;i++)
  26.         printf("%d ",szukane_indeksy[i]);
  27.     sortuj(tablica,dlugosc);
  28.     printf("\nPosortowana tablica: ");
  29.     for(i=0;i<dlugosc;i++)
  30.         printf("%d ",tablica[i]);
  31.     printf("\nSzukanie binarne, indeks: %d \n",szukaniebinarne(tablica,dlugosc,szukany_element));
  32.  
  33. }
  34.  
  35. int szukanie_liniowe_1(int tab[],int n,int x)
  36. {
  37.     int i=0;
  38.     for(i=0;i<n;i++)
  39.     {
  40.         if(tab[i]==x)
  41.             return i;
  42.     }
  43.     return -1;
  44.  
  45. }
  46. int *szukanie_liniowe_2(int tablica[],int n,int x,int *ilosc)
  47. {
  48.     int i=0,*tab=NULL,ile=0;
  49.     for(i=0;i<n;i++)
  50.     {
  51.         if(tablica[i]==x)
  52.         {
  53.             tab=(int*)realloc(tab,(ile+1)*sizeof(int));
  54.             tab[ile]=i;
  55.             ile++;
  56.         }
  57.     }
  58.     *ilosc=ile;
  59.     return tab;
  60. }
  61.  
  62. void sortuj(int tablica[],int n)
  63. {
  64.     int i=0,j=0,tmp=0;
  65.     for(i=0;i<n-1;i++)
  66.         for(j=0;j<n-1;j++)
  67.         if(tablica[j]>tablica[j+1])
  68.         {
  69.             tmp=tablica[j];
  70.             tablica[j]=tablica[j+1];
  71.             tablica[j+1]=tmp;
  72.         }
  73. }
  74. int szukaniebinarne(int *tab,int n,int x)
  75. {
  76.     int left=0,mid,right=n;
  77.     for(;;)
  78.     {
  79.         if(left>right)
  80.             return -1;
  81.         else
  82.         {
  83.             mid=(left+right)/2;
  84.             if(*(tab+mid)==x)
  85.                 return mid;
  86.             else
  87.             {
  88.                 if(*(tab+mid)<x)
  89.                     left=mid+1;
  90.                 else
  91.                     right=mid-1;
  92.             }
  93.         }
  94.     }
  95. }
  96.  
  97. /*
  98. char *slowa(char *lan,int *ilosc,int *dlugosc);
  99.  
  100. int main()
  101. {
  102.     char tablica[50],*tab=NULL;
  103.     int i=0,ilosc_slow=0,dlugosc=0;
  104.     fgets(tablica,50,stdin);
  105.     tab=slowa(tablica,&ilosc_slow,&dlugosc);
  106.     printf("Ilosc slow: %d\n",ilosc_slow);
  107.     for(i=0;i<dlugosc;i++)
  108.         printf("%c",*(tab+i));
  109. }
  110. char *slowa(char *lan,int *ilosc,int *dlugosc)
  111. {
  112.     char *tab=NULL;
  113.     int i=0,dlugosc_lan=0,ile=0;
  114.     while(*(lan+dlugosc_lan)!='\0')
  115.         dlugosc_lan++;
  116.     tab=(char*)realloc(tab,dlugosc_lan-1);
  117.     for(i=0;i<dlugosc_lan-1;i++)
  118.     {
  119.         if(*(lan+i)==' '||*(lan+i)=='\t'||*(lan+i)=='\n')
  120.         {
  121.             *(tab+i)='\n';
  122.             ile++;
  123.         }
  124.         else
  125.             *(tab+i)=*(lan+i);
  126.     }
  127.     *ilosc=ile+1;
  128.     *dlugosc=dlugosc_lan-1;
  129.     return tab;
  130. }
  131. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement