Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
27re Forumaš(ica)
Pridružen/a: 06. 10. 2010. (16:07:02) Postovi: (17)16
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
Postano: 21:42 pon, 29. 4. 2013 Naslov: |
|
|
[quote="27re"]Trebamo li očekivati da će se za Trapez inicijaliziran konstruktorom Trapez(double a,double b,double c,double d) pozivati funkcije povrsina() i kutovi()?
[/quote]
Da, pozivat ce se povrsina/kutovi
[quote]
Također smijemo li pretpostaviti da će se funkcijom tipCetverokuta() služiti isključivo četverokuti? (tj. da nema mogućnosti povratne vrijednosti string("nije cetverokut") ili nešto slično)[/quote]
Da, mozete pretpostaviti da ce se member funkcije koristiti samo ako je ispravanTip() true.
u svim testnim primjerima cu prvo pokusati napraviti cetverokut pomocu nekih tocaka/stranica. Potom cu provjeriti ispravanTip. Samo za one koji budu vracali ispravanTip kao dobar cu provjeravati ostale funkcije (povrsina/opseg/tipCetverokuta/...)
[size=9][color=#999999]Added after 3 minutes:[/color][/size]
[quote="Anonymous"]Maknula sam round() iz funkcije ispravanTip() za Trapez i u testnom primjeru mi ga ne više prepoznaje , pa mi funcija tipCetverokuta() vraća "četverokut" :(
Neznam smijem li Vas to pitati, dali mi je bolje ostaviti round() ili da promjenim funkciju tako da provjerava neku drugu karakterizaciju trapeza?[/quote]
Kod trapeza postoji dosta jednostavna karakterizacija (iz definicije) ;)
27re (napisa): | Trebamo li očekivati da će se za Trapez inicijaliziran konstruktorom Trapez(double a,double b,double c,double d) pozivati funkcije povrsina() i kutovi()?
|
Da, pozivat ce se povrsina/kutovi
Citat: |
Također smijemo li pretpostaviti da će se funkcijom tipCetverokuta() služiti isključivo četverokuti? (tj. da nema mogućnosti povratne vrijednosti string("nije cetverokut") ili nešto slično) |
Da, mozete pretpostaviti da ce se member funkcije koristiti samo ako je ispravanTip() true.
u svim testnim primjerima cu prvo pokusati napraviti cetverokut pomocu nekih tocaka/stranica. Potom cu provjeriti ispravanTip. Samo za one koji budu vracali ispravanTip kao dobar cu provjeravati ostale funkcije (povrsina/opseg/tipCetverokuta/...)
Added after 3 minutes:
Anonymous (napisa): | Maknula sam round() iz funkcije ispravanTip() za Trapez i u testnom primjeru mi ga ne više prepoznaje , pa mi funcija tipCetverokuta() vraća "četverokut"
Neznam smijem li Vas to pitati, dali mi je bolje ostaviti round() ili da promjenim funkciju tako da provjerava neku drugu karakterizaciju trapeza? |
Kod trapeza postoji dosta jednostavna karakterizacija (iz definicije)
_________________ The purpose of life is to end
Prosle su godine kolokviji bili laksi, zar ne?
|
|
[Vrh] |
|
borovnica Forumaš(ica)
Pridružen/a: 20. 04. 2010. (20:51:42) Postovi: (9)16
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
Postano: 18:47 sri, 1. 5. 2013 Naslov: |
|
|
[quote="borovnica"]Možemo li pretpostaviti da će trapez biti jednakokračan?[/quote]
Ne
borovnica (napisa): | Možemo li pretpostaviti da će trapez biti jednakokračan? |
Ne
_________________ The purpose of life is to end
Prosle su godine kolokviji bili laksi, zar ne?
|
|
[Vrh] |
|
angelika Forumaš(ica)
Pridružen/a: 08. 02. 2011. (17:26:51) Postovi: (5F)16
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
Postano: 12:13 čet, 2. 5. 2013 Naslov: |
|
|
[quote="angelika"]Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true?[/quote]
ne moze
angelika (napisa): | Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true? |
ne moze
_________________ The purpose of life is to end
Prosle su godine kolokviji bili laksi, zar ne?
|
|
[Vrh] |
|
mala_narancasta Forumaš(ica)
Pridružen/a: 26. 05. 2012. (16:38:26) Postovi: (18)16
Spol:
|
|
[Vrh] |
|
eduardo Forumaš(ica)
Pridružen/a: 31. 01. 2011. (13:21:02) Postovi: (5)16
Spol:
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
Postano: 14:57 čet, 2. 5. 2013 Naslov: |
|
|
[quote="eduardo"]smijemo li includati math.h?[/quote]
koristite radje cmath (#include <cmath>)
eduardo (napisa): | smijemo li includati math.h? |
koristite radje cmath (#include <cmath>)
_________________ The purpose of life is to end
Prosle su godine kolokviji bili laksi, zar ne?
|
|
[Vrh] |
|
ffff Forumaš(ica)
Pridružen/a: 05. 02. 2013. (08:25:45) Postovi: (3)16
|
|
[Vrh] |
|
Pepper Forumaš(ica)
Pridružen/a: 08. 06. 2012. (02:57:26) Postovi: (B)16
|
|
[Vrh] |
|
matkec Forumaš(ica)
Pridružen/a: 14. 05. 2010. (16:21:29) Postovi: (8C)16
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
Postano: 11:00 pet, 3. 5. 2013 Naslov: |
|
|
[quote="ffff"]kojim redoslijedom ćete unositi duljine stranica trapeza prilikom poziva konstruktora? hoće li to biti (donja osnovica, desni krak, gornja osnovica, lijevi krak) ili neki drugi redoslijed ili moramo u konstruktoru provjeriti što je što?[/quote]
zar to ne pise u zadatku? (tako kako ste naveli)
[size=9][color=#999999]Added after 1 minutes:[/color][/size]
[quote="matkec"][quote="Pepper"]na koji nacin bi trebali definirat pi ?[/quote]
Ili koristi M_PI (iz knjižnice <cmath>), ili definiraš kao 4.0*atan(1.0) (funkcija atan je opet iz iste knjižnice).
[/quote]
bravo kolega!
[quote]
Ja imam jedno drugo pitanje: nadam se da ne trebamo provjeravati hoće li stranice biti pozitivne (ako konstruktor prima duljine stranica)?[/quote]
ne trebate
ffff (napisa): | kojim redoslijedom ćete unositi duljine stranica trapeza prilikom poziva konstruktora? hoće li to biti (donja osnovica, desni krak, gornja osnovica, lijevi krak) ili neki drugi redoslijed ili moramo u konstruktoru provjeriti što je što? |
zar to ne pise u zadatku? (tako kako ste naveli)
Added after 1 minutes:
matkec (napisa): | Pepper (napisa): | na koji nacin bi trebali definirat pi ? |
Ili koristi M_PI (iz knjižnice <cmath>), ili definiraš kao 4.0*atan(1.0) (funkcija atan je opet iz iste knjižnice).
|
bravo kolega!
Citat: |
Ja imam jedno drugo pitanje: nadam se da ne trebamo provjeravati hoće li stranice biti pozitivne (ako konstruktor prima duljine stranica)? |
ne trebate
_________________ The purpose of life is to end
Prosle su godine kolokviji bili laksi, zar ne?
|
|
[Vrh] |
|
zeak Forumaš(ica)
Pridružen/a: 21. 09. 2011. (21:43:13) Postovi: (6)16
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
|
[Vrh] |
|
thinkpink223 Forumaš(ica)
Pridružen/a: 25. 09. 2011. (09:24:57) Postovi: (12)16
Spol:
|
|
[Vrh] |
|
ffff Forumaš(ica)
Pridružen/a: 05. 02. 2013. (08:25:45) Postovi: (3)16
|
|
[Vrh] |
|
GauSs_ Moderator
Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol:
Lokacija: 231
|
|
[Vrh] |
|
ffff Forumaš(ica)
Pridružen/a: 05. 02. 2013. (08:25:45) Postovi: (3)16
|
|
[Vrh] |
|
Phoenix Forumaš(ica)
Pridružen/a: 15. 05. 2010. (18:46:07) Postovi: (164)16
Sarma: -
|
Postano: 17:31 pet, 3. 5. 2013 Naslov: |
|
|
[quote="vsego"]Usporedjivanje realnih brojeva se, zbog gresaka zaokruzivanja (gradivo Numericke matematike) gotovo nikad ne radi s operatorom [tt]==[/tt]. Posto je GauSs_ naveo da treba uvesti toleranciju 0.01, onda umjesto [tt]if (x == y)...[/tt] koristite [tt]if (abs(x-y) < 0.01)...[/tt].[/quote]
Hvala vsegi na obavijesti, baš sam htio ovo napomenuti na forumu iz posebnog razloga...
Dobio sam nekoliko upita na mail oko zadaće i do sada se svi upiti zasnivaju na to zašto izračuna dva identična broja, a uvjet jednakosti padne.
Dakle, vi napišete ovakav dio koda:
[code:1]double i, j;
// ovdje ide neko računanje i pohranjivanje rezultata u varijable i i j
cout << i << " " << j << endl;
if( i==j )
cout << "jednaki su";
else
cout << "nisu jednaki";[/code:1]
Ali, iz nekog razloga, program ispiše, recimo, sljedeće:
[code:1]8 8
nisu jednaki[/code:1]
I kako ovo popraviti?
Nekako je jasno prihvatiti činjenicu da ono što ispisuje na ekran nije baš identično kao i stanje zapisano u memoriji (inače bi [tt]if[/tt] uvjet prošao). No, razlikuju se u nekoj dovoljno malenoj znamenci zbog koje gornji uvjet pada.
Jedan način je da napišete uvjet kakav je vsego napisao. Nekim kolegama sam već napisao identičan uvjet, no u nešto drugačijem zapisu (a sada ga pišem s manje nula jer vidim da nije potrebna tolika točnost koliku sam na mail pisao):
[code:1]
if( i+0.001 >= j && j+0.001 >= i)
[/code:1]
Kada umjesto uvjeta jednakosti napišete gornji vsegin ili ovaj moj uvjet, dobit ćete ispis:
[code:1]8 8
jednaki su[/code:1]
Ako navedete neki manji broj u zbrajanju, recimo [tex]0.00001[/tex], dobit ćete veću preciznost i bolje računanje u zadatku, no ako stavite previše nula program će se ponašati kao da varijablama pribraja broj [tex]0[/tex], tako da niste ništa novo dobili.
Slične probleme imat ćete i na drugim mjestima u programu. Primjerice: događa li vam se da u zadatku imate jednakokračan trokut, a pri ispisivanju kuteva trokuta dvaput ili čak triput ispiše kut [tex]60°[/tex] umjesto jedan put? Pripazite koje vrijednosti zapravo ubacujete u dani set!
Ovo je inače koristan trik u praksi u slučaju da vam program ne računa najbolje neke vrijednosti. Meni osobno je pomogao u prošlogodišnjoj prvoj zadaći u zadatku Petshop (kada je trebalo pretvarati kupovnu cijenu u prodajnu, pa smo morali množiti dva doublea; nešto slično tome). :)
vsego (napisa): | Usporedjivanje realnih brojeva se, zbog gresaka zaokruzivanja (gradivo Numericke matematike) gotovo nikad ne radi s operatorom ==. Posto je GauSs_ naveo da treba uvesti toleranciju 0.01, onda umjesto if (x == y)... koristite if (abs(x-y) < 0.01).... |
Hvala vsegi na obavijesti, baš sam htio ovo napomenuti na forumu iz posebnog razloga...
Dobio sam nekoliko upita na mail oko zadaće i do sada se svi upiti zasnivaju na to zašto izračuna dva identična broja, a uvjet jednakosti padne.
Dakle, vi napišete ovakav dio koda:
Kod: | double i, j;
// ovdje ide neko računanje i pohranjivanje rezultata u varijable i i j
cout << i << " " << j << endl;
if( i==j )
cout << "jednaki su";
else
cout << "nisu jednaki"; |
Ali, iz nekog razloga, program ispiše, recimo, sljedeće:
I kako ovo popraviti?
Nekako je jasno prihvatiti činjenicu da ono što ispisuje na ekran nije baš identično kao i stanje zapisano u memoriji (inače bi if uvjet prošao). No, razlikuju se u nekoj dovoljno malenoj znamenci zbog koje gornji uvjet pada.
Jedan način je da napišete uvjet kakav je vsego napisao. Nekim kolegama sam već napisao identičan uvjet, no u nešto drugačijem zapisu (a sada ga pišem s manje nula jer vidim da nije potrebna tolika točnost koliku sam na mail pisao):
Kod: |
if( i+0.001 >= j && j+0.001 >= i)
|
Kada umjesto uvjeta jednakosti napišete gornji vsegin ili ovaj moj uvjet, dobit ćete ispis:
Ako navedete neki manji broj u zbrajanju, recimo [tex]0.00001[/tex], dobit ćete veću preciznost i bolje računanje u zadatku, no ako stavite previše nula program će se ponašati kao da varijablama pribraja broj [tex]0[/tex], tako da niste ništa novo dobili.
Slične probleme imat ćete i na drugim mjestima u programu. Primjerice: događa li vam se da u zadatku imate jednakokračan trokut, a pri ispisivanju kuteva trokuta dvaput ili čak triput ispiše kut [tex]60°[/tex] umjesto jedan put? Pripazite koje vrijednosti zapravo ubacujete u dani set!
Ovo je inače koristan trik u praksi u slučaju da vam program ne računa najbolje neke vrijednosti. Meni osobno je pomogao u prošlogodišnjoj prvoj zadaći u zadatku Petshop (kada je trebalo pretvarati kupovnu cijenu u prodajnu, pa smo morali množiti dva doublea; nešto slično tome).
|
|
[Vrh] |
|
|