Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
Chatarin Forumaš(ica)


Pridružen/a: 14. 03. 2006. (21:49:31) Postovi: (62)16
Spol: 
Lokacija: Under the bridge
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Zvone Forumaš(ica)

Pridružen/a: 01. 07. 2003. (13:09:44) Postovi: (9D)16
|
Postano: 11:17 pet, 19. 5. 2006 Naslov: |
|
|
Ok, evo da objasnim kako sam ocjenjivao one ispise tipa [tt]printf("%11.1e\n", 12.34);[/tt] na prvom kolokviju:
-- kao potpuno tocne (2 boda) prihvacao sam 1.2e+1, 1.2e+01, 1.2e+001 ..., 1.2e1, 1.2e01, 1.2e001 i slicne, bitno je da se vidi razumijevanje e-notacije i da ima 1 znamenku iza dec. tocke te naravno da je ispravno poravnato
-- kao djelomicno tocne (1 bod) sam uzimao one koje su u e notaciji (ili nekoj njezinoj osobnoj interpretaciji :) ) prikazivale broj 12.34, mozda krivo poravnat ili sa krivim brojem decimala. Vjerojatno bih i onima koji su posve ispravno ispisali broj ali u formatu 11.1f dao 1 bod, ali koliko se sjecam takvih nije bilo.
Ono sto je bitno je da racunalo nece ni pod kojim uvjetima ispisati broj koji ne bi bio blizu 12.34 ... mozda je malo cudno sto to spominjem, ali htio bih to za svaki slucaj naglasiti jer se u kolokvijima naslo puno rjesenja tipa 1.2 ili 1234.0 ili 12.3e1 ili 1234.0e1 ili 12340000000.0e1 i sl. a svaki od tih brojeva je za bar red velicine razlicit od 12.34.
A sto se treba ispisati po standardu i zasto neki compileri daju dvije znamenke iza e, a neki tri? Evo sto kaze [url=http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf]C99Rationale[/url]:
[quote]For %e, C99 clarifies that small exponents contain at least 2 digits, but no more than are
necessary to represent the value. Prior to C99, it was not clear that an arbitrary number of
leading zeros were not allowed.
[/quote]
Znaci, vjerojatno je stvar u stupnju implementacije C99 standarda; sto se nas tice mislim da mozemo prihvatiti i jedno i drugo kao ispravno.
Ok, evo da objasnim kako sam ocjenjivao one ispise tipa printf("%11.1e\n", 12.34); na prvom kolokviju:
– kao potpuno tocne (2 boda) prihvacao sam 1.2e+1, 1.2e+01, 1.2e+001 ..., 1.2e1, 1.2e01, 1.2e001 i slicne, bitno je da se vidi razumijevanje e-notacije i da ima 1 znamenku iza dec. tocke te naravno da je ispravno poravnato
– kao djelomicno tocne (1 bod) sam uzimao one koje su u e notaciji (ili nekoj njezinoj osobnoj interpretaciji ) prikazivale broj 12.34, mozda krivo poravnat ili sa krivim brojem decimala. Vjerojatno bih i onima koji su posve ispravno ispisali broj ali u formatu 11.1f dao 1 bod, ali koliko se sjecam takvih nije bilo.
Ono sto je bitno je da racunalo nece ni pod kojim uvjetima ispisati broj koji ne bi bio blizu 12.34 ... mozda je malo cudno sto to spominjem, ali htio bih to za svaki slucaj naglasiti jer se u kolokvijima naslo puno rjesenja tipa 1.2 ili 1234.0 ili 12.3e1 ili 1234.0e1 ili 12340000000.0e1 i sl. a svaki od tih brojeva je za bar red velicine razlicit od 12.34.
A sto se treba ispisati po standardu i zasto neki compileri daju dvije znamenke iza e, a neki tri? Evo sto kaze C99Rationale:
Citat: | For %e, C99 clarifies that small exponents contain at least 2 digits, but no more than are
necessary to represent the value. Prior to C99, it was not clear that an arbitrary number of
leading zeros were not allowed.
|
Znaci, vjerojatno je stvar u stupnju implementacije C99 standarda; sto se nas tice mislim da mozemo prihvatiti i jedno i drugo kao ispravno.
Zadnja promjena: Zvone; 12:22 pet, 19. 5. 2006; ukupno mijenjano 1 put.
|
|
[Vrh] |
|
RonnieColeman Forumaš(ica)

Pridružen/a: 26. 04. 2006. (10:35:00) Postovi: (20B)16
Spol: 
Lokacija: |R^3
|
|
[Vrh] |
|
suziQ Forumaš(ica)


