Univerzitet u Beogradu Matematički fakultet Seminarski rad iz Verovatnoće i statistike Test rešavanje zadataka Tačkaste ocene parametra raspodele student: Martin Hofer profesor: Vesna Jevremović broj indeksa: 5/2008 adresa aplikacije: http://www.alas.matf.bg.ac.rs/~mi08005/test/index.html
Sadržaj Teorijski deo... 3 Tačkaste ocene parametra raspodele... 3 Nepristrasnost, postojanost i efikasnost... 3 Osobine uzoračke sredine i uzoračke disperzije za obeležje sa normalnom raspodelom... 5 Metoda maksimalne verodostojnosti... 5 Metoda momenta... 7 Uputstvo... 8 Kako program radi?... 9 Kôd programa... 10 2
Teorijski deo Tačkaste ocene parametra raspodele Na osnovu uzorka treba da se odredi kakva je raspodela obeležja na populaciji. Ako se zna tip rapodele obeležja, odrediti njene parametre, ako se ne zna raspodela obeležja, odrediti je. Neka je dat X 1, X 2,, X n prost slučajan uzorak obima n za posmatrano obeležje X. Statistika Y = f X 1, X 2,, X n je slučajna promenljiva koja implicitno zavisi od parametara u raspodeli obeležja X. Ako se sa Y ocenjuje parametar θ, tada se statistika Y naziva ocena parametra θ i označava sa θ. Nepoznati parametri raspodele posmatranog obeležja se ocenjuju na osnovu uzorka, kao i realizovane vrednosti pogodno odabranih statistika. Taj postupak se naziva ocenjivanje parametara. Pošto je realizovana vrednost statistike neki realni broj, tj. neka tačka na realnoj pravoj, ovakve ocene parametara se nazivaju tačkaste ocene. Nepristrasnost, postojanost i efikasnost Definicija 1. Nepristrasna ocena Neka je X 1, X 2,, X n prost slučajan uzorak obima n za obeležje X i neka je θ nepoznati parametar u raspodeli obeležja X. Statistika Y = f X 1, X 2,, X n je nepristrasna ocena parametra θ, ako je: E Y = θ. Ako statistika Y = f X 1, X 2,, X n kojom se ocenjuje neki parametar θ postaje nepristrasna u slučaju kada ovim uzorka teži beskonačnosti, tj. ako jee(y) θ, n, tada je statistika Y asimptotski nepristrasna ocena posmatranog parametra θ. Ocena θparametra θ koja nema osobinu nepristrasnosti se naziva pristrasna ocena. Veličina njene pristrasnosti se meri razlikom E θ θ. Za realizovani uzorak (x 1, x 2,, x n ) se računa realizovana vrednost statistike Y, tj. računa se y = f X 1, X 2,, X n. S obzirom da je Y slučajna veličina, ta realizovana vrednost će u izvesnoj meri odstupati od E Y. Poželjno je da se to odstupanje smanjuje kako se povećava obim uzorka. Stoga se, u kategoriji nepristrasnih ocena, izdvajaju one koje imaju tzv. postojanost(stabilnost). 3
Definicija 2. Postojana ocena Neka je dat prost slučajni uzorak X 1, X 2,, X n obima n za obeležje X i neka je θ nepoznati parametar u raspodeli obeležja X. Statistika Y = f X 1, X 2,, X n je postojana ocena parametra θ ako Y P θ, n. Pri utvrďivanju postojanosti ocena često se koristi tvrďenje: Teorema 1. Ako je statistika Y = f X 1, X 2,, X n nepristrasna ocena za napoznati parametar θ i ako D(Y) 0, n, tada je Y postojana ocena za θ. Dokaz Potrebno je dokazati da za statistiku Y = θ važi θ P θ, n. Na osnovu Čebiševljeve nejednakosti se dobija: P θ θ ε 2 E θ θ ε 2 = E θ E θ ε 2 2 = D θ ε 2 0, n. Uzoračka sredina i uzoračka disperzija su najčešće korišćene statistike za ocenu matematičkog očekivanja, odnosno disperzije obeležja, što opravdavaju njihova svojstva. Naime, bez obzira na raspodelu obeležja, uzoračka sredina je nepristrasna ocena za matematičko očekivanje obeležja, a postojana je ako je disperzija obeležja konačna. TakoĎe, raspodela uzoračke sredine u opštem slučaju konvergira ka normalnoj raspodeli, a u slučaju normalne raspodele obeležja i raspodela uzoračke sredine je normalna raspodela. Uzoračka disperzija pri poznatom matematičkom očekivanju obeležja i popravljena uzoračka disperzija pri nepoznatom očekivanju obeležja su nepristrasne ocene disperzije, a ukoliko je četvrti moment raspodele konačan, onda su navedene statistike i postojane ocene disperzije. Ako se koristi više različitih statistika za ocenu jednog parametra, onda se te statistike mogu porediti svojim disperzijama. Definicija 3. Efikasnija ocena Neka je dat prost slučajni uzorak prost slučajni uzorak X 1, X 2,, X n obima n za obeležje X i neka je θ nepoznati parametar u raspodeli obeležja X. Neka su dve nepristrasne ocene tog parametra date statistikama Y = f X 1, X 2,, X n i Z = g X 1, X 2,, X n. Ako je D(Y) D(Z) statistika Y je efikasnija ocena parametra θ od statistike Z. 4
Osobine uzoračke sredine i uzoračke disperzije za obeležje sa normalnom raspodelom Neka obeležje X iman m, σ 2 raspodelu i neka je dat prost slučajni uzorak X 1, X 2,, X n obima n za posmatrano obeležje. 1. Statistika X n = 1 n dok statistika X n m σ n i=1 X i je nepristrasna i postojana ocena za m i njena raspodela je N m, σ 2, n n ima N(0,1) raspodelu. 2. Statistika ns n 2 = 1 n (X σ 2 σ 2 i=1 i m) 2 2 2 ima χ n raspodelu, pa je E S n = σ 2 2, a D S n = 2σ 4 3. Statistika = ns n 2 = 1 n (X σ 2 σ 2 i=1 i X n ) 2 2 ima χ n 1 raspodelu, pa je E S n 2 n 1 σ 2 =, n a D Sn 2 = 2 n 1 σ 4 n 2. 4. Statistike X n i Sn 2 _n su nezavisne slučajne veličine. 5. Uzoračka sredina X n je najefikasnija u klasi linearnih nepristrasnih ocena matematičkogočekivanja koje su oblika n n j =1. j =1 α j X j, α j n. Metoda maksimalne verodostojnosti Neka je θ nepoznati jednodimenzioni parametar u raspodeli obeležja X i neka je Θ skup svih mogućih vrednosti parametra θ, tzv. parametarski prostor. Neka je X 1, X 2,, X n prost slučajni uzorak za neprekidno obeležje X i neka je f x, θ gustina raspodele X. Funkcija L X; θ = f X 1 ; θ f X 2 ; θ f X n ; θ se naziva funkcija verodostojnosti. Za ocenu parametra θ se uzima statistika za koju se dostiže supremum funkcije verodostojnosti. U nekim slučajevima to će ujedno biti maksimalna vrednost funkcije verodostojnosti. Navedena metoda dobijanja ocena se naziva metoda maksimalne verodostojnosti (MMV), a ocene dobijene tom metodom su ocene maksimalne verodostojnosti (MV). Ako je funkcija verodostojnosti diferencijabilna, najpre se odreďuju vrednosti parametara koje su rešenja jednačine. ili jednačine dln L X;θ dθ = 0. dl X; θ dθ MeĎu dobijenim rešenjima jednačine mogu se nalaziti vrednosti za koje funkcija L (ili lnl) postiže svoj supremum, odnosno maksimum ako je drugi izvod funkcije L (ili lnl) negativan u tim tačkama. 5 = 0
Ako je posmatrano obeležje diskretnog tipa, tada je funkcija verodostojnosti jednaka proizvodu verovatnoća postizanja pojedinih vrednosti iz uzorka L X; θ = p X 1 ; θ p X 2 ; θ p X n ; θ gde je p t; θ = P X = t. Zatim se oderďuje maksimalna vrednost funkcije L (ili lnl) kao u prethodnom slučaju. Funkcija verodostojnosti se može posmatrati i kao statistika, kad je funkcija uzorka X 1, X 2,, X n, a može se posmatrati i kao funkcija čiji su argumenti nepoznati parametri, dok elementi uzorka imaju ulogu konstanti. U slučaju višedimenzionalnog parametra θ = θ 1, θ 2,, θ s i diferencijabilne funkcije verodostojnosti, najpre je potrebno odrediti rešenja sistema jednačina L X; θ θ j = 0, j = 1,2,, s ili sistema jednačina lnl X; θ θ j = 0, j = 1,2,, s Zatim se odreďuje, npr. pomoću totalnog diferencijala drugog reda, za koja rešenja sistema se dobija maksimalna vrednost funkcije verodostojnosti (ili njenog logaritma). Ocene koje se dobijaju postupkom MMV imaju, često, dobre osobine, kao što su neprekidnost i/ili postojanost, a takoďe su često efikanije od ocena dobijenih nekom drugom metodom. Pod odreďenim uslovima raspodele ocena dobijenih MMV meto imaju asiptotski normalnu raspodelu. Jedna od osobina ocena dobijenih MMV je i da su one simetrične funkcije uzorka. To znači da na vrednost ocene utiču vrednosti podataka, a ne njihov redosled. TakoĎe, ocene po MMV imaju osobinu invarijantnosti u smislu sledećeg tvrďenja: Neka je g(x) neprekidna funkcija koja ima neprekidnu inverznu funkciju i neka je Y statistika kojom se po MMV ocenjuje parametar θ. Tada je g(y) statistika kojom se po MMV ocenjuje g(θ). Statistika kojom se po MMV ocenjuje neki parametar ne mroa da bude jedinstvena. Jedan takav slučaj je pri ocenjivanju parametra θ uniformne raspodele U θ 0.5, θ + 0.5, kada je svaka statistika V za koju važimax 1 j n X j 0.5 V min 1 j n X j + 0.5, ocena po MMV za θ. 6
Metoda momenta Osim MMV postoje i druge opšte metode. Jedna od njih je metoda momenta, koja je, kao i MMV primenljiva i na obeležja sa diskretnimm i na obeležja sa neprekidnim raspodelama. Ova metoda se zasniva na činjenici da su, pod izvesnim uslovima, uzorački momenti postojane i asimptotski nepristrasne ocene odgovarajućih teorijskih momenata. Drugi razlog je u činjenici da, u nekim slučajevima, momenti jednoznačno odreďuju raspodelu. Ako u raspodeli obeležja X ima r, r 1, nepoznatih parametara, onda se statistike kojima se ti parametri ocenjuju mogu dobiti rešavanjem sistema od r jednačina E X j = 1 n n j =1 X j, j = 1,, r Ovi sistemi jednačina su uglavnom nelinearni, tako da se ne može dati opšti postupak za njihovo rešavanje. U nekim slučajevima se rešenja odreďuju samo približno, nekom metodom numeričke matematike. Metoda momenata se ne može primeniti ako momenti raspodele obeležja ne postoje, kao što je slučaj, npr., sa Košijevom raspodelom čija je gustina g x = 1 2, x R. Statistike koje se dobijaju po metodi momenata su često manje efikasne ocene od statistika koje se dobijaju po MMV (za isti parametar). Treba naglasiti da je prilikom primene metode momenata moguće koristiti i centralne momente, ili kombinovati obične i centralne momente. Osim toga, važno je da se formira sistem od r jednačina sa r nepoznatih parametara, ali to ne moraju redom biti momenti pd prvog do r-tog. Za neke raspodele i neke parametre u tim raspodelama poklapaju se ocene dobijene metodom momenata ili MMV. Npr. u slučaju normalne raspodele, sa nepoznatim očekivanjem i nepoznatom disperzijom,po metodi momenata rešava se sistem E X = X n, E X 2 = 1 n n j =1 X j 2 π 1+x, j = 1,, r i dobijaju ocene: uzoračka sredina E X i uzoračka disperzija Sn 2, za D X. Iste ocene se dobijaju i po MMV. U nekim slučajevima se ocene po metodi momenata i MMV razlikuju. Npr. ako treba oceniti nepoznati parametar θ kada je raspodela obeležja X uniformna na intervalu, 0, θ, onda se, na osnovu prostog slučajnog uzorka obima n, po metodi momenata dobija ocean 2X n, a po MMV se dobija ocena max 1 j n X j. 7
Uputstvo U bazi se nalaze 20 zadataka za rešavanje. Test se sastoji od 10 slučajno izabranih zadataka, 5 lakših, 4 srednje težine i jednog težeg zadatka. Uz svaki zadatak imate tri ponuďena rešenja, od kojih je samo jedno tačno. Ukoliko tačno odgovorite dobijate odreďeni broj poena za taj zadatak. Ako netačno odgovorite oduzima vam se 10% poena tog zadatka. Svakako uvek možete odgovoriti sa "Ne znam", kao neutralan odgovor i dobiti 0 poena za taj zadatak. Ukupan broj poena koji možete ostvariti je 40. Zatim se taj broj množi sa faktorom 2.5 i maksimalan broj je 100. Konačan broj poena se zaokružuje na gornji deo. Da biste položili, potrebno je uzeti najmanje 51 poen od 100. Nakon polaganja testa, možete saznati vaše netačne odgovore ukoliko postoje. Broj poena Ocena <51 Pali ste! 51-60 6 61-70 7 71-80 8 81-90 9 91-100 10 8
Kako program radi? 1. faza Pri startovanju programa na slučajan način se iz baze biraju 10 od 20 zadataka. S obzirom da se test sastoji od 5 lakših zadataka, 4 malo teža i jednog najtežeg, na taj način treba izabrati zadatke. Naime, prvih 10 zadataka u bazi su lakši i prva funkcija pod nazivom prikazizadataklaksi() izvršava upit nad bazom, tačnije te zadatke rasporedi random naredbom rand() i izabere prva 5 zadataka naredbom limit 5. Funkcija prikazizadataksrednji() bira zadatke srednje težine. Oni u bazi imaju redni broj od 11 do 17, tako da se upit izvršava nad tim zadacima. TakoĎe se rasporeďuju random narednom rand() i biraju se 4 zadatka narednom limit 4. Slično radi funkcija prikazizadataksrednji() samo što je redni broj zadataka od 17 do 20 i bira se jedan zadatak. Sledeće je kako da za svaki izabrani zadatak prikazati ponudjene odgovore i da oni budu u različitom rasporedu u odnosu na prethodno prikazivanje, odnosno kako stalno mešati te zadatke. Za svaki zadatak u bazi postoje 3 ponudjena odgovora od kojih je jedan tačan. Postoji i četvrti ponuďeni odgovor Ne znam koji je neutralan i podrazumevan odgovor. S obzirom da postoje 3 ponuďena odgovora, onda postoje 3! = 6 načina da se oni predstave. Tako da, koristimo promenljivu koja random uzima vrednost od 1 do 6 i uz svaki izabrani zadatak bira se jedna od tih 6 kombinacija. Npr. ako ta promenljiva ima vrednost 1 kombinacija predstavljanja zadatka je odgovor1(u bazi odg1),odgovor2(u bazi odg2),odgovor3(u bazi odg3), ako je promenljiva uzela vrednost 2, onda je kombinacija odg2,odg1,odg3 itd. Svaki odgovor smeštamo u poseban niz radi njegovog daljnjeg korišćenja. 2. faza Pošto smo rešili zadatke, moramo proveriti da li je odgovor tačan, netačan ili podrazumevano Ne znam. Pravimo niz u kome smeštamo 10 slučajno izabrana zadataka. Pošto zadaci imaju težinu, odnosno lakši ili prva 5 zadataka nose 3.5 poena, proveravamo posebno za njih da li je odgovot tačan ili netačan. Ako jeste tačan na neku sumu dodajemo taj broj poena, ako nije oduzimamo 10% za taj broj poena. Dalje ispitujemo zadatke srednje težine za koji se dobija 4 poena ukoliko je odgovor tačan, odosno oduzima se 0.4 ukoliko je odgovor netačan. Isto važi za poslednji zadatak koji je ujedno i najteži i nosi 6.5 poena ako se tačno odgovori, odnosno oduzima se 0.65 ukoliko se netačno odgovori. U svakom slučaju ako je odgovor Ne znam dodaje se 0 poena. Dobijenu sumu brojeva množimo sa 2.5 i dobijeni broj zaokružujemo na gornji deo( npr. 50.1 => 51, kao i 50.8 =>51 ). Proveramo uslove kolika je konačna suma od 100 poena. Prikazuje se broj poena od 40, broj poena od 100, ocena ukoliko je položio i broj tačnih odgovora. 3.faza Kako je kandidat video svoju ocenu, ne bi bilo loše da prikažemo i rešenja za te zadatke. Pošto svaki put kada smo izabrali zadatak, njemu smo preko html taga dodelili neki id kako bi znali za koji zadatak treba prikazati rešenje. Pravimo niz u kome smeštamo id svakog izabranog zadatka. MySQL upitom nad bazom, za svaki id prikazujemo rešenje. Kako bi kadidat znao šta je tačno, šta netačno ili gde je dao odgovor Ne znam na kraju svakog rešenja pojavljuje se sličica koja označava odgovor. Nakon pogledanih rešenja, može se ponovo pokrenuti test. 9
Kôd programa PHP Skript koji bira zadatke iz baze i raspoređuje odgovore za svaki izabrani zadatak <?php include('db.inc'); db_connect(); //Funckija koja prikazuje 5 laksih zadataka function prikazizadataklaksi() //upit koji vršimo nad bazom $query = "SELECT * FROM zadaci where rbr<=10 order by rand() limit 5"; $result = mysql_query($query) or die(mysql_error()); $i=0; $j=rand(1,6);$k=0; echo "<ul>"; while($row = mysql_fetch_array($result)) $odgovor[$i] = $row['rbr']; if($j==1) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row['zadatak']"; else if($j==2) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==3) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; 10
else if($j==4) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==5) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==6) echo "(3.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='hidden' name='id$k' value='$odgovor[$k]' />"; $k++; echo "</ul>"; 11
//Funckija koja prikazuje 4 srednjih zadataka function prikazizadataksrednji() $query = "SELECT * FROM zadaci where (rbr>=11 and rbr<=17) order by rand() limit 4"; $result = mysql_query($query) or die(mysql_error()); $i=5; $j=rand(1,6);$k=5; echo "<ul>"; while($row = mysql_fetch_array($result)) $odgovor[$i] = $row['rbr']; if($j==1) echo "(4 poena) <b>$i. zadatak</b><br /> $row['zadatak']"; else if($j==2) echo "(4 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==3) echo "(4 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; 12
else if($j==4) echo "(4 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==5) echo "(4 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; else if($j==6) echo "(4 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='hidden' name='id$k' value='$odgovor[$k]' />"; $k++; echo "</ul>"; 13
//Funckija koja prikazuje 1 tezak zadatak function prikazizadataktezi() $query = "SELECT * FROM zadaci where rbr>=18 order by rand() limit 1"; $result = mysql_query($query) or die(mysql_error()); $i=9; $j=rand(1,6); echo "<ul>"; while($row = mysql_fetch_array($result)) $odgovor[9] = $row['rbr']; if($j==1) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row['zadatak']"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' else if($j==2) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' else if($j==3) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' 14
else if($j==4) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' else if($j==5) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' else if($j==6) echo "(6.5 poena) <b>$i. zadatak</b><br /> $row["zadatak"]"; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg2']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg3']; echo "<input type='radio' id='id9' name='odg".$i."' ".$row['odg1']; echo "<input type='radio' id='id9' name='odg".$i."' value='neznam' echo "<input type='hidden' name='id9' value='$odgovor[9]' />"; echo "</ul>"; 15
//Poziv funkcija za prikazivanje zadataka prikazizadataklaksi(); prikazizadataksrednji(); prikazizadataktezi(); db_disconnect()?> PHP Script koji prikazuje rezultate, odnosno broj ostvarenih poena na testu <?php $s=0;$suma; $pitanje=array($_post['odg1'], $_POST['odg2'], $_POST['odg3'], $_POST['odg4'], $_POST['odg5'], $_POST['odg6'], $_POST['odg7'], $_POST['odg8'], $_POST['odg9'], $_POST['odg10']); $odgovor=array($_post['id0'], $_POST['id1'], $_POST['id2'], $_POST['id3'], $_POST['id4'], $_POST['id5'], $_POST['id6'], $_POST['id7'], $_POST['id8'], $_POST['id9']); $br=0; for($i=0;$i<10;$i++) //Prvih 5 zadataka za koje proveravamo da li su tačni ili netačni if($pitanje[$i] == "tacno" && $i<5) $s+=3.5; $br++; else if($pitanje[$i] == "netacno" && $i<5) $s-=0.35; //Sledeća 4 zadataka za koje proveravamo da li su tačni ili netačni if($pitanje[$i] == "tacno" && ($i>=5 && $i<9)) $s+=4; $br++; else if($pitanje[$i] == "netacno" && ($i>=5 && $i<9)) $s-=0.4; //Poslednji zadatak za koji proveravamo da li je tačan ili netačan if($pitanje[$i] == "tacno" && $i==9) $s+=6.5; $br++; else if($pitanje[$i] == "netacno" && $i==9) $s-=0.65; /* U svakom slučaju ako je odgovor ne znam, dodaje se 0, što i nije neophodno, nego koristimo to radi lakšeg shvatanja prethodnih */ if($pitanje[$i] == "neznam") $s+=0; echo "<h1 style='text-align:center'>osvojili ste ukupno: </h1><br />"; 16
//Zaokružujemo sumu na gornji deo pozivom f-je ceil $suma = ceil($s*2.5); //Prikaz poena u tabeli echo "<table id='rez'>"; echo "<tr><td></td><th>od 40</th><th>od 100</th></tr>"; if($suma<=0) echo "<tr><th>poeni</th><td style='color:red'>0</td><td style='color:red'>0</td></tr>"; else if($suma>0 && $suma<51) echo "<tr><th>poeni</th><td style='color:red'>$s</td><td style='color:red'>".$suma."</td></tr>"; else echo "<tr><th>poeni</th><td style='color:green'>$s</td><td style='color:green'>".$suma."</td></tr>"; echo "</table><br >"; //Vršimo provere kolika je suma if($br==0 && suma<51) echo "<h2 style='text-align:center;font-family:tahoma;'>ni na jedno pitanje niste tačno odgovorili.<br /> Rešenja zadataka možete videti ovde:</h2>"; if($br==1 && $suma<51) echo "<h2 style='text-align:center;font-family:tahoma;'>nažalost, niste položili. <br /> Rešili ste tačno jedan zadatak.<br /> Rešenja zadataka možete videti ovde:</h2>";?> if($br>1 && $suma<51) echo "<h2 style='text-align:center;font-family:tahoma;'>nažalost, niste položili. <br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja zadataka možete videti ovde:</h2>"; else if($suma>=51 && $suma<61) echo "<h2 style='text-align:center;font-family:tahoma;'><br />Položili ste test sa minimalnom ocenom, 6. <br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja zadataka možete videti ovde:</h2>"; else if($suma>=61 && $suma<71) echo "<h2 style='text-align:center;font-family:tahoma;'><br />Vaša ocena je 7.<br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja zadataka možete videti ovde:</h2>"; else if($suma>=71 && $suma<81) echo "<h2 style='text-align:center;font-family:tahoma;'><br />Vaša ocena je 8. <br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja zadataka možete videti ovde:</h2>"; else if($suma>=81 && $suma<91) echo "<h2 style='text-align:center;font-family:tahoma;'><br />Odlično!<br />Vaša ocena je 9. <br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja zadataka možete videti ovde:</h2>"; else if($suma>=91) echo "<h2 style='text-align:center;font-family:tahoma;'><br />Svaka čast!!!<br /> Položili ste sa test sa maksimalnom ocenom, 10. <br /> Rešili ste tačno ".$br." zadataka.<br /> Rešenja možete videti ovde:</h2>"; echo "<form method='post' action='resenja.php'>"; for($k=0;$k<10;$k++) $j=$k+1; echo "<input type='hidden' name='id$k' value='".$odgovor[$k]."' />"; echo "<input type='hidden' name='odg$j' value='".$pitanje[$k]."' />"; 17
PHP Script koji prikazuje rešenja izabranih zadataka <?php include('db.inc'); db_connect(); $pitanje=array($_post['odg1'], $_POST['odg2'], $_POST['odg3'], $_POST['odg4'], $_POST['odg5'], $_POST['odg6'], $_POST['odg7'], $_POST['odg8'], $_POST['odg9'], $_POST['odg10']); $odgovor=array($_post['id0'], $_POST['id1'], $_POST['id2'], $_POST['id3'], $_POST['id4'], $_POST['id5'], $_POST['id6'], $_POST['id7'], $_POST['id8'], $_POST['id9']); $query="select * FROM zadaci WHERE rbr="; $j=1; for($i=0;$i<10;$i++) //Za svaki izabrani zadatak prikazujemo njegovo rešenje $query= $query."$odgovor[$i]"; $result = mysql_query($query) or die(mysql_error()); while($row = mysql_fetch_array($result)) if($pitanje[$i] == "tacno") echo "<b>$j.</b> "."$row['resenje'] <img src='tick.jpeg' alt='tick' />"; else if($pitanje[$i] == "netacno") echo "<b>$j.</b> "."$row['resenje'] <img src='x.jpeg' alt='x' />"; else if($pitanje[$i] == "neznam") echo "<b>$j.</b> "."$row['resenje'] <img src='nezna.png' alt='x' />"; $j++; $query = "SELECT * FROM zadaci WHERE rbr=";?> db_disconnect(); 18