Autor Tema: Ejercicio número pi en C++

0 Usuarios y 1 Visitante están viendo este tema.

24 Octubre, 2012, 02:01 am
Leído 2400 veces

milly

  • $$\Large \color{#5372a0}\pi\,\pi$$
  • Mensajes: 99
  • Karma: +0/-0
  • Sexo: Femenino
hola : aca de nuevo yo,  hoy esta duda: me dicen que el número pi esta dada por :

\( pi=4\displaystyle\sum_{i=1}^\infty{\displaystyle\frac{-1}{2i+1}} \) encontrar un algoritmo con error menor a 0,1%
algoritmo

ter-> 1
s->1
sig->1
den->1

repetir                  ter->1/den*sig
mientras                   s-> s+ter d
abs(ter)<=0,001        sig->s*(-1)
                            den-> den+2
pi-> 4*s
escribir("el valor del pi es =",pi)



 aca esta traducido

#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
int den,cont,n;
float s, pi,sig,ter;
ter=1;
s=1;
sig=-1;
den=3;
while(fabs(ter)<=0.001)
{
ter=1/den*sig;
s=s+ter;
sig=sig*(-1);
den=den+2;
}
pi=4*s;
printf("el valor de pi es=%f",pi);
{
getche();
}


mi duda es por que el programa ejecutado me da 4

24 Octubre, 2012, 02:55 am
Respuesta #1

pierrot

  • pabloN
  • Moderador Global
  • Mensajes: 3,447
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
Antes de ver el código, lo correcto debe ser:

\( \displaystyle \pi=4\sum_{i=0}^\infty \frac{(-1)^j}{2i+1} \)
$_="loe  hnachaPkr erttes,urJ";$j=0;for($i=0;s/(.)(.{$j})$//;$i++){$_=$2.$_,$j+=1-$i%2,print$1}print

24 Octubre, 2012, 04:38 am
Respuesta #2

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hay varios errores:

- La escritura en Latex de la fórmula. 
  De importancia solo para el foro, porque en el código manejaste el signo correctamente.

- La condición del while.
  Estás iterando mientras ter <= .001 . Por lo tanto, al ser ter=1 al inicio, nunca se ejecuta.
  Debe ser  while(ter >= .001)

- La operación ter = 1/den*sig;
  Como den es int, si escribís 1/den al principio se hace la operación en números enteros --> da 0.
  Tenés que forzar el float --> Escribís:  ter=1./den*sig; 
  Poniendo 1.  el compilador lo trata como double y la operación 1./den  es un double (no es la única forma)

- El valor límite para ter.
  Estás comparando ter con .001, pero como para dar el resultado después multiplicás x4, tu error para \( \pi \) es en realidad .004