20_rjesenja_z150703

Embed Size (px)

DESCRIPTION

s rješenjima

Citation preview

  • Pismeni ispit iz Programiranja

    15. srpnja 2003.

    1. (40 bodova) U slijednoj formatiranoj datoteci spremljena je cjelobrojna matrica. Prvi redak

    datoteke sadri dimenzije matrice odvojene razmakom (prvo broj redaka, pa zatim broj stupaca). Svaki sljedei redak u datoteci sadri jedan redak matarice, pojedini elementi matrice odvojeni su razmakom. Pretpostaviti da je matrica u datoteci dobro zapisana. Napisati

    funkciju koja e matricu proitati iz datoteke i vratiti u gl. program. Funkcija treba alocirati dovoljno memorije za smjetaj matrice te takoer treba u gl. program vratiti i dimenzije matrice. Ako ne moe alocirati memoriju, funkcija treba vratiti NULL. Funkcija mora imati prototip:

    int *ucitaj_matricu(FILE *f, int *brred, int *brstup);

    int * ucitaj_matricu(FILE *f, int *brred, int *brstup) {

    int i, j;

    int *mat;

    rewind(f);

    fscanf(f, "%d %d", brred, brstup);

    mat = (int *)malloc((*brred)*(*brstup)*sizeof(int));

    if (mat == NULL) return NULL;

    for (i=0; i < *brred; i++) {

    for (j=0; j < *brstup; j++) {

    fscanf(f, "%d", (mat + i*(*brstup) + j));

    }

    }

    return mat;

    }

    2. (20 bodova) Prikazati heksadecimalno sadraj varijable tipa float koja sadri vrijednost -27.625. Prikazati oktalno sadraj 8-bitnog registra u kojem je zapisan cijeli broj -16.

    27.625 = 11011.101 = 1.1011101*24

    K = 127 + 4 = 131 = 10000011

    P = 0

    M = 1011101000...

    27.625 = 0100 0001 1101 1101 0000 0000 0000 0000 = 41DD000016

    16 = 00010000

    -16 = 11101111 + 00000001 = 11110000 = 3608

    3. (30 bodova) Napisati funkciju koja e vratiti niz sluajnih cijelih brojeva u zadanom intervalu. Funkciji se predaje polje preko kojeg brojeve vraa u gl. program, broj brojeva koje treba generirati te granice (zatvorenog) intervala u kojem treba generirati brojeve. Funkcija

    treba imati prototip: void generiraj(int polje[], int n, int od, int do);

    void generiraj(int polje[], int n, int _od, int _do) {

    int i;

    for (i=0; i

  • srand mora biti u gl. programu. void generiraj(int polje[], int n, int _od, int _do) {

    int i;

    for (i=0; i 0) {

    fseek(f1,rezultat.rbr*sizeof(natj), SEEK_SET);

    fread(&natjecatelj, sizeof(natj), 1, f1);

    if (rezultat.medalja == 'Z') (natjecatelj.z)++;

    if (rezultat.medalja == 'S') (natjecatelj.s)++;

    if (rezultat.medalja == 'B') (natjecatelj.b)++;

  • fseek(f1,(-1)*sizeof(natj), SEEK_CUR);

    fwrite(&natjecatelj, sizeof(natj), 1, f1);

    }

    fclose(f1);

    fclose(f2);

    }

    5. (25 bodova) Napisati funkciju moj_strcat koja e raditi isto to i standardna funkcija strcat. Zabranjeno je koristiti funkcije iz biblioteke string.h. Funkcija mora imati prototip: char *moj_strcat(char *dest, char *src);

    char *moj_strcat(char *dest, char *src) {

    char *p = dest;

    while (*dest) dest++;

    while (*src) {

    *dest = *src;

    dest++;

    src++;

    }

    *dest = *src;

    return p;

    }