/*4. februar 2013 Kursevi na fakultetu se karakterisu sifrom (niska od najvise 5 karaktera), nazivom (50 karaktera) i brojem kredita. Definisati strukturu Predmet. Definisati funkciju koja sa standardnog ulaza ucitava kurs, a potom u glavnom programu testirati rad funkcije unosom niza kurseva. Definisati funkciju koja sortira niz kurseva na osnovu sifre. Definisati funkciju koja za datu sifru kursa binarnom pretragom pronalazi broj kredita. */ #include #include #define BROJ_PREDMETA 8 typedef struct predmet{ char sifra[6]; char naziv[51]; int kredit; }Predmet; void ucitaj_predmet(Predmet* pS){ scanf("%s", pS->sifra); scanf("%s", pS->naziv); scanf("%d", &pS->kredit); } void pisi_predmet(Predmet* pS){ printf("Sifra: %s\n", pS->sifra); printf("Naziv: %s\n", pS->naziv); printf("Kredit: %d\n", pS->kredit); printf("\n\n"); } void sortiraj_po_sifri(Predmet s[], int n){ int i,j; Predmet tmp; for(i=0;i0){ tmp=s[i]; s[i]=s[j]; s[j]=tmp; } } int bin_pret(Predmet a[], int n, char x[]) { int gornja, donja, sred, test ; /* gornja granica intervala pretrage, donja granica intervala pretrage, sredina intervala, mera razlicitosti dve niske*/ donja=0; gornja=n-1; while (donja <= gornja) /* traganje se obavlja dok je duzina intervala pretrage >= 0*/ { sred=(donja+gornja)/2; /* polovljenje intervala za pretragu */ test=strcmp(x,a[sred].sifra); if (test==0) return sred; /* nadjeno x u nizu a */ else if (test < 0) gornja=sred-1; /*leva polovina tekuceg intervala je kandidat za pretragu */ else donja=sred+1; /* desna polovina tekuceg intervala je kandidat za novu pretragu */ } return -1; /* nije nadjeno x u nizu a */ } int main(void){ Predmet p[BROJ_PREDMETA]; int i; char sifra[6]; for(i=0;i