Pridružen/a: 29. 05. 2005. (13:52:50) Postovi: (2B)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 12:00 pet, 19. 5. 2006 Naslov: |
|
|
[quote="suziQ"]Zadatak glasi:prog. treba učitati veliko slovo engl.abecede i provjeriti da li je simetricno s obzirom na horizontalnu os(npr. B),vertikalnu(npr. W),obje (npr.H)ili niti jednu (npr. Q).
Mene zanima jel pravilno u switch naredbi napisati:
case 'B' || 'C' || 'K' :printf("slovo je sim. s obzirom na vert.os"); i tako za sva slova.Ako nije u redu,kako onda treba?[/quote]
Nije ispravno. :( Izraz [tt]'B' || 'C' || 'K'[/tt] se evaluira kao [tt](int)'B' || (int)'C' || (int)'K'[/tt] sto znaci [tt]istina ili istina ili istina[/tt], pa je rezultat toga [tt]1[/tt] i ti onda provjeravas da li tvoje slovo ima ASCII vrijednost 1 (sto nema ni jedno slovo). :(
Ispravno je:
[code:1]switch (c) {
case 'B':
case 'C':
case 'K': radi;
nesto;
break;
case...
...
}[/code:1]
suziQ (napisa): | Zadatak glasi:prog. treba učitati veliko slovo engl.abecede i provjeriti da li je simetricno s obzirom na horizontalnu os(npr. B),vertikalnu(npr. W),obje (npr.H)ili niti jednu (npr. Q).
Mene zanima jel pravilno u switch naredbi napisati:
case 'B' || 'C' || 'K' :printf("slovo je sim. s obzirom na vert.os"); i tako za sva slova.Ako nije u redu,kako onda treba? |
Nije ispravno. Izraz 'B' || 'C' || 'K' se evaluira kao (int)'B' || (int)'C' || (int)'K' sto znaci istina ili istina ili istina, pa je rezultat toga 1 i ti onda provjeravas da li tvoje slovo ima ASCII vrijednost 1 (sto nema ni jedno slovo).
Ispravno je:
Kod: | switch (c) {
case 'B':
case 'C':
case 'K': radi;
nesto;
break;
case...
...
} |
_________________ 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. 
|
|
[Vrh] |
|
Sasuke Forumaš(ica)


Pridružen/a: 27. 06. 2005. (19:22:00) Postovi: (47)16
Spol: 
Lokacija: zemlja
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
Sasuke Forumaš(ica)


Pridružen/a: 27. 06. 2005. (19:22:00) Postovi: (47)16
Spol: 
Lokacija: zemlja
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 12:51 pet, 19. 5. 2006 Naslov: |
|
|
[quote="Anonymous"]kada želimo ispisati neki broj..znači printf... koji format mora doći (znači ono %) ako želimo ispisati nešto tipa double? isto %f kao float?[/quote]
[tt]%[color=red]l[/color]f[/tt] ("l" kao "long") ;) Moze i [tt]le[/tt], [tt]lg[/tt], [tt]la[/tt] - ovisno o tome sto se zeli postici. 8)
@Sasuke: greska u zaokruzivanju. :) Prikazi taj broj binarno, prema [url=http://degiorgi.math.hr/forum/viewtopic.php?t=5504]Nesinim uputama[/url], pa ces vidjeti da gubis pokoju binarnu znamenku. ;) Prikaz mozes vidjeti i [url=http://degiorgi/uur/prikaz.php?b=123.45678]ovdje[/url], a kad taj binarni zapis vratis u dekadski, dobijes 123.456779. :D
Anonymous (napisa): | kada želimo ispisati neki broj..znači printf... koji format mora doći (znači ono %) ako želimo ispisati nešto tipa double? isto %f kao float? |
%lf ("l" kao "long") Moze i le, lg, la - ovisno o tome sto se zeli postici.
@Sasuke: greska u zaokruzivanju. Prikazi taj broj binarno, prema Nesinim uputama, pa ces vidjeti da gubis pokoju binarnu znamenku. Prikaz mozes vidjeti i ovdje, a kad taj binarni zapis vratis u dekadski, dobijes 123.456779.
_________________ 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. 
|
|
[Vrh] |
|
Chatarin Forumaš(ica)


Pridružen/a: 14. 03. 2006. (21:49:31) Postovi: (62)16
Spol: 
Lokacija: Under the bridge
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 13:47 pet, 19. 5. 2006 Naslov: |
|
|
[quote="Chatarin"]Meni za %lf i %f ispisuje isto... :dunno:[/quote]
Vjerojatno oba puta ispisuje [tt]double[/tt]. :? Probaj ovako:
[code:1][vsego@degiorgi tmp]$ cat t.c ; gcc t.c && ./a.out
main() {
printf("%.50f\n", 123.45678f);
printf("%.50lf\n", 123.45678);
}
123.45677947998046875000000000000000000000000000000000
123.45677999999999485680746147409081459045410156250000[/code:1]
Razlicito je cak i bez [tt].50[/tt] u formatu:
[code:1][vsego@degiorgi tmp]$ cat t.c ; gcc t.c && ./a.out
main() {
printf("%f\n", 123.45678f);
printf("%lf\n", 123.45678);
}
123.456779
123.456780[/code:1]
U prvom [tt]printf()[/tt] format [b]nema[/b] "[tt]l[/tt]" ([tt]long[/tt]), ali zato broj ima na kraju "[tt]f[/tt]" ([tt]float[/tt]). 8) U drugom [tt]printf()[/tt] format [b]ima[/b] "[tt]l[/tt]" ([tt]long[/tt]), ali broj na kraju nema "[tt]f[/tt]" ([tt]float[/tt]), pa ide defaultni [tt]double[/tt]. 8)
Jasnije? :D
P.S. Zasto meni sarma opada dok ljudima odgovaram na nastavna pitanja? :grebgreb:
Chatarin (napisa): | Meni za %lf i %f ispisuje isto...  |
Vjerojatno oba puta ispisuje double. Probaj ovako:
Kod: | [vsego@degiorgi tmp]$ cat t.c ; gcc t.c && ./a.out
main() {
printf("%.50f\n", 123.45678f);
printf("%.50lf\n", 123.45678);
}
123.45677947998046875000000000000000000000000000000000
123.45677999999999485680746147409081459045410156250000 |
Razlicito je cak i bez .50 u formatu:
Kod: | [vsego@degiorgi tmp]$ cat t.c ; gcc t.c && ./a.out
main() {
printf("%f\n", 123.45678f);
printf("%lf\n", 123.45678);
}
123.456779
123.456780 |
U prvom printf() format nema "l" (long), ali zato broj ima na kraju "f" (float). U drugom printf() format ima "l" (long), ali broj na kraju nema "f" (float), pa ide defaultni double.
Jasnije?
P.S. Zasto meni sarma opada dok ljudima odgovaram na nastavna pitanja?
_________________ 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. 
|
|
[Vrh] |
|
suziQ Forumaš(ica)


