Upload
pero-kvrzica
View
220
Download
0
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;
}