[ un4given_2 @ 09.10.2006. 21:58 ] @
prvo da kazem da sam pocetnik u programiranju...nasao sam na netu algoritam koji su koristili u programu super_pi pa sam i ja htio to napraviti to u c-u...


Code:
#include <stdio.h>
#include <math.h>


int main(){
    
    int i;
    float a = 1;
    float b = a/sqrt(2);
    float t = a / 4;
    float x = a;
    float y;
    float p;
    for (i = 1; i <= 19; i++)
    {
        y = a;
        a = (a+b)/2;
        b = sqrt(b*y);
        t = t-x*(a-y)*(a-y);
        x = 2*x;
    }
    p = (a+b)*(a+b)/(4*t);
printf("%.1000000f",p);
getch();
return 0;
}



problem je sto su prvih 16 decima tocnih a sve ostalo su nule...unaprijed hvala na svakoj mogucoj pomoci...

[Ovu poruku je menjao un4given_2 dana 09.10.2006. u 23:43 GMT+1]
[ Milan Aksic @ 10.10.2006. 00:36 ] @
Linija
Code:
printf("%.1000000f",p);
nalaze funkciji printf() da prikaze 1000000 decimala i da izvrsi popunjavanje nulom. Pokusaj da zadas manju vrednost, npr. 20.
[ un4given_2 @ 10.10.2006. 01:01 ] @
Jesam upisao sam 20 i nakon toga mi ispise 16 decimala i ostalo su nule! Jos netko?! Bio bih zahvalan!
[ Milan Aksic @ 10.10.2006. 01:42 ] @
Hm, tip float od 4 bajta moze da sadrzi od 3.4x10^-38 do 3.4x10^38. Nemam sada vremena da ovo bolje pogledam, pokusaj da zamenis sa double.
[ un4given_2 @ 11.10.2006. 01:37 ] @
Deklariranjem s double dobijem takoder nule nakon 16 decimale, long double pak daje neki ludi broj koji ima negativan predznak, ako netko jos ima kakvu ideju nemora cak biti ni tocna?! Hvala unaprijed!
[ rumpl @ 11.10.2006. 09:20 ] @
Ne mozes sa float-om ili double-om da dobijes vise od ovog sto dobijes.
Ja sam na linuxu sa double dobio ovo: 3.14159265358979356008717331860680133104324340820312500......

Ako hoces vise od ovoga, trebace ti neka biblioteka za velike brojeve (kao libgmp: http://www.swox.com/gmp/, ili neka druga)
[ un4given_2 @ 12.10.2006. 22:49 ] @
Ovo u svakom slucaju nadmasuje moje znanje, jer nisam skuzio sto treba deklarirati i kako!