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 -
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
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
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
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.
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.
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...
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,
para información, aquí está el código final:
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...