Professional Documents
Culture Documents
Zadatak 1 (5)
Jedan zapis datoteke organizirane po načelu raspršenog adresiranja sadrži matični broj
studenta (int), ime i prezime (50+1 znak), godinu studija (int) te trenutni prosjek ocjena
(float). Prazni se zapis prepoznaje po matičnom broju jednakom nula (0). Veličina bloka na
disku je 2048 B. Očekuje se najviše 100000 zapisa, a tablica je dimenzionirana za 35% veći
kapacitet. Prilikom upisa primjenjuje se metoda cikličkog preljeva. Ključ zapisa je matični
broj, a pretvorba ključa u adresu se obavlja već pripremljenom funkcijom
Ključ zapisa je šifra artikla, a transformacija ključa u adresu obavlja se zadanom funkcijom:
Napisati funkciju koja će pronaći zapis sa zadanim matičnim brojem, a potom izbrisati sve
zapise iz pretinca u kojem je zapis pronađen.
Zadatak 2 (5)
Za tip podatka Red definirane su funkcije (nije ih potrebno pisati) za inicijalizaciju reda,
dodavanje elementa u red te za skidanje elementa iz reda. Prototipovi navedenih funkcija su:
Funkcije dodaj i skini vraćaju 1 ako je operacija dodavanja ili skidanja uspjela, a 0 inače.
Elementi reda su podatci tipa int. Tip Red definiran je sljedećim programskim odsječkom:
typedef struct at {
int element;
struct at *sljed;
} atom;
typedef struct {
atom *ulaz;
atom *izlaz;
} Red;
Napišite funkciju koja će iz zadanog reda u novi red izdvojiti sve elemente koji su manji od
prosjeka elemenata u redu. U ulaznom redu trebaju ostati elementi koji nisu izdvojeni.
Funkcija pozivatelju vraća taj novi red, a prototip je:
Na stog realiziran poljem spremaju se podaci cjelobrojnog tipa (int). Već su napisane funkcije
za skidanje sa stoga i stavljanje na stog. Napisati dodatnu funkciju koja će u stogu ostaviti
samo prvi element. Ta funkcija stogu smije pristupati samo preko funkcija za rad sa stogom
(ne smije direktno pristupati elementima polja). Prototipi funkcija za stavljanje i skidanje
elemenata sa stoga su:
typedef struct{
int polje[MAXSTOG];
int vrh;
}Stog;
Zadatak 4 (5)
Zadana je jednostruko povezana lista čiji zapis sadrži šifru artikla (long), naziv artikla
(50+1 znak) i količinu na skladištu (int). Potrebno je napisati funkciju koja će svim
elementima liste količinu umanjiti za umanjenje iz argumenta. Prototip je:
Zadatak 5 (5)
Zadano je binarno stablo čiji čvor sadrži ime studenta (20+1 znak), prezime studenta (20+1
znak) i maticni broj (int). Napisati rekurzivnu funkciju koja izračunava broj zapisa u stablu
kojima prezime počinje sa slovom "B". Prototip funkcije je :
zapis pret[C];
for (int i = 0; i < M; i++)
{
fseek(f, i*BLOK, SEEK_SET);
fread(pret, sizeof(pret), 1, f);
for(int j=0; j<C; j++)
if (pret[j].indeks == matbr) {
fseek(f, BLOK*i, SEEK_SET);
fwrite(pom, sizeof(pret), 1, f);
}
}
return 1;
}
Zadatak 2.
Red *IzdvojiManje(Red *red){
Red pom; Red *novi;
int br=0,el; double suma=0;
novi = (Red*)malloc(sizeof(Red));
init_red(&pom);init_red(novi);
while(SkiniIzReda(&el, red))
{
suma+=el;
br++;
DodajURed(el, &pom);
}
suma=suma/br;
while (SkiniIzReda(&el,&pom))
{
if(el<suma) DodajURed(el,novi);
else DodajURed(el,red);
}
return novi;
}