Prvo učitaj podatke iz te datoteke sort.dat. Nije do kraja jasno kakav je format tog fajla. Jesu li podaci u CSV formatu (podaci razdvojeni zarezom), pa ima 14 polja u 15 redova?
Kad učitaš podatke moraš da proveriš ispravnost podataka. Osim očiglednih provera (glasovi publike u rasponu od 0 do 250000, glasovi žirija u rasponu od 0 do 12, a zabranjene vrednosti 11 i 9), postoje i druge provere. Moraš da proveriš i da li su podaci sortirani po imenu izvođača. Za svakog člana žirija moraš da proveriš da li ima tačno jednu vrednost od dozvoljenih bodova.
Ovo poslednje radiš tako što za svaki novi učitani slog proveravaš da se vrednost bodova nekog člana žirija nije do tada pojavila. I moraš da brojiš koliko puta je neki član žirija dao pozitivne bodove, jer broj pozitivnih bodova mora da bude 10 (1-8, 10, i 12). Ovaj brojač pozitivnih bodova je niz, jer moraš da posmatraš sve članove žirija istovremeno. Na kraju učitavanja svi članovi niza moraju da imaju vrednost 10.
Za bodovanje je najkomplikovanije glasanje publike. Publika je kao trinaesti član žirija, a ti moraš da pretvoriš niz glasova s vrednostima 0-250000 u niz bodova. Ovaj deo je lakše uraditi nego objasniti. Treba da sortiraš glasove, ali zajedno sa glasovima ide i indeks izvođača. Kad dobiješ sortirani niz glasova onda prvom izvođaču daš 12 bodova, drugom 10, itd. Ove početne bodove možeš da upišeš u pomoćni niz, int pocetni_bodovi[] = {12, 10, 8, 7, 6, 5, 4, 3, 2, 1}, tako da onda glasanje publike izgleda ovako:
Code:
int bodovi_pevaca[15] = {0};
// int sortirani_glasovi[15], sortirani_pevaci[15] -- ovo sortiraš opadajuće po prvom nizu,
// samo što svaki put kad menjaš mesta u prvom nizu moraš i u drugom
for (int i = 0; i < 15; ++i)
bodovi_pevaca[sortirani_pevaci[i]] = pocetni_bodovi[i];
Možda primećuješ da niz sortirani_glasovi ne učestvuje u računici. Taj niz je samo bio potreban da dobijemo niz sortirani_pevaci.
Na ovaj niz bodovi_pevaca treba sad dodati bodove svih članova žirija, ali to je prosto sabiranje. Na kraju treba ponovo sortirati pevace, ali sad ne po glasovima, nego po boovima, i pobedio je onaj ko je prvi na listi.
[Ovu poruku je menjao Mihajlo Cvetanović dana 05.01.2010. u 16:40 GMT+1]