(2013) 3. zadaca Cetverokut
Select messages from
# through # FAQ
[/[Print]\]
Idite na Prethodno  1, 2, 3, 4  Sljedeće  :| |:
Forum@DeGiorgi -> Računarski praktikum 1

#21:  Autor/ica: 27re PostPostano: 20:02 pon, 29. 4. 2013
    —
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)

#22:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 21:42 pon, 29. 4. 2013
    —
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

#23:  Autor/ica: borovnica PostPostano: 17:00 sri, 1. 5. 2013
    —
Možemo li pretpostaviti da će trapez biti jednakokračan?

#24:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 18:47 sri, 1. 5. 2013
    —
borovnica (napisa):
Možemo li pretpostaviti da će trapez biti jednakokračan?


Ne

#25:  Autor/ica: angelika PostPostano: 12:13 čet, 2. 5. 2013
    —
Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true?

#26:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 12:13 čet, 2. 5. 2013
    —
angelika (napisa):
Da li jedan kut cetverokuta moze biti 180 stupnjeva, tj. treba li funkcija isprvanTip za takav cetverokut vratiti true?


ne moze

#27:  Autor/ica: mala_narancasta PostPostano: 13:11 čet, 2. 5. 2013
    —
Kod kutova, da li je bitan redosljed u set-u?

Ako da, kakav mora biti?

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

#28:  Autor/ica: eduardo PostPostano: 14:33 čet, 2. 5. 2013
    —
smijemo li includati math.h?

#29:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 14:57 čet, 2. 5. 2013
    —
eduardo (napisa):
smijemo li includati math.h?


koristite radje cmath (#include <cmath>)

#30:  Autor/ica: ffff PostPostano: 23:23 čet, 2. 5. 2013
    —
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?

#31:  Autor/ica: Pepper PostPostano: 23:36 čet, 2. 5. 2013
    —
na koji nacin bi trebali definirat pi ?

#32:  Autor/ica: matkec PostPostano: 10:37 pet, 3. 5. 2013
    —
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)?

#33:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 11:00 pet, 3. 5. 2013
    —
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

#34:  Autor/ica: zeak PostPostano: 12:31 pet, 3. 5. 2013
    —
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.

#35:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 12:58 pet, 3. 5. 2013
    —
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)....

#36:  Autor/ica: thinkpink223 PostPostano: 15:44 pet, 3. 5. 2013
    —
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 () ??

#37:  Autor/ica: ffff PostPostano: 15:46 pet, 3. 5. 2013
    —
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?

#38:  Autor/ica: GauSs_Lokacija: 231 PostPostano: 15:47 pet, 3. 5. 2013
    —
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

#39:  Autor/ica: ffff PostPostano: 16:33 pet, 3. 5. 2013
    —
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

#40:  Autor/ica: Phoenix PostPostano: 17:31 pet, 3. 5. 2013
    —
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



Forum@DeGiorgi -> Računarski praktikum 1


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Idite na Prethodno  1, 2, 3, 4  Sljedeće  :| |:
Stranica 2 / 4.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin