Ir ao conteúdo

C algoritmo que realize o cálculo de PI para N termos


Ir à solução Resolvido por Lucca Rodrigues,

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>

void main() {

   double n;
   double i;       
   double x = 1;      
   double pi = 0;   
     
   scanf("%lf",&n);     

   for(i = 1; i <= (n * 2); i += 2){
     pi = pi + x * (4 / i);
     x = -x;
}
   printf("\n %1.5lf\n", pi);  

}

Boa tarde 

preciso de ajuda novamente.

Estou aprendendo o programar em c e tenho de fazer Faça um algoritmo que realize o cálculo de PI para N termos informados pelo usuário. Sendo PI = (4/1)-(4/3)+(4/5)-(4/7)+(4/9)... e a entrada: valor da quantidade de termos será lido em linha, sendo este valor composto por um número inteiro (int), Imprimir o valor de PI com 5 casas decimais. Só consegui a saída como se pede usando "double" não consigo com int. Preciso de ajuda para fazer n ser "int" e dar o mesmo resultado. Desde ja agradeço.

  • Amei 1
  • Solução
Postado

@Ieybdcbd Çcldcf O padrão é a main() retornar um int, por isso que normalmente a gente vê um "return 0" no final da main(), que significa que a execução foi bem sucedida.

 

1 hora atrás, Ieybdcbd Çcldcf disse:

Faça um algoritmo que realize o cálculo de PI para N termos informados pelo usuário.

"N" então é um inteiro positivo, não double como você declarou. O enunciado pede para usar o tipo inteiro:

1 hora atrás, Ieybdcbd Çcldcf disse:

a entrada: valor da quantidade de termos será lido em linha, sendo este valor composto por um número inteiro (int)

 

1 hora atrás, Ieybdcbd Çcldcf disse:

Imprimir o valor de PI com 5 casas decimais.

Por que colocou 1.5 antes do especificador?

1 hora atrás, Ieybdcbd Çcldcf disse:

printf("\n %1.5lf\n", pi);

Esse "1" não vai fazer diferença, isso é só pra deixar espaços à esquerda caso o mesmo seja um número maior que a quantidade de caracteres do ponto flutuante que você está imprimindo.

  

1 hora atrás, Ieybdcbd Çcldcf disse:

Só consegui a saída como se pede usando "double" não consigo com int. Preciso de ajuda para fazer n ser "int" e dar o mesmo resultado.

Tentou mudar o tipo de double pra int, e usar o especificador d em vez de lf na scanf()? É só isso o que você tem que fazer a mais pra "funcionar", mas é bom fazer as mudanças que eu mencionei.

 

Tente se acostumar a usar nomes de variáveis mais autoexplicativos, é fácil e poupa tempo.

Da uma olhada aí:

#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");
    
    int N;
    int sinal = 1;
    double denominador = 1;
    double PI = 0;   
    
    printf("Insira a quantidade de termos: ");
    scanf("%d", &N);     
    
    for(int i = 0; i < N; i++){
        PI += sinal * (4 / denominador);
        sinal = -sinal;
        denominador += 2;
    }
    
    printf("\nO valor de PI calculado é: %.5lf\n", PI);
    
    return 0;
}
  • Curtir 1
  • Obrigado 1
Postado
17 horas atrás, Lucca Rodrigues disse:

@Ieybdcbd Çcldcf O padrão é a main() retornar um int, por isso que normalmente a gente vê um "return 0" no final da main(), que significa que a execução foi bem sucedida.

 

"N" então é um inteiro positivo, não double como você declarou. O enunciado pede para usar o tipo inteiro:

 

Por que colocou 1.5 antes do especificador?

Esse "1" não vai fazer diferença, isso é só pra deixar espaços à esquerda caso o mesmo seja um número maior que a quantidade de caracteres do ponto flutuante que você está imprimindo.

  

Tentou mudar o tipo de double pra int, e usar o especificador d em vez de lf na scanf()? É só isso o que você tem que fazer a mais pra "funcionar", mas é bom fazer as mudanças que eu mencionei.

 

Tente se acostumar a usar nomes de variáveis mais autoexplicativos, é fácil e poupa tempo.

Da uma olhada aí:


#include <stdio.h>
#include <locale.h>

int main()
{
    setlocale(LC_ALL, "Portuguese");
    
    int N;
    int sinal = 1;
    double denominador = 1;
    double PI = 0;   
    
    printf("Insira a quantidade de termos: ");
    scanf("%d", &N);     
    
    for(int i = 0; i < N; i++){
        PI += sinal * (4 / denominador);
        sinal = -sinal;
        denominador += 2;
    }
    
    printf("\nO valor de PI calculado é: %.5lf\n", PI);
    
    return 0;
}

Ok. Obrigado.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!