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


Pridružen/a: 16. 02. 2009. (12:47:59) Postovi: (A5)16
Spol: 
|
|
[Vrh] |
|
Gino Forumaš(ica)

Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
MKova Forumaš(ica)


Pridružen/a: 01. 10. 2005. (18:24:38) Postovi: (187)16
Spol: 
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
GauSs_ Moderator


Pridružen/a: 28. 01. 2004. (21:01:17) Postovi: (53C)16
Spol: 
Lokacija: 231
|
|
[Vrh] |
|
pinkgirl Forumaš(ica)


Pridružen/a: 30. 11. 2006. (21:08:16) Postovi: (1AE)16
Spol: 
Lokacija: K-K-Z
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 23:52 uto, 31. 3. 2009 Naslov: |
|
|
@Gauss Ah da... :D
[quote="pinkgirl"]a sta ako je br 254,26003 ?[/quote]
Pa nema veze kakav je broj... po ovom mom će se u cjelobrojni_dio spremit 254, a u decimalni_dio 26003. Prođi kroz korake one while petlje, sve se lijepo vidi
E da, to sve radi do maxinta, oko 65000 ili tako nešto... za više staviti varijable na long int :)
@Gauss Ah da...
pinkgirl (napisa): | a sta ako je br 254,26003 ? |
Pa nema veze kakav je broj... po ovom mom će se u cjelobrojni_dio spremit 254, a u decimalni_dio 26003. Prođi kroz korake one while petlje, sve se lijepo vidi
E da, to sve radi do maxinta, oko 65000 ili tako nešto... za više staviti varijable na long int
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
pinkgirl Forumaš(ica)


