Dev - C++ - Calculo de PI

 
Vista:

Calculo de PI

Publicado por The Rock (6 intervenciones) el 23/11/2012 19:27:35
Necesito hacer un programa que calcule a partir de la sumatoria Leibniz el numero pi.
La sumatoria es: multiplicado por 4, para tener el valor de pi.

Y he creado este codigo fuente, con una funcion para el calculo de pi (ya que se me obliga a hacer asi)

Compila bien, pero al ejecutarse no muestra el resultadp correcto, siempre pone 4. Me gustaria que me lo corrigiesen si pueden.

El usuario debe introducir el numero de terminos que quiere que tenga la sumatoria, por eso declaro x.

NOTA: Creo que el fallo esta en el ciclo for de la funcion CalculoPi pero no lo encuentro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
double CalculoPi(int x);
using namespace std;
 
//Función CalculoPi: calcula el número PI a partir de una sucesión de términos 
//Parámetros: x
//Devuelve: el número PI
double CalculoPi(int x)
{
    double suma;
    int i;
 
    suma=0.0;
 
    for (i=0; i<=x; i++)
    {
        if ((i=2)||((i%2)==0))
        {
            suma=suma+(1/(2*i+1));
        }
        else suma=suma-(1/(2*i+1));
    }
 
return 4*suma;
}
 
 
int main(void)
 
{
    int x;
    double PI;
 
    cout <<"Introduzca el numero de terminos que quiere que tenga la sumatoria, a partir de la cual se calcula el numero PI: ";
    cin >> x;
 
    PI=CalculoPi(x);
 
    cout <<"El valor del numero PI es: " << PI << endl << endl;
 
    system("pause");
 
    return 0;
}


Muchas Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Calculo de PI

Publicado por Arturo (4 intervenciones) el 24/11/2012 04:27:22
Tu problema esta en los calculos, observa como debe ser:


if ((i=2)||((i%2)==0))
suma=suma+(1.0/(2*i+1)); //le agrego un 1.0 en ves del 1 que tenias, con esto le indico que la //operacion que quiero no es de forma entera sino decimal
else
suma=suma-(1.0/(2*i+1));


otra opcion

if ((i=2)||((i%2)==0))
suma=suma+((double)1/(2*i+1)); //hago una casting, es decir hago saber que la operacion //debera transformarse en un double y asi me dara los decimales
else
suma=suma-((double)1/(2*i+1));


eso es todo el cambio, aunque me parece interesante esa sumatoria, ya que no la conocia..
cualquier cosa me avisas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculo de PI

Publicado por mandoa (1 intervención) el 02/05/2013 12:10:25
if ((i=2)||((i%2)==0))
deberia ser
if ((i==2)||((i%2)==0))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculo de PI

Publicado por The Rock (6 intervenciones) el 24/11/2012 11:37:39
Muchas Gracias! ya si me sale!

Tengo mas sumatorias de ese tipo, si te interesan y me quieres echar una mano. Te lo agradecería!

Lo malo es que no se como ponerme en contacto contigo.

Muchas Gracias de verdad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculo de PI

Publicado por Viviana Vaca (1 intervención) el 29/04/2015 03:10:00
me podrias ayudar, el problema es que estoy haciendo el flujograma y el primer valor me sale -1 y debe ser positivo, no entiendo como el programa te salió
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculo de PI

Publicado por henry (1 intervención) el 16/05/2014 01:56:45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <math.h>
using namespace std;
int main()
 
{
    double s =0;
 int n;
 int i;
 double a;
cout<<"introdisca el valor de "<<endl;
  cin>> n;
    for (i=1;i<=n;i++)
    {
        a=(-4)*pow(-1,i)/(2*i-1);
 
        s= s + a;
        }
        cout <<"el  valor de  pi es :"<<s<<endl;
 
    system("pause");
    return 0;
}

me parece mas corta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculo de PI

Publicado por jmt (1 intervención) el 30/03/2015 12:25:29
1
int a=10000,b,c=2800,d,e,f[2801],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c -=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Calculo de PI

Publicado por Pablo (1 intervención) el 19/12/2016 20:06:49
Hola buenas , tengo una duda de ese código.
La serie de liebniz multiplicada por 4,seria asi: a=(4)*pow(-1,i)/(2*i+1), pero tu en cambio le has puesto signo negativo al 4 y al último uno y tu programa funciona bien. Me podrías explicar por que??
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar