///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://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;
}