Pridružen/a: 30. 11. 2006. (21:08:16) Postovi: (1AE)16
Spol: 
Lokacija: K-K-Z
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju


Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol: 
|
Postano: 1:05 sri, 1. 4. 2009 Naslov: Re: decimalni dio realnog broja |
|
|
[quote="tidus"]može li mi netko napisati kako nakon unosa realnog broja ispisati njegov cijeli i decimalni dio odvojeno kao cijele brojeve?[/quote]Pitanje je, zapravo, koliko ti decimala treba. U igri su numericka preciznost i jos pokoja "sitnica"...
[code:1]#include <stdio.h>
int main (void)
{
double i = 132.465, j;
j = i / 3;
printf ("Originalni = %lf ; cijeli = %d ; decimalni = %lf\n", i, (int)i, i - (int)i );
printf ("Originalni = %lf ; cijeli = %d ; decimalni = %lf\n", j, (int)i, j - (int)j );
return 0;
}[/code:1]
ce ti dati uredan ispis
[code:1]Originalni = 132.465000 ; cijeli = 132 ; decimalni = 0.465000
Originalni = 44.155000 ; cijeli = 132 ; decimalni = 0.155000[/code:1]
Naravno, jasno ti je da je prvi decimalni dio zapravo ovakav
[code:1]0.46500000000000341[/code:1]
tj. decimalni dio rezultata nakon dijeljenja
[code:1]0.15500000000000114[/code:1]
No kao sto rekoh, ako te za potrebe zadace takve "sitnice" ne zabrinjavaju previse... ;)
BTW, cinimi se da u jednom od gornjih primjera imas lijep primjer beskonacne petlje, tj. [code:1]while ( dec_dio - (int) dec_dio !=0 )[/code:1] :) Trebas definirati limite tj. broj iteracija iliti preciznost, i onda bi sve trebalo biti ok...
tidus (napisa): | može li mi netko napisati kako nakon unosa realnog broja ispisati njegov cijeli i decimalni dio odvojeno kao cijele brojeve? | Pitanje je, zapravo, koliko ti decimala treba. U igri su numericka preciznost i jos pokoja "sitnica"...
Kod: | #include <stdio.h>
int main (void)
{
double i = 132.465, j;
j = i / 3;
printf ("Originalni = %lf ; cijeli = %d ; decimalni = %lf\n", i, (int)i, i - (int)i );
printf ("Originalni = %lf ; cijeli = %d ; decimalni = %lf\n", j, (int)i, j - (int)j );
return 0;
} |
ce ti dati uredan ispis
Kod: | Originalni = 132.465000 ; cijeli = 132 ; decimalni = 0.465000
Originalni = 44.155000 ; cijeli = 132 ; decimalni = 0.155000 |
Naravno, jasno ti je da je prvi decimalni dio zapravo ovakav
tj. decimalni dio rezultata nakon dijeljenja
No kao sto rekoh, ako te za potrebe zadace takve "sitnice" ne zabrinjavaju previse...
BTW, cinimi se da u jednom od gornjih primjera imas lijep primjer beskonacne petlje, tj. Kod: | while ( dec_dio - (int) dec_dio !=0 ) | Trebas definirati limite tj. broj iteracija iliti preciznost, i onda bi sve trebalo biti ok...
_________________ Biolozi misle da su kemičari. Kemičari misle da su fizičari. Fizičari misle da su bogovi. A Bog misli da je matematičar...
§ http://math2.ath.cx §
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju


Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol: 
|
Postano: 10:11 sri, 1. 4. 2009 Naslov: Re: decimalni dio realnog broja |
|
|
[quote="Luuka"]Za sve potrebe programiranja na faxu mislim da se ovo neće vrtit u beskonačnoj petlji zbog zaokruživanja brojeva. Petlja bi trebala ić baš ko da ju na papiru pišeš, bez onih "repova" na kraju realnog broja.[/quote]Osim mene, jos se barem dva kompajlera i C standard ne slazu s tobom. Imaj na umu odredjeni epsilon pri evaluaciji whilea. Recimo da bi evaluacija whilea u stilu [code:1]while (izraz > 0.0001)[/code:1] ili koju vec preciznost zelis bilo rjesenje ove zbrke.
Uostalom, provrti stvar kroz debuger pa vidi sto se dogadja. Razlika u whileu nikada nece biti 0, jer ces pri castu "naletiti" na (ovisno o izvedbi) godnji ili donji limit integer zapisa svoje arhitekture.
Kao sto rekoh, nisam siguran koliko je ovo defined behavior ako ne postavis limite...
BTW, evo jedan zgodan tekstic donekle vezan za temu (interview s dr. Kahanom, starijeg datuma ali nista zato manje interesantan) -> http://www.ddj.com/architect/184410314
Luuka (napisa): | Za sve potrebe programiranja na faxu mislim da se ovo neće vrtit u beskonačnoj petlji zbog zaokruživanja brojeva. Petlja bi trebala ić baš ko da ju na papiru pišeš, bez onih "repova" na kraju realnog broja. | Osim mene, jos se barem dva kompajlera i C standard ne slazu s tobom. Imaj na umu odredjeni epsilon pri evaluaciji whilea. Recimo da bi evaluacija whilea u stilu Kod: | while (izraz > 0.0001) | ili koju vec preciznost zelis bilo rjesenje ove zbrke.
Uostalom, provrti stvar kroz debuger pa vidi sto se dogadja. Razlika u whileu nikada nece biti 0, jer ces pri castu "naletiti" na (ovisno o izvedbi) godnji ili donji limit integer zapisa svoje arhitekture.
Kao sto rekoh, nisam siguran koliko je ovo defined behavior ako ne postavis limite...
BTW, evo jedan zgodan tekstic donekle vezan za temu (interview s dr. Kahanom, starijeg datuma ali nista zato manje interesantan) → http://www.ddj.com/architect/184410314
_________________ Biolozi misle da su kemičari. Kemičari misle da su fizičari. Fizičari misle da su bogovi. A Bog misli da je matematičar...
§ http://math2.ath.cx §
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
lorozic Forumaš(ica)

