You are on page 1of 3

/*Program za evidenciju radnog vremena zaposlenih.

Dolazak i odlazak sa
posla se predstavlja unosom sati, minuta i sekundi. Na osnovu unetih vremena
tabelarno obraèunati provedeno dnevno vreme na poslu u satima, minutima i
sekundama. Uzeti u obzir moguænost dvokratnog radnog vremena. */

#include <stdio.h>

#define MAX 20 // maksimalan broj slova za ime, odnosno za prezime svakog zaposlenog
#define BROJ 10 // maksimalan broj zaposlenih

typedef struct _vreme


{
char ime[MAX];
char prezime[MAX];
int sat[4];
int min[4];
int sec[4];
int sat1, min1, sec1; // ove tri promenljive sluze za smestanje ukupnog dnevnog radnog vremena za
svakog pojedinca
} vreme;

// funkcija koja izracunava ukupno vreme provedeno izmedju dolaska na posao


// i odlaska sa posla izrazeno u sekundama
int racunaj(int a, int b, int c, int a1, int b1, int c1)
{
int time=0;

time += (a1*3600 + b1*60 + c1 - a*3600 - b*60 - c);

return time;
}

main()
{
vreme r_vreme[BROJ];
char answer;
int resenje, i=0, j;

while(i!=BROJ)
{
resenje = 0;
// unos imena i prezimena zaposlenog
printf("Unesite ime i prezime zaposlenog.\nUnos u formi: ime(ENTER)prezime(ENTER)\n");
scanf("%s", &r_vreme[i].ime);
scanf("%s", &r_vreme[i].prezime);

// unos vremena dolaska na posao


printf("Unesite tacno vreme dolaska zaposlenog na posao.\nUnos vremena u formatu:
sati(ENTER)minuta(ENTER)sekundi(ENTER)\n");
scanf("%d%d%d", &r_vreme[i].sat[0], &r_vreme[i].min[0], &r_vreme[i].sec[0]);

// unos vremena odlaska sa posla


printf("Unesite tacno vreme odlaska zaposlenog sa posla.\nUnos vremena u formatu:
sati(ENTER)minuta(ENTER)sekundi(ENTER)\n");
scanf("%d%d%d", &r_vreme[i].sat[1], &r_vreme[i].min[1], &r_vreme[i].sec[1]);

printf("Da li se zaposleni vracao na posao istog dana? (Y/N)\n");


scanf("%s", &answer);

// izracunavanje rezultata preko poziva funkcije racunaj()


resenje += racunaj(r_vreme[i].sat[0], r_vreme[i].min[0], r_vreme[i].sec[0], r_vreme[i].sat[1],
r_vreme[i].min[1], r_vreme[i].sec[1]);

if(answer=='Y' || answer=='y')
{
// unos vremena ponovnog dolaska na posao
printf("Unesite tacno vreme ponovnog dolaska zaposlenog na posao.\nUnos vremena u formatu:
sati(ENTER)minuta(ENTER)sekundi(ENTER)\n");
scanf("%d%d%d", &r_vreme[i].sat[2], &r_vreme[i].min[2], &r_vreme[i].sec[2]);

// unos vremena odlaska sa posla


printf("Unesite tacno vreme odlaska zaposlenog sa posla.\nUnos vremena u formatu:
sati(ENTER)minuta(ENTER)sekundi(ENTER)\n");
scanf("%d%d%d", &r_vreme[i].sat[3], &r_vreme[i].min[3], &r_vreme[i].sec[3]);

// izracunavanje rezultata preko poziva funkcije racunaj()


resenje += racunaj(r_vreme[i].sat[2], r_vreme[i].min[2], r_vreme[i].sec[2], r_vreme[i].sat[3],
r_vreme[i].min[3], r_vreme[i].sec[3]);
}

// izracunavanje ukupnog radnog vremena u satima, minutima i sekundama


r_vreme[i].sat1 = resenje/3600;
r_vreme[i].min1 = (resenje%3600)/60;
r_vreme[i].sec1 = (resenje%3600)%60;

// poruka korisniku
printf("Da li zelite da unesete podatke za sledeceg zaposlenog? (Y/N)\n");
scanf("%s", &answer);

if(answer=='N' || answer=='n')
break; // uslov za izlazak iz petlje

i++;
}

// stampanje rezultata
printf("\n\n ime prezime sati minuta sekundi\n\n");

for(j=0; j<i+1; j++)


{
if(j==BROJ)break;
printf("%15s %15s %7dh %7dm %7ds\n\n", r_vreme[j].ime, r_vreme[j].prezime, r_vreme[j].sat1,
r_vreme[j].min1, r_vreme[j].sec1);
}

You might also like