|
/////////////////////////////////////////////////////////////////////// // ITS - Visoka Škola Strukovnih Studija Za Informacione Tehnologije // http://www.its.edu.rs/ // Predmet: Osnovi Programiranja - Programski jezik C // // Primer: 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); } } 
Broj mesta je ograničen! Prijavite se na vreme.
|