Upis na fakultet – rešenje
Objašnjenje rešenja
Najpre se unose četiri realna broja koji predstavljaju broj bodova koje su osvojila četiri kandidata. Zatim se računa prosečan broj bodova, odnosno aritmetička sredina njihovih rezultata.
Prosek se dobija tako što se saberu bodovi sva četiri kandidata, a dobijeni zbir podeli sa 4:
prosek = (bodovi kandidata 1 + bodovi kandidata 2 + bodovi kandidata 3 + bodovi kandidata 4) / 4
Nakon računanja proseka, za svakog kandidata posebno proveravamo da li je osvojio najmanje toliko bodova koliko iznosi prosek.
Uslov kandidat >= prosek je ispunjen i kada kandidat ima tačno onoliko bodova koliko iznosi prosek.
Ako je uslov tačan, ispisujemo da kandidat ispunjava uslove za upis; u suprotnom ispisujemo da ih ne ispunjava.
C program
#include <stdio.h>
int main(void)
{
double k1, k2, k3, k4; // Bodovi koje su osvojila četiri kandidata
double p; // Prosečan broj bodova
printf("Unesi broj bodova za 4 kandidata redom:\n");
scanf("%lf %lf %lf %lf", &k1, &k2, &k3, &k4);
// Racunanje aritmeticke sredine bodova
p = (k1 + k2 + k3 + k4) / 4.0;
printf("Prosek bodova je: %.2f\n", p);
// Provera za prvog kandidata
if (k1 >= p)
printf("Kandidat 1 ispunjava uslove za upis.\n");
else
printf("Kandidat 1 ne ispunjava uslove za upis.\n");
// Provera za drugog kandidata
if (k2 >= p)
printf("Kandidat 2 ispunjava uslove za upis.\n");
else
printf("Kandidat 2 ne ispunjava uslove za upis.\n");
// Provera za treceg kandidata
if (k3 >= p)
printf("Kandidat 3 ispunjava uslove za upis.\n");
else
printf("Kandidat 3 ne ispunjava uslove za upis.\n");
// Provera za cetvrtog kandidata
if (k4 >= p)
printf("Kandidat 4 ispunjava uslove za upis.\n");
else
printf("Kandidat 4 ne ispunjava uslove za upis.\n");
return 0;
}
Zašto koristimo četiri odvojene if-else naredbe?
U ovom zadatku koristimo četiri nezavisne if-else naredbe – po jednu za svakog kandidata.
Svaka od njih proverava svoj uslov, bez obzira na rezultat prethodne provere. Zbog toga program može da ispiše
da više kandidata ispunjava uslove za upis.
Kada bismo umesto toga koristili jedan lanac oblika if-else if-else if-else, čim bi jedan uslov bio tačan,
izvršila bi se odgovarajuća grana, a preostale provere u tom lancu bile bi preskočene. To nije pogodno kada svakog
kandidata treba proveriti nezavisno od ostalih.
Važno je razlikovati ova dva slučaja: više odvojenih naredbi if omogućava da se izvrši više provera,
dok se u jednom lancu if-else if izvršava najviše jedna od ponuđenih grana.
Primer izvršavanja
Na primer, ako unesemo bodove 80 70 90 60, prosek je:
(80 + 70 + 90 + 60) / 4 = 75
Program bi zatim prikazao:
Prosek bodova je: 75.00
Kandidat 1 ispunjava uslove za upis.
Kandidat 2 ne ispunjava uslove za upis.
Kandidat 3 ispunjava uslove za upis.
Kandidat 4 ne ispunjava uslove za upis.
Prvi i treći kandidat imaju najmanje 75 bodova, dok drugi i četvrti imaju manje od proseka. Primer pokazuje i zašto svaku proveru treba izvršiti zasebno.
