or popravni internet

Upload: aleem-spaho

Post on 05-Apr-2018

236 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/31/2019 Or Popravni Internet

    1/8

    II a) ZADATAK

    GRUPA A:

    Napravite funkciju koja prima niz cijelih brojeva, a zatim iz niza izbacuje sve brojeve koji su manji

    od srednje vrijednosti. Primjer:

    ako je dat niz 5 1 6 8 4srednja vrijednost lanova niza je: 4.75

    Niz treba glasiti: 5 6 8Napominjemo da funkcija ne smije napraviti novi niz, nego treba modifikovati postojei. Pod

    "izbacivanje" se misli da lan treba izbaciti a ne zamijeniti nekom drugom vrijednou npr. nulom.

    int veci_od_sv(int niz[], int vel) {

    /* Velicina niza se mijenja, funkcija vraca novu velicinu niza */int i, j;float sv=0;

    /* Najprije odredjujemo srednju vrijednost */for (i=0; i

  • 7/31/2019 Or Popravni Internet

    2/8

    /* Pronalazak maksimalnog */if (niz[i]>max) max=niz[i];

    }return max;

    }

    GRUPA C:

    Napraviti funkciju koja prima niz pozitivnih realnih brojeva i modifikuje ga tako da u svakom lanuniza decimalni dio broja postaje cijeli dio broja, a cijeli dio postaje decimalni dio. Primjer:

    ako je dat niz 2.15 8.0 23.456on treba postati 15.2 0.8 456.23

    Napominjemo da funkcija ne smije napraviti novi niz, nego treba modifikovati postojei.

    void zamjena(float niz[], int vel) {int i;

    float cijeli, dec;

    for (i=0; i0) dec*=10;/* Pretvaramo cijeli dio u decimalni dio */while ((int)cijeli>0) cijeli/=10;/* i na kraju... */niz[i]=dec+cijeli;

    }}

    GRUPA D:

    Napravite funkciju koja prima niz cijelih pozitivnih brojeva, te iz niza izbacuje sve lanove ija jesuma cifara paran broj. Primjer: ako je dat niz:

    5 11 27 320 554 1

    nakon poziva funkcije on treba glasiti:5 27 320 1

    zato to su sume cifara brojeva 11 (=2) i 554 (=14) parni brojevi. Napominjemo da funkcija nesmije napraviti novi niz, nego treba modifikovati postojei. Pod "izbacivanje" se misli da lan

    treba izbaciti a ne zamijeniti nekom drugom vrijednou npr. nulom.

    int parnesume (int niz[], int vel) {/* Velicina niza se mijenja, funkcija vraca novu velicinu niza */int sumac=0, tmp, i, j;for (i=0; i0) {

    sumac+=tmp%10;tmp/=10;

    }/* Ako je suma paran broj, izbacujemo taj clan */if (sumac%2==0) {

    for (j=i+1; j

  • 7/31/2019 Or Popravni Internet

    3/8

    niz[j-1]=niz[j];vel=vel-1;i--;

    }sumac=0;

    }return vel;

    }

    II b) ZADATAK

    GRUPA A:

    Napraviti funkciju sa prototipom:

    char* satro(char* rijec)

    koja prima string koji predstavlja jednu rije i prevodi tu rije u "atrovaki" odnosno zamjenjuje

    prvi i zadnji dio stringa. Npr. ako je primljen stringSarajevo

    funkcija treba da taj string modifikuje tako da se dobije

    jevoSara

    Funkcija vraa pokaziva na poetak primljenog stringa radi lakeg lananog pozivanja.Pretpostavite da string ima paran broj slova, poto se zadatak sa neparnim brojem slova znatno

    komplikuje.

    char* satro(char* rijec) {int i=0;char *p, *q, tmp;/* Odredjivanje duzine rijeci */p=rijec;while (*p++ != '\0') i++;/* Postavljamo pokazivace na pocetak i na sredinu */p = rijec;q = rijec+i/2;while (*q != '\0') {

    /* Zamjena preko pomocne varijable */tmp=*p;*p=*q;*q=tmp;p++; q++;

    }return rijec; /* Vracamo pokazivac na pocetak */

    }

    GRUPA B:

    Napraviti funkciju sa sljedeim prototipom:

    char* najduze(char* recenica)Funkcija prima string koji predstavlja jednu reenicu i transformie ga tako da na kraju u stringu

    ostanu samo poetna slova rijei koje su due od pet slova. Primjer: ako je primljena reenica:

    "Funkcija prima string koji predstavlja jednu recenicu"potrebno je da ga transformie u:

    "Fspr"

  • 7/31/2019 Or Popravni Internet

    4/8

    poto rijei "prima", "koji" i "jednu" nisu due od pet slova. Pretpostavite da je jedna rije niz slova

    i cifara, odnosno sve to nije slovo niti cifra predstavlja kraj rijei tako da npr. string "auto-klub"sadri dvije rijei. Funkcija vraa pokaziva na poetak primljenog stringa radi lakeg lananog

    pozivanja.

    char* najduze(char* recenica) {char *p=recenica, *q=recenica;int duzina=0;char prvoslovo=' ';while (*p != '\0') {

    if (*p>='a'&&*p='A' && *p='0' && *p5) *q++=prvoslovo;prvoslovo=' '; duzina=0;

    }p++;}*q='\0'; /* kraj stringa */return recenica;

    }

    GRUPA C:

    Napraviti funkciju sa sljedeim prototipom:

    int sumiraj(char* s)Ova funkcija u datom stringu pronalazi sve brojeve i izraunava njihovu sumu. Obratite panju da

    ne treba izraunati sumu cifara nego itavih brojeva! Primjer: ako je dat string:"Na odsjeku ima 350 studenata, 15 profesora i 27 asistenata."

    Funkcija treba vratiti cijeli broj 392 to je 350+15+27.

    int sumiraj(char* s) {int broj=0, suma=0;while (*s != '\0') {

    if (*s>='0' && *s

  • 7/31/2019 Or Popravni Internet

    5/8

    Napraviti funkciju sa sljedeim prototipom:

    char* dekompresija(char* s)Funkcija prima "kompresovan" string oblika slovo-broj-slovo-broj... Primjer:

    a5c2g1d3

    Ovaj string treba "dekompresovati" tako da se svako slovo ponavlja onoliko puta koliko jenaznaeno u broju koji je dat iza slova. Primjer:

    aaaaaccgdddDakle slovo a se ponavlja 5 puta, slovo c 2 puta itd. Radi jednostavnosti zadatka pretpostavite da je

    broj ponavljanja pozitivan, cijeli, jednocifren broj. Rezultat treba upisati u isti string (dozvoljeno je

    koritenje pomonog niza pod uslovom da sve prepiete u polazni niz). Pretpostavite da je string sdovoljno velik i da je ispravno formatiran (paran broj znakova u stringu). Funkcija vraa pokaziva

    na poetak istog stringa radi lakeg lananog pozivanja.

    char* dekompresija (char* s) {char *p, *q;int broj,i;

    char pomocni[100];

    /* Pretpostavljamo da je 100 mjesta dovoljno... ako ovo ne pretpostavimomozemo izracunati velicinu stringa otprilike ovako:

    p=s;int duzina=0;while (*p != '\0') {

    duzina+= *(p+1)-'0';p += 2;

    }char pomocni[duzina];*/

    p=pomocni;q=s;

    while (*q != '\0') {broj = *(q+1)-'0';for (i=0; i

  • 7/31/2019 Or Popravni Internet

    6/8

    } liga[100];

    Ovaj niz opisuje tablicu neke fudbalske lige. Potrebno je u niz uitati podatke iz datoteke liga-

    2008.txt. Na osnovu ove tabele treba kreirati datoteku liga-sortirano.txt u kojoj se nalazi ime tima

    i broj bodova koje je ostvario tim (3*broj pobjeda + broj nerijeenih). Oblik ove datoteke je:ime tima (20 mjesta), broj bodova (4 mjesta)

    Primjer:Zeljeznicar 20

    Celik 19

    Borac 19Sarajevo 17

    Siroki Brijeg 15...

    Ova datoteka treba biti sortirana po broju bodova. Na ekranu treba ispisati imena timova koji imaju

    manje od 10 bodova.

    /* Zadaci u sve cetiri grupe su vrlo slicni i rjesavaju se na slican nacin */

    #include #include

    struct tim{char ime_tima[20];int broj_pobjeda;int broj_nerijesenih;int broj_poraza;

    } liga[100];

    int main () {

    FILE *ulaz, *izlaz;int bodovi[100];int i=0, j, k;

    if ((ulaz=fopen("liga-2008.txt","r")) == NULL) {printf("Greska pri otvaranju datoteke liga-2008.txt\n");exit(1);

    }if ((izlaz=fopen("liga-sortirano.txt","w")) == NULL) {

    printf("Greska pri otvaranju datoteke liga-sortirano.txt\n");fclose(ulaz);exit(1);

    }

    while (fscanf(ulaz, "%s %d %d %d\n", liga[i].ime_tima,liga[i].broj_pobjeda, liga[i].broj_nerijesenih, liga[i].broj_poraza)==4 &&i

  • 7/31/2019 Or Popravni Internet

    7/8

    }

    for (j=0; j

  • 7/31/2019 Or Popravni Internet

    8/8

    Mostar 17.4

    Tuzla 16.2Zenica 16.0

    Banja Luka 15.5

    Sarajevo 15.5....

    Datoteka treba biti sortirana po prosjenoj temperaturi. Pored ovoga, na ekran treba ispisati imenasvih gradova u kojima je prosjena temperatura bila izmeu 15 i 16 stepeni.

    GRUPA D:

    Dat je sljedei niz struktura:

    struct tim{

    char ime_tima[20];

    int broj_pobjeda;int broj_nerijesenih;

    int broj_poraza;} liga[100];

    Ovaj niz opisuje tablicu neke fudbalske lige. Potrebno je u niz uitati podatke iz datoteke liga.txt.

    Na osnovu ove tabele treba kreirati datoteku liga-bodovi.txt u kojoj se nalazi ime tima i broj

    bodova koje je ostvario tim (3*broj pobjeda + broj nerijeenih). Oblik ove datoteke je:ime tima (20 mjesta), broj bodova (4 mjesta)

    Primjer:Zeljeznicar 19

    Celik 20

    Borac 15Sloboda 15

    Velez 17...

    Ova datoteka treba biti sortirana po broju pobjeda. Na ekranu treba ispisati imena timova koji su

    pobijedili u veini utakmica (imaju vei broj pobjeda od zbira broja nerijeenih i broja poraza).

    Integralni:

    I parc, 2 zad. "ta e ispisati" 10 bodova

    II parc 1 zad 7 bodovaII parc 2a 6 bodova

    II parc 2b 8 bodova

    II parc 3 9 bodova