Pridružen/a: 08. 12. 2008. (17:11:14) Postovi: (50)16
Spol: 
|
Postano: 12:59 sri, 1. 4. 2009 Naslov: |
|
|
[code:1]
int main(void) {
double a,deci;
int neg=1,celi,dec;
scanf("%lf",&a);
if(a<0) a=-a;
else {a=a; neg=0;}
celi=(int)a;
deci=a-celi;
deci*=10000;
dec=(int)deci;
while(dec%10==0) dec/=10;
printf("%d.%d",dec,celi);
system("pause");
return 0;
}
[/code:1]
Ova moja a i ove vase verzije uvjek mi daju isto, npr:
UNOS: 123.455
ISPIS: 4549.123
Ocito program zaokruzuje negde, al nije mi jasno di. Jedino mjesto koje mi izgleda problematicno je
[code:1]
double deci=a-celi;
deci*=10000;
dec=(int)deci
[/code:1]
ispravak: Greska se javlja naizgled random.
Danas imam prakticni kolokvij pa helpajte pliz.
Kod: |
int main(void) {
double a,deci;
int neg=1,celi,dec;
scanf("%lf",&a);
if(a<0) a=-a;
else {a=a; neg=0;}
celi=(int)a;
deci=a-celi;
deci*=10000;
dec=(int)deci;
while(dec%10==0) dec/=10;
printf("%d.%d",dec,celi);
system("pause");
return 0;
}
|
Ova moja a i ove vase verzije uvjek mi daju isto, npr:
UNOS: 123.455
ISPIS: 4549.123
Ocito program zaokruzuje negde, al nije mi jasno di. Jedino mjesto koje mi izgleda problematicno je
Kod: |
double deci=a-celi;
deci*=10000;
dec=(int)deci
|
ispravak: Greska se javlja naizgled random.
Danas imam prakticni kolokvij pa helpajte pliz.
|
|
[Vrh] |
|
mycky1111 Forumaš(ica)

Pridružen/a: 26. 05. 2008. (11:59:07) Postovi: (D4)16
Spol: 
|
Postano: 13:22 sri, 1. 4. 2009 Naslov: |
|
|
nama je demos rekao da se neki brojevi jednostavno ne mogu dobro zamjenit, tj, ako uneses 12.09, kada zamjeni cjelobrojni i dec dio, on ti ispise 899.12 i da se to ne moze ispravit.
pa zato oni kada provjeravaju taj zadatak, paze koje ce brojeve unjet...
nisam siguran je li to istina, ali demos nam je tako rekao...
nama je demos rekao da se neki brojevi jednostavno ne mogu dobro zamjenit, tj, ako uneses 12.09, kada zamjeni cjelobrojni i dec dio, on ti ispise 899.12 i da se to ne moze ispravit.
pa zato oni kada provjeravaju taj zadatak, paze koje ce brojeve unjet...
nisam siguran je li to istina, ali demos nam je tako rekao...
|
|
[Vrh] |
|
lorozic Forumaš(ica)

Pridružen/a: 08. 12. 2008. (17:11:14) Postovi: (50)16
Spol: 
|
|
[Vrh] |
|
Bubba Forumaš s poteškoćama u pisanju


Pridružen/a: 17. 11. 2006. (18:09:12) Postovi: (53)16
Spol: 
|
Postano: 13:55 sri, 1. 4. 2009 Naslov: |
|
|
[quote="lorozic"]Ova moja a i ove vase verzije uvjek mi daju isto, npr:
UNOS: 123.455
ISPIS: 4549.123
Ocito program zaokruzuje negde, al nije mi jasno di.[/quote][url=http://docs.sun.com/source/806-3568/ncg_goldberg.html]What Every Computer Scientist Should Know About Floating-Point Arithmetic[/url]
lorozic (napisa): | Ova moja a i ove vase verzije uvjek mi daju isto, npr:
UNOS: 123.455
ISPIS: 4549.123
Ocito program zaokruzuje negde, al nije mi jasno di. | What Every Computer Scientist Should Know About Floating-Point Arithmetic
_________________ Biolozi misle da su kemičari. Kemičari misle da su fizičari. Fizičari misle da su bogovi. A Bog misli da je matematičar...
§ http://math2.ath.cx §
|
|
[Vrh] |
|
vsego Site Admin


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

Pridružen/a: 08. 12. 2008. (17:11:14) Postovi: (50)16
Spol: 
|
|
[Vrh] |
|
|