////////////////////////////////////////////////////////////////////////////
// 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!
");

}