Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

(2013) 3. zadaca Cetverokut
WWW:
Idite na Prethodno  1, 2, 3, 4  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
27re
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 06. 10. 2010. (16:07:02)
Postovi: (17)16
Sarma = la pohva - posuda
= 3 - 3

PostPostano: 20:02 pon, 29. 4. 2013    Naslov: Citirajte i odgovorite

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()?

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)
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()?

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)


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 21:42 pon, 29. 4. 2013    Naslov: Citirajte i odgovorite

[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" Sad
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) Wink



_________________
The purpose of life is to end
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
borovnica
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 20. 04. 2010. (20:51:42)
Postovi: (9)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 17:00 sri, 1. 5. 2013    Naslov: Citirajte i odgovorite

Možemo li pretpostaviti da će trapez biti jednakokračan?
Možemo li pretpostaviti da će trapez biti jednakokračan?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 18:47 sri, 1. 5. 2013    Naslov: Citirajte i odgovorite

[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
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
angelika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 02. 2011. (17:26:51)
Postovi: (5F)16
Sarma = la pohva - posuda
= 3 - 1

PostPostano: 12:13 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true?
Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 12:13 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

[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
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
mala_narancasta
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 05. 2012. (16:38:26)
Postovi: (18)16
Spol: žensko
Sarma = la pohva - posuda
= 7 - 0

PostPostano: 13:11 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

Kod kutova, da li je bitan redosljed u set-u?

Ako da, kakav mora biti?

EDIT:
nevažno pitanje, shvatila sama... :oops:
Kod kutova, da li je bitan redosljed u set-u?

Ako da, kakav mora biti?

EDIT:
nevažno pitanje, shvatila sama... Embarassed


[Vrh]
Korisnički profil Pošaljite privatnu poruku
eduardo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 31. 01. 2011. (13:21:02)
Postovi: (5)16
Spol: muško
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 14:33 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

smijemo li includati math.h?
smijemo li includati math.h?



_________________
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 14:57 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

[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
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
ffff
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 05. 02. 2013. (08:25:45)
Postovi: (3)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 23:23 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

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?
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?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Pepper
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 06. 2012. (02:57:26)
Postovi: (B)16
Sarma = la pohva - posuda
= 2 - 0

PostPostano: 23:36 čet, 2. 5. 2013    Naslov: Citirajte i odgovorite

na koji nacin bi trebali definirat pi ?
na koji nacin bi trebali definirat pi ?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
matkec
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 05. 2010. (16:21:29)
Postovi: (8C)16
Sarma = la pohva - posuda
34 = 36 - 2

PostPostano: 10:37 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

[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).

Ja imam jedno drugo pitanje: nadam se da ne trebamo provjeravati hoće li stranice biti pozitivne (ako konstruktor prima duljine stranica)?
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).

Ja imam jedno drugo pitanje: nadam se da ne trebamo provjeravati hoće li stranice biti pozitivne (ako konstruktor prima duljine stranica)?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 11:00 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

[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
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
zeak
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 09. 2011. (21:43:13)
Postovi: (6)16
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 12:31 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

Zanima me zašto se ovo događa i smijem li koristiti onda funkciju round?
Konkretno,ako u testnom mainu imam:

std::set<double> K = a.kutovi();
for( std::set<double>::iterator i = K.begin(); i!=K.end(); ++i){
cout << *i << endl;
if ((*i)==60) cout << "60 je unutra" << endl;
}
ispis mi je 60 120

a ako stavim
std::set<double> K = a.kutovi();
for( std::set<double>::iterator i = K.begin(); i!=K.end(); ++i){
cout << *i << endl;
if (round(*i)==60) cout << "60 je unutra" << endl;
}
ispis je 60 60 je unutra 120
i tako općenito bilo kakvo uspoređivanje s kutevima ne prolazi dok ne stavim round.
Zanima me zašto se ovo događa i smijem li koristiti onda funkciju round?
Konkretno,ako u testnom mainu imam:

std::set<double> K = a.kutovi();
for( std::set<double>::iterator i = K.begin(); i!=K.end(); ++i){
cout << *i << endl;
if ((*i)==60) cout << "60 je unutra" << endl;
}
ispis mi je 60 120

a ako stavim
std::set<double> K = a.kutovi();
for( std::set<double>::iterator i = K.begin(); i!=K.end(); ++i){
cout << *i << endl;
if (round(*i)==60) cout << "60 je unutra" << endl;
}
ispis je 60 60 je unutra 120
i tako općenito bilo kakvo uspoređivanje s kutevima ne prolazi dok ne stavim round.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3560)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 12:58 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

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].
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)....



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
thinkpink223
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 25. 09. 2011. (09:24:57)
Postovi: (12)16
Spol: žensko
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 15:44 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

Je li se može da unatoč skici koja pokazuje da je pravokutnik nasljeđen od trapeza staviti u konstrukutoru pravokutnika poziv konstrukutora Četverokuta ili baš mora biti poziv trapez ? Znači :
Pravokutnik::Pravokutnik () : Cetverokut () ??
Je li se može da unatoč skici koja pokazuje da je pravokutnik nasljeđen od trapeza staviti u konstrukutoru pravokutnika poziv konstrukutora Četverokuta ili baš mora biti poziv trapez ? Znači :
Pravokutnik::Pravokutnik () : Cetverokut () ??


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ffff
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 05. 02. 2013. (08:25:45)
Postovi: (3)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 15:46 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

da,piše :) ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?
da,piše Smile ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
GauSs_
Moderator
Moderator


Pridružen/a: 28. 01. 2004. (21:01:17)
Postovi: (53C)16
Spol: muško
Sarma = la pohva - posuda
72 = 110 - 38
Lokacija: 231

PostPostano: 15:47 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

[quote="ffff"]da,piše :) ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?[/quote]

Ako je to bas jako bitno mozemo se dogovoriti da ce a biti vece ili jednako c
ffff (napisa):
da,piše Smile ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?


Ako je to bas jako bitno mozemo se dogovoriti da ce a biti vece ili jednako c



_________________
The purpose of life is to end
Malo sam lose volje...

Prosle su godine kolokviji bili laksi, zar ne?
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
ffff
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 05. 02. 2013. (08:25:45)
Postovi: (3)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 16:33 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

[quote="GauSs_"][quote="ffff"]da,piše :) ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?[/quote]

Ako je to bas jako bitno mozemo se dogovoriti da ce a biti vece ili jednako c[/quote]


bitno je,hvala :D
GauSs_ (napisa):
ffff (napisa):
da,piše Smile ..zapravo me zanimalo,ako nam to možete reći,hoće li a biti veće ili jednako c ili obratno?


Ako je to bas jako bitno mozemo se dogovoriti da ce a biti vece ili jednako c



bitno je,hvala Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Phoenix
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 15. 05. 2010. (18:46:07)
Postovi: (164)16
Sarma: -

PostPostano: 17:31 pet, 3. 5. 2013    Naslov: Citirajte i odgovorite

[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:

Kod:
8 8
nisu jednaki


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:

Kod:
8 8
jednaki su


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). Smile


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2, 3, 4  Sljedeće
Stranica 2 / 4.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan