////////////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za povecanje plate radnika prema provedenom
//radnom vremenu na poslu. Mesec ima 160 radnih sati. Za prekovremeni
//rad od 20 sati mesecno povisica je 10%, za prekovremeni rad od
//30 sati je 20%.
////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<stdlib.h>
#define MAXIME 80
#define MAXPREZIME 80
#define MAXRADNIKA 50
#define RADNISATI 160
//Struktura radnika
typedef struct radnik
{
char ime[MAXIME];
char prezime[MAXPREZIME];
int brojRadnihSati;
double plata;
}Radnik;
//Funkcija za unos radnika sa svim podacima
int unosRadnika(Radnik*licnost, int i)
{
printf("Unesite podatke za ranika pod rednim brojem %d:
",i);
printf(" Unesite ime radnika: ");
gets(licnost->ime);
printf(" Unesite prezime radnika: ");
gets(licnost->prezime);
printf(" Unesite broj radnih sati koje je radnik odradio: ");
scanf("%d",&licnost->brojRadnihSati);
printf(" Unesite platu radnika: ");
scanf("%lf",&licnost->plata);
//Ispitivanje da li je vise radnih sati od norme
if (licnost->brojRadnihSati > RADNISATI+19)
return 1;
else
return 0;
}
//Funkcija za stampanje radnika koji su dobili povisicu
void stampaRadnika(Radnik*licnost, int i)
{
double povisica=0.0;
//Ispitavanje da li je doslo do prekoracenja broja radnih sati
//i obracun plate sa povisicom u zavisnosti od sati dodatnog rada
if(licnost->brojRadnihSati > RADNISATI + 19)
{
if(licnost->brojRadnihSati-RADNISATI >=30)
povisica=(licnost->plata*20)/100;
else
povisica=(licnost->plata*10)/100;
printf("Povisicu treba da dobije radik pod rednim brojem %d:
",i);
printf(" Ime i prezime: %s %s
Brojradnih sati: %d
",licnost->ime,
licnost->prezime,licnost->brojRadnihSati);
printf(" Plata: %.2lf
",licnost->plata);
printf(" Povisica: %.2lf
",povisica);
printf(" Plata sa povisicom: %.2lf
",licnost->plata+povisica);
}
}
main()
{
int n=0,i,brojRadnikaSaPovisicom=0;
Radnik licnost[MAXRADNIKA];
//Poruka korisniku o programu
printf(" PROGRAM ZA NAGRADJIVANJE RADNIKA
");
//Poruka korisniku o unosu broja radnika
printf("Unesite broj radnika: ");
scanf("%d",&n);
//For petlja koja se krece od prvog do poslednjeg radnika
for(i=0;i<n;i++)
{
while(getchar()!='
');
brojRadnikaSaPovisicom+=unosRadnika(&licnost[i],i+1);
}
//Ispitivanje da li ima radnika sa povisicom i ispis liste radnika sa povisicom
if(brojRadnikaSaPovisicom!=0)
{
printf(" Lista radnika koji treba da dobiju povisicu:
");
//For petlja koja se krece od prvog do poslednjeg radnika
for(i=0;i<n;i++)
//Poziv funkcije za ispis radnika sa povisicom
stampaRadnika(&licnost[i],i+1);
}
else
printf("Ni jedan radnik nije zadovoljio kriterijum za povisicu!
");
}