Posted By: mener (Buh) on 'CZriddles'
Title:     Re: Inzerat od seznamu
Date:      Tue Feb 28 15:46:53 2006

> Hmm, a povi nekdo co tam je spatne?
> C jsem mel jen pul roku kdysi davno ve skole :-( a jediny cemu v tom
> rouzumim
> je ze x!=y znamena x nerovna se ypsilon a x++ znamena x=x+1
> Ticcino


Problem je ten cyklus:

while (x != 0.01)
{
    steps++;
    x -= 0.01;
}


0.01 je ve dvojkovej soustave periodicky cislo. Cili kdyz odcitas od jednicky
furt dokola 0.01, tak se nikdy nedostanes na nulu, ale treba na 0.0000001.
Obdobne 1/3 = 0.33333, pak tri tretiny je 0.99999. V okoli 0.01 to bude
podobne, nedostanes 0.01, ale treba 0.01000001. Podminka nebude splnena a
bude se to cyklit furt.

Prvni napad je, nahradit nerovnost znakem mensi. To ale v pripade ze misto
0.01 vyjde 0.01000001 nestaci. Cyklus pak udela o jeden krok vic. Cili se to 
musi delat nak priblizne, treba abs(x - 0.01) > 1e-6. Pak je zas otazka co ma 
bejt na tej pravej strane...


Mena

Search the boards