Calcular pi

Resuelto
CyRux Mensajes publicados 164 Fecha de registro   Estado Miembro Última intervención   -  
CyRux Mensajes publicados 164 Fecha de registro   Estado Miembro Última intervención   -
Hola a todos,
aquí me gustaría hacer un programa que calcule pi ... así que me basé en este algoritmo : ? = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15)...
y he creado este código
#include <stdio.h> int main () { int b = 1; float pi = 4 / b; int i; for (i=0; i < 10; i++) { b = b + 2; pi = pi - 4 / b; printf ("%f", pi); b += 2; pi = pi + 4 / b; printf ("%f", pi); } return 0; } 

pero me da "3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000"
Gracias de antemano

pd: soy principiante en C

1 respuesta

fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847
 
Hola,

Primero que nada, te recomiendo usar dobles en lugar de flotantes.

b = b + 2; y b+=2;
Es mejor usar la misma instrucción para uniformizar ;-).

Y por otro lado, el error: pi = pi - 4 / b;
4/b es una división de dos enteros. En C, una división así devuelve la parte entera (por lo tanto 0). Pi será 4-1-0-0...=3.
Mejor usa: pi=pi-4.f/b; (si trabajas en flotante) o pi=pi-4./b; (si pasaste a doble).
No olvides modificar también para: pi=pi+4/b;

Saludos,

Google es tu amigo.
0
CyRux Mensajes publicados 164 Fecha de registro   Estado Miembro Última intervención   3
 
Muchas gracias, funciona, funciona, me quedé en float, porque en double no funcionaba (gcc me señalaba un error)
el único problema es que mi resultado solo tiene 6 cifras después del punto decimal...
así que pensé en multiplicarlo por 10000000000000[...]000, pero no sé cómo hacer para que mi resultado sea exacto...
0
fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención   1 847
 
Si gcc te señala un error, es que hay algo que corregir ;-).
No dudes en publicar tu código con la versión doble así como los errores señalados por gcc para que podamos ver de dónde proviene el problema.

el único problema es que mi resultado solo tiene 6 números después de la coma...
No, el resultado tiene muchos más dígitos después de la coma. Pero solicitas mostrar solo 6 dígitos después de la coma (por defecto).
Si quieres 10: printf("%.10f\n", pi);
Nota: no olvides poner un carácter separador para que sea más legible.

Saludos,
0
CyRux Mensajes publicados 164 Fecha de registro   Estado Miembro Última intervención   3 > fiddy Mensajes publicados 441 Fecha de registro   Estado Colaborador Última intervención  
 
Está bien, funciona ^^ Muchas gracias
para información, aquí está el código final:
#include <stdio.h>

int main ()
{
int b = 1;
double pi = 4 / b;
int i;
for (i=0; i < 1000000; i++)
{
b += 2;
pi = pi - 4./b;
printf ("%.200f\n", pi);
b += 2;
pi = pi + 4./b;
printf ("%.200f\n", pi);
}
return 0;
}

pero el único problema es que el algoritmo que utilicé no es muy bueno... se necesitan 1.000.000 de cálculos para obtener 5 decimales correctos...

pd: Perdón por el tiempo de respuesta, pero no estaba en casa...
0