Advertisement
filip710

PROG2 LV11 Z2

Jul 6th, 2016
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.17 KB | None | 0 0
  1. //MAIN
  2. /* Napisati C program koji s tipkovnice učitava 5 cijelih brojeva u rasponu od 1 do
  3. 1000. Zatim se učitava 500 cijelih brojeva iz datoteke in1.txt. Odraditi pretragu
  4. svakog od unesenih brojeva s tipkovnice u čitanim podacima koristeći obje metode
  5. pretraživanja: sekvencijalno i binarno. Na kraju je potrebno izračunati i ispisati
  6. srednji broj pretraživanja za svaku metodu pojedinačno (pri izračunu srednjeg broja
  7. pretraživanja u račun uzeti samo ona pretraživanja koja su bila pozitivna). Ispis na
  8. ekran prilagoditi formatu koji je definiran unutar testnih slučajeva. */
  9.  
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. #include"nekiheader.h"
  13.  
  14. int main()
  15. {
  16.     int i, num[5], arr[N], *arrP, izb, brkS[5], brkB[5], cs=0, cb=0;
  17.     float zbS = 0, zbB = 0, avgS, avgB;
  18.     FILE *dat;
  19.     dat=fopen("in1.txt", "r");
  20.  
  21.     arrP = (int*)malloc(N*sizeof(int));
  22.     arrP = &arr[0];
  23.  
  24.     for(i=0; i<N; i++) {
  25.         fscanf(dat, "%d", &arr[i]);
  26.     }
  27.    
  28.     fclose(dat);
  29.  
  30.     for(i=0; i<5; i++) {
  31.         scanf("%d", &num[i]);
  32.     }
  33.  
  34.     for(i=0; i<5; i++) {
  35.         zbS += seq(arrP, num[i]);
  36.         brkS[i] = seq(arrP, num[i]);
  37.         if(brkS[i]!=0) cs++;
  38.     }
  39.  
  40.     sort(arrP);
  41.  
  42.     for(i=0; i<5; i++) {
  43.         zbB += bin(arrP, num[i]);
  44.         brkB[i] = bin(arrP, num[i]);
  45.         if(brkB[i]!=0) cb++;
  46.     }
  47.  
  48.     avgS = zbS / cs;
  49.     if (cs==0) avgS = 0;
  50.     avgB = zbB / cb;
  51.     if (cb==0) avgB = 0;
  52.  
  53.     printf("REZULTATI:\n");
  54.     printf("Sekvencijalno:\n");
  55.     for(i=0; i<5; i++) {
  56.         if(brkS[i]==0) printf("%d. broj %d nije pronadjen.\n", i+1, num[i]);
  57.         else printf("%d. broj %d je pronadjen u %d koraka.\n", i+1, num[i], brkS[i]);
  58.     }
  59.  
  60.     printf("\nBinarno:\n");
  61.     for(i=0; i<5; i++) {
  62.         if (brkB[i]!=0) printf("%d. broj %d je pronadjen u %d koraka.\n", i+1, num[i], brkB[i]);
  63.         else printf("%d. broj %d nije pronadjen.\n", i+1, num[i]);
  64.     }
  65.  
  66.     printf("Srednji broj koraka za sekvencijalno pretrazivanje je: %.2f\n", avgS);
  67.     printf("Srednji broj koraka za binarno pretrazivanje je: %.2f", avgB);
  68.  
  69.     return 0;
  70. }
  71.  
  72. //HEADER
  73. #ifndef NEKIHEADER_H
  74. #define NEKIHEADER_H
  75.  
  76. #define N 500
  77. void sort(int *p);
  78. int seq(int arr[], int x);
  79. int bin(int arr[], int x);
  80.  
  81. #endif
  82.  
  83. //FUNKCIJE
  84. #include"nekiheader.h"
  85.  
  86. void sort(int *p) {
  87.     int i, j, temp;
  88.    
  89.     for(i=0;i<N;i++){
  90.      
  91.       for(j=i+1;j<N;j++){
  92.            
  93.            if(p[i]>p[j]){
  94.                temp=p[i];
  95.                p[i]=p[j];
  96.                p[j]=temp;
  97.            }
  98.       }
  99.   }
  100.  
  101. }
  102.  
  103. int seq(int arr[], int x) {
  104.     int i, found = 0, c = 0;
  105.    
  106.     for(i=0; i<N; i++) {
  107.         c++;
  108.         if(arr[i]==x) {
  109.             found = 1;
  110.             return c;
  111.         }
  112.     }
  113.    
  114.     if(found==0) return 0;
  115. }
  116.  
  117. int bin(int arr[], int x) {
  118.     int i, sred, prvi = 0, zadnji = N-1, c=0;
  119.     sred = (prvi + zadnji) / 2;
  120.    
  121.     while (prvi <= zadnji) {
  122.         c++;
  123.       if (arr[sred] < x)
  124.          prvi = sred + 1;    
  125.       else if (arr[sred] == x) {
  126.          return c;
  127.       }
  128.       else {
  129.          zadnji = sred - 1;
  130.       }
  131.       sred = (prvi + zadnji)/2;
  132.    }
  133.    if (prvi > zadnji) return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement