Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //MAIN
- /* Napisati C program koji s tipkovnice učitava 5 cijelih brojeva u rasponu od 1 do
- 1000. Zatim se učitava 500 cijelih brojeva iz datoteke in1.txt. Odraditi pretragu
- svakog od unesenih brojeva s tipkovnice u čitanim podacima koristeći obje metode
- pretraživanja: sekvencijalno i binarno. Na kraju je potrebno izračunati i ispisati
- srednji broj pretraživanja za svaku metodu pojedinačno (pri izračunu srednjeg broja
- pretraživanja u račun uzeti samo ona pretraživanja koja su bila pozitivna). Ispis na
- ekran prilagoditi formatu koji je definiran unutar testnih slučajeva. */
- #include<stdio.h>
- #include<stdlib.h>
- #include"nekiheader.h"
- int main()
- {
- int i, num[5], arr[N], *arrP, izb, brkS[5], brkB[5], cs=0, cb=0;
- float zbS = 0, zbB = 0, avgS, avgB;
- FILE *dat;
- dat=fopen("in1.txt", "r");
- arrP = (int*)malloc(N*sizeof(int));
- arrP = &arr[0];
- for(i=0; i<N; i++) {
- fscanf(dat, "%d", &arr[i]);
- }
- fclose(dat);
- for(i=0; i<5; i++) {
- scanf("%d", &num[i]);
- }
- for(i=0; i<5; i++) {
- zbS += seq(arrP, num[i]);
- brkS[i] = seq(arrP, num[i]);
- if(brkS[i]!=0) cs++;
- }
- sort(arrP);
- for(i=0; i<5; i++) {
- zbB += bin(arrP, num[i]);
- brkB[i] = bin(arrP, num[i]);
- if(brkB[i]!=0) cb++;
- }
- avgS = zbS / cs;
- if (cs==0) avgS = 0;
- avgB = zbB / cb;
- if (cb==0) avgB = 0;
- printf("REZULTATI:\n");
- printf("Sekvencijalno:\n");
- for(i=0; i<5; i++) {
- if(brkS[i]==0) printf("%d. broj %d nije pronadjen.\n", i+1, num[i]);
- else printf("%d. broj %d je pronadjen u %d koraka.\n", i+1, num[i], brkS[i]);
- }
- printf("\nBinarno:\n");
- for(i=0; i<5; i++) {
- if (brkB[i]!=0) printf("%d. broj %d je pronadjen u %d koraka.\n", i+1, num[i], brkB[i]);
- else printf("%d. broj %d nije pronadjen.\n", i+1, num[i]);
- }
- printf("Srednji broj koraka za sekvencijalno pretrazivanje je: %.2f\n", avgS);
- printf("Srednji broj koraka za binarno pretrazivanje je: %.2f", avgB);
- return 0;
- }
- //HEADER
- #ifndef NEKIHEADER_H
- #define NEKIHEADER_H
- #define N 500
- void sort(int *p);
- int seq(int arr[], int x);
- int bin(int arr[], int x);
- #endif
- //FUNKCIJE
- #include"nekiheader.h"
- void sort(int *p) {
- int i, j, temp;
- for(i=0;i<N;i++){
- for(j=i+1;j<N;j++){
- if(p[i]>p[j]){
- temp=p[i];
- p[i]=p[j];
- p[j]=temp;
- }
- }
- }
- }
- int seq(int arr[], int x) {
- int i, found = 0, c = 0;
- for(i=0; i<N; i++) {
- c++;
- if(arr[i]==x) {
- found = 1;
- return c;
- }
- }
- if(found==0) return 0;
- }
- int bin(int arr[], int x) {
- int i, sred, prvi = 0, zadnji = N-1, c=0;
- sred = (prvi + zadnji) / 2;
- while (prvi <= zadnji) {
- c++;
- if (arr[sred] < x)
- prvi = sred + 1;
- else if (arr[sred] == x) {
- return c;
- }
- else {
- zadnji = sred - 1;
- }
- sred = (prvi + zadnji)/2;
- }
- if (prvi > zadnji) return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement