[ chalka @ 14.11.2005. 23:10 ] @
POKUSAO SAM uraditi sljedeci zadatak
naveo sam pokusaj (u donjem dijelu) i pojasnjenje ali nesto ne valja pa molim za pomoc sto prije!!!!!

1. Napisati program koji izračunava približnu vrijednost broja π=3.14159... koristeći slijedeću
formulu:
π = 4⋅(1 – 1 / 3 + 1 / 5 - 1 / 7 + 1 / 9-1 / 11 +....)
Program se treba prekinuti u trenutku kada apsolutna vrijednost clana sume koji se treba
sabrati bude manja od nekog broja eps koji se unosi na početku programa i koji zapravo
definira preciznost izračunavanja. Taj uneseni broj eps treba biti u rasponu 0.0001 do 0.1.
Ako broj eps nije u tom rasponu, program daje poruku «Broj nije u trazenom rasponu» i
završava.
Na primjer, ako je unesen broj eps=0.0000023 program će dati poruku «Broj nije u zadanom
rasponu» i završit će se njegovo izvođenje. Ako je sa tastature unesen, na primjer, broj
eps=0.01 program će izračunati sumu prema datoj formuli sve dok vrijedi da je član koji se
dodaje na sumu veći od 0.01, a to znači da će apsolutna vrijednost zadnjeg dodanog člana biti
1/99.
Zadatak treba riješiti koristeći while petlju

Ja sam pokusao sa ovim ali nesto ne ide javlja mi sintaksicku gresku
Moje rezmisljanje oko ovog koda koji sam dole naveo je: nakon sto sam postavio
uslov za eps i da li je taj broj u inervalu ili ne presao sam dalje na petlju
pocevsi od n=1
opsti clan ovog gore niza je: (-1)^(na)(n+1)/2*n+1 bar koliko sam ja mogao skontati i isporobao sam cini mi se da je to to
e sada stavim da ce se operacija ponavljati sve dok opsti clan ne postane manji od eps
sve dotle ce se taj clan izracunavati i nadodavati na sumu s koja ce poslije pomnozena sa 4 davati vrijednost pi po formuli navedenoj u postavci zadatka
da li mi je logika ispravna i da li postoji neka druga funkcija za stepenovanje posto ova
nevalja za x<=0
ili ima li neki jednostavniji nacin kako da se dobije rijesenje
citao sam ovaj pokusaj na stranici sto je neko drugi vec radio ali ne kontam prvo kako je dobio one opste clanove a ni dalji rad
Molim pomozite!!!
CODE:
#include<stdio.h>
#include<math.h>
#define gg 0.1
#define dg 0.0001
int main()
{
float eps,a,b,c,d,n,pi,s;
printf("Unesite vrijednost eps gdje je [0.0001<eps<0.01]:");
scanf("%f", &eps);
s=0;
if (eps<dg||eps>gg)
{
printf("\nBroj nije u zadanom rasponu!\n");
}
else
{
n=1;

while((1/(2*n-1))<eps)
{
s=s+(pow(-1,n+1))/(2*n-1);
n++;
}
pi=4*s;
printf("\nBroj pi iznosi: %f", pi);
}

}
[ 3MAJ86 @ 15.11.2005. 05:42 ] @
mislim da se ovaj problem stvarno prečesto javlja na ovom forumu. koristi search malo više...
[ Nedeljko @ 23.11.2005. 23:22 ] @
Code:

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

#define gg 0.1
#define dg 0.0001


int main()
{
    float eps,a,b,c,d,n,pi,s;

    printf("Unesite vrijednost eps gdje je [0.0001<eps<0.01]:");
    scanf("%f", &eps);
    s=0;

    if (eps<dg||eps>gg)
    {
        printf("\nBroj nije u zadanom rasponu!\n");
    }
    else
    {
        n=1;

        while((1/(2.0*n-1))>=eps)
        {
            s=s+(pow(-1,n+1))/(2.0*n-1);
            n++;
        }

        pi=4*s;
        printf("\nBroj pi iznosi: %f\n", pi);
    }
}


Nije ti dobar kriterijum izlaza iz petlje, a takođe, u C-u je 1/2==0. Koristi decimalnu tačku kod realnih konstanti. 1.0/2.0==0.5.