/* http://slike.milf-hosting.info/images/1393553736.jpg */ #include #include #include #define MAXIME 80 #define MAXPREZIME 80 #define MAXRADNIKA 50 #define RADNISATI 160 typedef struct radnik { char ime[MAXIME]; char prezime[MAXPREZIME]; int brojRadnihSati; double plata; } Radnik; int unosRadnika(Radnik * licnost, int i) { printf("Unesite podatke za ranika pod rednim brojem %d:\n", i); printf("\tUnesite ime radnika: "); gets_s(licnost->ime); printf("\tUnesite prezime radnika: "); gets_s(licnost->prezime); printf("\tUnesite broj radnih sati koje je radnik odradio: "); scanf_s("%d", &licnost->brojRadnihSati); printf("\tUnesite platu radnika: "); scanf_s("%lf", &licnost->plata); return (licnost->brojRadnihSati > RADNISATI + 19 || licnost->brojRadnihSati < RADNISATI); } void stampaRadnika(Radnik * licnost, int i) { if(licnost->brojRadnihSati > RADNISATI + 19) { double povisica = licnost->brojRadnihSati - RADNISATI >= 30 ? (licnost->plata * 20) / 100 : (licnost->plata * 10) / 100; printf("Povisicu treba da dobije radnik pod rednim brojem %d:\n", i); printf("\tIme i prezime: %s %s\n\tBrojradnih sati: %d\n", licnost->ime, licnost->prezime, licnost->brojRadnihSati); printf("\tPlata: %.2lf\n", licnost->plata); printf("\tPovisica: %.2lf\n\n", povisica); printf("\tPlata sa povisicom: %.2lf\n\n", licnost->plata + povisica); } else if(licnost->brojRadnihSati < RADNISATI) { double smanjenje = licnost->plata/RADNISATI*(RADNISATI - licnost->brojRadnihSati); printf("Smanjenje plate treba da dobije radnik pod rednim brojem %d:\n", i); printf("\tIme i prezime: %s %s\n\tBrojradnih sati: %d\n", licnost->ime, licnost->prezime, licnost->brojRadnihSati); printf("\tPlata: %.2lf\n", licnost->plata); printf("\tSmanjenje: %.2lf\n\n", smanjenje); printf("\tPlata sa smanjenjem: %.2lf\n\n", licnost->plata - smanjenje); } } int _tmain(int argc, _TCHAR* argv[]) { int n = 0, i, radniciKriterijum = 0; Radnik licnost[MAXRADNIKA]; printf("\t\tPROGRAM ZA OBRACUN PLATA RADNIKA\n\n"); printf("Unesite broj radnika: "); scanf_s("%d", &n); for(i = 0; i < n; i++) { while(getchar() != '\n'); radniciKriterijum += unosRadnika(&licnost[i], i + 1); } if(radniciKriterijum != 0) { printf("\tLista radnika koji treba da dobiju povisicu ili smanjenje plate:\n\n"); for(i = 0; i < n; i++) stampaRadnika(&licnost[i], i + 1); } else { printf("Nijedan radnik nije zadovoljio kriterijume!\n"); } system("PAUSE"); return 0; }