You are on page 1of 4

RED =={ FIFO }== QUEUE;

Cikličko polje;

int dodajUred(int element, int red[], int *ulaz, int izlaz, int velicinaReda)
{
if( ((*ulaz+1) % velicinaReda) == izlaz)
return 0;

*ulaz += 1;
*ulaz %= velicinaReda;
red[*ulaz]=element;
return 1;
}

int skiniIzReda(int *element, int red[], int ulaz, int *izlaz,int velicinaReda)
{
if( ulaz == *izlaz )
return 0;

*izlaz + =1;
*izlaz %= velicinaReda;
*element=red[*izlaz];
return 1;
}

float popunjenost(int ulaz, int izlaz, int velicinaReda)


{
int brElement;

if( ulaz >= izlaz )


brElement = ulaz - izlaz;
else
brElement = velicinaReda - ( izlaz - ulaz );

return (float) brElement / velicinaReda;


}

int brojSlobodnih(int ulaz, int izlaz, int velicinaReda)


{
int brElement;

if( ulaz >= izlaz )


brElement = ulaz - izlaz;
else
brElement = velicinaReda - ( izlaz - ulaz );

return velReda - brElement;


}
Red je realiziran kao polje, koje može primiti najviše n zapisa. Svaki zapis sadrži sljedeće podatke:
šifru procesa (long) i opis procesa (40 + 1 znak). Potrebno je napisati funkciju koja dodaje
zapis u red. Funkcija treba vratiti 1, ako je zapis dodan u red, a inače 0.
Prototip funkcije je:

int dodajURed (proces element, proces red[], int n, int izlaz, int *ulaz);

struct s
{
long sifra;
char opis[41];
};
typedef struct s proces;
.
.
.

int dodajURed (proces element, proces red[], int n, int izlaz, int *ulaz)
{

if( ((*ulaz+1) % n) == izlaz)


return 0;

(*ulaz) += 1;
(*ulaz) %= n;
red[*ulaz] = element;
return 1;
}
Red je realiziran cikličkim jednodimenzionalnim poljem zapisa, gdje svaki zapis sadrži šifru
proizvoda (long), naziv proizvoda (50+1 znak) i cijenu (float).
Potrebno je napisati funkciju koja dodaje zapis u red, te vraća 1 ukoliko je zapis uspješno
dodan, a 0 inače.

struct s
{
long sifra;
char naziv[50 + 1];
float cijena;
};
typedef struct s proizvod;
.
.
.

int dodajURed(proizvod element, proizvod red[], int n, int izlaz, int *ulaz)
{

if( (*ulaz+1) % n == izlaz)


return 0;

(*ulaz) += 1;
(*ulaz) %= n;
red[*ulaz] = element;
return 1;
};

//****************************************************************

Napisat funkciju koja briše sve elemente iz reda i u njega upisuje elemente. Prototip je:

int obrisiIdodaj(int red[], int *ulaz, int *izlaz, int element,


int velicinaReda)
{
int tmpElement;

while(skini (&tmpElement, red, *ulaz, izlaz, velicinaReda)!=0)


dodaj(tmpElement, red, ulaz, *izlaz, velicinaReda);

return 1;
}
//***************************************************************;
Napisat funkciju koja će kao rezultat vratiti omjer slobodnog i zauzetog mjesta u redu.
(Funkcija treba vratiti realan broj).

int omjer(int ulaz, int izlaz, int velicinaReda)


{
int brElement;

if( ulaz >= izlaz ) brElement = ulaz - izlaz;

else
brElement = velicinaReda - (izlaz - ulaz);

return (float) ( velicinaReda – brElement ) / brElement;


}

You might also like