vuelta voltear significa sale reves qué que por mas largo lado imprimir girar doble dar corto como coincidan caras cara borde c long-integer pi

significa - voltear por el lado mas largo o mas corto



Cómo imprimir largo largo (4)

Estoy haciendo un programa que se aproxima a PI y trato de usar mucho tiempo, pero no funciona. Aquí está el código

#include<stdio.h> #include<math.h> typedef long long num; main(){ num pi; pi=0; num e, n; scanf("%d", &n); for(e=0; 1;e++){ pi += ((pow((-1.0),e))/(2.0*e+1.0)); if(e%n==0) printf("%15lld -> %1.16lld/n",e, 4*pi); //printf("%lld/n",4*pi); } }


En primer lugar,% d es para un int

Así que %1.16lld no tiene sentido, porque% d es un número entero

Ese typedef que hagas, también es innecesario, usa el tipo directamente hacia adelante, hace un código mucho más legible.

Lo que desea usar es el tipo double , para calcular pi y luego usar %f o %1.16f .


%lld es la forma estándar de C99, pero eso no funciona en el compilador que estoy usando (mingw32-gcc v4.6.0). La forma de hacerlo en este compilador es: %I64d

Así que prueba esto:

if(e%n==0)printf("%15I64d -> %1.16I64d/n",e, 4*pi);

y

scanf("%I64d", &n);

La única forma que conozco de hacer esto de una manera completamente portátil es usar las definiciones en <inttypes.h> .

En tu caso, se vería así:

scanf("%"SCNd64"", &n); //... if(e%n==0)printf("%15"PRId64" -> %1.16"PRId64"/n",e, 4*pi);

Realmente es muy feo ... pero al menos es portátil.


double pi = 2 * acos(0.0); int n; scanf("%d",&n); //precision with which you want the value of pi printf("%.*lf/n",n,pi);


  • Tu sentencia scanf() necesita usar %lld .
  • Su bucle no tiene una condición de terminación.
  • Hay demasiados paréntesis y muy pocos espacios en la expresión

    pi += pow(-1.0, e) / (2.0*e + 1.0);

  • Usted agrega uno en la primera iteración del bucle, y luego a cero al valor de ''pi''; Esto no cambia mucho el valor.
  • Debe usar un tipo de retorno explícito de int para main() .
  • En general, es mejor especificar int main(void) cuando ignora sus argumentos, aunque eso es menos una declaración categórica que el resto.
  • No me gusta la licencia explícita otorgada en C99 para omitir la devolución del final de main() y no la uso yo misma; Yo escribo return 0; para ser explícito

Creo que todo el algoritmo es dudoso cuando se escribe usando long long ; el tipo de datos probablemente debería ser más bien long double (con %Lf para el formato scanf() , y tal vez %19.16Lf para los formatos printf() .