///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za izracunavanje statistike ispita.
//            Ucitavanje broja studenata i njihovih ocena na ispitu.
//            Odredjivanje broja polozenih i broja nepolozenih na ispitu.
//            Odredjivanje prosecne ocene i prosecne ocene polozenih.
//            Odredjivanje broja studenata sa natprosecnim ocenama.
///////////////////////////////////////////////////////////////////////

#include <stdio.h>

float prosek(int x[], int n);
float prosekPolozenih(int x[], int n);
int brojPolozenih (int x[], int n);
int brojNepolozenih (int x[], int n);
int brojNatprosecnih (int x[], int y[], int n, float m);

main()
{
  int student[50];
  int ocena[50];
  int i,n,brojProlaznih,brojSlabih, brojIznadProseka;
  float prosecnaOcena, prosecnaPolozenih;
  // unos broja studenata
  printf("Unesite broj studenata: ");
  scanf("%d",&n);
  //unos ocena studenata
  printf("Unesite ocene studenata od 5 do 10:
");
  for(i=0;i<n;i++)
  {
    printf("Ocena Studenta %d = ",i);
    scanf("%d",&ocena[i]);
  }
  // inicijalizacija niza
  for(i=0; i<50; i++)
  {
    student[i] = 0;
  }
  //poziv fukcije za izracunavanje broja polozenih na ispitu
  brojProlaznih = brojPolozenih(ocena,n);
  //poziv fukcije za izracunavanje broja nepolozenih na ispitu
  brojSlabih = brojNepolozenih(ocena,n);
  //poziv fukcije za izracunavanje prosecne ocene
  prosecnaOcena = prosek(ocena,n);
  //poziv fukcije za izracunavanje proseka polozenih
  prosecnaPolozenih = prosekPolozenih(ocena,n);
  //poziv fukcije za izracunavanje broja ocena iznad proseka
  brojIznadProseka = brojNatprosecnih (ocena,student,n,prosecnaOcena);
  printf("Ukupno polozenih na ispitu je %d
",brojProlaznih);
  printf("Ukupno nepolozenih na ispitu je %d
",brojSlabih);
  printf("Prosek ocena na ispitu je %.2f
",prosecnaOcena);
  printf("Prosecna ocena polozenih na ispitu je %.2f
",prosecnaPolozenih);
  printf("Rezultate iznad prosecne ocene imalo je %d studenata
",brojIznadProseka);
  for(i=0;student[i]>0;i++)
  {
    printf("Student sa rednim brojem %d dobio je ocenu %d
",student[i],ocena[student[i]]);
  }
}

//funkcija za izracunavanje prosecne ocene
float prosek(int x[], int n)
{
  int i;
  float suma =0;
  for(i=0;i<n;i++)
    suma+=x[i];
  return (suma/n);
}
//funkcija za izracunavanje proseka polozenih
float prosekPolozenih(int x[], int n)
{
  int i,j=0;
  float suma =0;
  for(i=0;i<n;i++)
    if(x[i]>5)
    {
      suma+=x[i];
      j++;
    }
  return (suma/j);
}
//funkcija za izracunavanje broja polozenih na ispitu
int brojPolozenih (int x[], int n)
{
  int i,broj=0;
  for(i=0;i<n;i++)
    if(x[i]>5)
      broj++;
  return broj;
}
//funkcija za izracunavanje broja nepolozenih na ispitu
int brojNepolozenih (int x[], int n)
{
  int i,broj=0;
  for(i=0;i<n;i++)
    if(x[i] == 5)
      broj++;
  return broj;
}
//funkcija za izracunavanje broja ocena iznad proseka
int brojNatprosecnih (int x[], int y[], int n, float m)
{
  int i;
  int j=0;
  for(i=0;i<n;i++)
  {
    if(x[i] > m)
    {
      y[j]=i;
      j++;
    }
  }
  return j;
}