Pridružen/a: 29. 05. 2005. (13:52:50) Postovi: (2B)16
Spol: 
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Chatarin Forumaš(ica)


Pridružen/a: 14. 03. 2006. (21:49:31) Postovi: (62)16
Spol: 
Lokacija: Under the bridge
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 15:09 pet, 19. 5. 2006 Naslov: |
|
|
[quote="Chatarin"][quote="vsego"][quote="Chatarin"]Meni za %lf i %f ispisuje isto... :dunno:[/quote]
Vjerojatno oba puta ispisuje [tt]double[/tt]. :?[/quote]
NE...oba puta na neku foru ispisuje float!! Čudno, ali istinito... Sad ću probati ovako kako si rekao pa ću vidjeti... :znoj:[/quote]
Mislio sam da "oba puta ispisuje [tt]double[/tt]" u smislu da si oba puta ispisivala 123.45678, umjesto da jednom ispises 123.45678[color=red]f[/color] (sto je [tt]float[/tt]), a drugi put 123.45678 (sto je [tt]double[/tt]). 8) Format (u [tt]printf()[/tt]) kaze [i]kako[/i] se ispisuje, a ne [i]sto[/i]. ;)
[quote="Chatarin"]...ili možda hoćeš sarmu? :blista:[/quote]
:klopa: :D
Chatarin (napisa): | vsego (napisa): | Chatarin (napisa): | Meni za %lf i %f ispisuje isto...  |
Vjerojatno oba puta ispisuje double.  |
NE...oba puta na neku foru ispisuje float!! Čudno, ali istinito... Sad ću probati ovako kako si rekao pa ću vidjeti...  |
Mislio sam da "oba puta ispisuje double" u smislu da si oba puta ispisivala 123.45678, umjesto da jednom ispises 123.45678f (sto je float), a drugi put 123.45678 (sto je double). Format (u printf()) kaze kako se ispisuje, a ne sto.
Chatarin (napisa): | ...ili možda hoćeš sarmu?  |
_________________ 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. 
|
|
[Vrh] |
|
petrich Forumaš(ica)


Pridružen/a: 07. 11. 2005. (22:23:35) Postovi: (F6)16
Spol: 
|
|
[Vrh] |
|
Sasuke Forumaš(ica)


Pridružen/a: 27. 06. 2005. (19:22:00) Postovi: (47)16
Spol: 
Lokacija: zemlja
|
|
[Vrh] |
|
sorrow Forumaš(ica)


Pridružen/a: 08. 11. 2005. (23:01:29) Postovi: (24D)16
Spol: 
Lokacija: ...na otoku srece...
|
|
[Vrh] |
|
ignis Forumaš(ica)


Pridružen/a: 03. 11. 2005. (19:42:02) Postovi: (31)16
|
|
[Vrh] |
|
|