///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// http://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za rasporedjivanje studenata po salama za polaganje
//           ispita. Na pocetku programa treba ucitati broj sala, broj
//           studenata i broj mesta u svakoj od sala. Sale treba popunjavati
//           redom, pocev od onih sa najvecim brojem mesta. Na kraju treba
//           ispisati redne brojeve onih sala, koje ce se koristiti za
//           polaganje ispita.
///////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>

typedef struct _sala
{
int brSale, mesta;
} sala;

main()
{
sala *salaUkupno;
// s – broj sala, st – broj studenata
int s, st, i, j;

  // unos broja sala i broja studenata
printf(“Unesite redom broj sala i broj studenata:!nl!”);
scanf(“%d%d”, &s, &st);

  // alokacija memorije
salaUkupno = malloc((s+1)*sizeof(sala));

  // provera da li je alokacija uspela
if(salaUkupno == NULL)
{
printf(“Greska u alokaciji memorije.!nl!”);
return -1;
}

  for(i=0; i<s; i++)
{
salaUkupno[i].brSale = i+1;

    // unosenje broja mesta u salama
printf(“Unesite broj mesta u sali %d:!nl!”, i+1);
scanf(“%d”, &salaUkupno[i].mesta);
}

  // sortiranje po broju mesta u salama
for(i=0; i<s-1; i++)
{
for(j=i+1; j<s; j++)
{
if(salaUkupno[i].mesta < salaUkupno[j].mesta)
{
salaUkupno[s] = salaUkupno[i];
salaUkupno[i] = salaUkupno[j];
salaUkupno[j] = salaUkupno[s];
}
}
}

  printf(“Za polaganje ispita koristice se sledece sale:!nl!”);
printf(“%d!nl!”, salaUkupno[0].brSale); // pretpostavka je da ce bar jedan student polagati

  // ispis rezultata
for(i=1; i<s; i++)
{
st -= salaUkupno[i-1].mesta;

    if(st>0)
printf(“%d!nl!”, salaUkupno[i].brSale);
else
break;
}

  free(salaUkupno); // oslobadjanje alocirane memorije
return 0;
}