Ir ao conteúdo
  • Cadastre-se

C A soma da um valor aleatório muito grande


rafael_carmo

Posts recomendados

Questão: Um número triangular é um número natural que pode ser representado na forma de triângulo equilátero. Foi desenvolvido por Gauss em 1788 quando ele tinha apenas 10 anos. Para encontrar o n­ésimo número triangular a partir do anterior basta somar­lhe n unidades. Os primeiros 5 números triangulares são: ∙ 1 = 1 ∙ 3 = 1+2 ∙ 6 = 1+ 2+ 3 ∙ 10 = 1+2+3+4 ∙ 15 = 1+2+3+4+5 Escreva um programa em C que calcule a soma dos recíprocos dos números triangulares para N termos, onde N é uma entrada para o programa em questão. S=1/1+1/3+1/6+1/10+1/15+...

 

Meu código:

 

#include <stdio.h> // Funções de entrada e saída
#include <stdlib.h> // Função padrão
#include <locale.h> // Habilita o uso de acentuação em palavras

// Adicionar novas bibliotecas acima de acordo com necessidade 

/*
    // Espaço destinado a transcrição do enunciado para não ficar olhando toda hora a lista

Um número triangular é um número natural que pode ser representado na forma de triângulo equilátero. Foi
desenvolvido por Gauss em 1788 quando ele tinha apenas 10 anos. Para encontrar o n­ésimo número triangular a
partir do anterior basta somar­lhe n unidades. Os primeiros 5 números triangulares são:
∙ 1 = 1
∙ 3 = 1+2
∙ 6 = 1+ 2+ 3
∙ 10 = 1+2+3+4
∙ 15 = 1+2+3+4+5
Escreva um programa em C que calcule a soma dos recíprocos dos números triangulares para N termos, onde N é
uma entrada para o programa em questão.
S=1/1+1/3+1/6+1/10+1/15+...


*/

int main() // Função obrigatória
   {
	/* Declaração de constantes ou variáveis */

    int a,b,qtd,limite;
    float soma;
    //Inicializando a variável
    a = 1;
    b = 1;
    qtd = 0;
    soma = 0;
	
	/* Fim */

	/* Entrada de dados */
	
	setlocale(LC_ALL,"pt-BR");
    printf("Digite a quantidade de termos:");
    scanf("%d",&limite);

	// Solicita que o usuário que entre com algum dado qualquer

    /* Fim */ 

    while(b<32767){

        qtd = qtd + 1;

        if(qtd<=limite){

            soma = soma + 1.0/b;
        }

        b = (a+1) + b;
        a++;
    }

	/* Saida de dados */

    printf("\nA soma é igual %d",soma);
	
	// Exibe mensagem na tela


	system("PAUSE"); // Apenas no Windows 
	return 0; // Pausa o programa para que ele não feche inesperadamente assim como o comando "getchar();" 
	


   } // Fim 

 

Tentei me basear neste vídeo:

 

 

Minha saída:

image.thumb.png.985ee8d794c8202ff381feed3a8fd260.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@rafael_carmo    esse número grande é por que você colocou para escrever um Decimal "%d" ,   e essa variável é do tipo float 

#include <stdio.h> 
#include <stdlib.h>
#include <locale.h>
/*
  Espaço destinado a transcrição do enunciado 
  para não ficar olhando toda hora a lista
  Um número triangular é um número natural que 
  pode ser representado na forma de triângulo equilátero. 
  Foi desenvolvido por Gauss em 1788 quando ele tinha 
  apenas 10 anos. Para encontrar o n­ésimo número triangular a
  partir do anterior basta somar­lhe n unidades. Os 
  primeiros 5 números triangulares são:
   1 = 1
   3 = 1+2
   6 = 1+ 2+ 3
   10 = 1+2+3+4
   15 = 1+2+3+4+5
  Escreva um programa em C que calcule a soma dos recíprocos dos números triangulares para N termos, onde N é
  uma entrada para o programa em questão.
  S=1/1+1/3+1/6+1/10+1/15+...
*/
int main()
{
  int   a      =     1;
  int   b      =     1;
  int   qtd    =     0;
  int   limite = 32768;
  char* p      =  {""};
  float soma   =     0;
	setlocale(LC_ALL,"pt-BR");
  printf("Digite a quantidade de termos:");
  scanf("%d",&limite);
  while(b<32767)
  {
    qtd = qtd + 1;
    if(qtd<=limite)
    {
      soma = soma + 1.0/b;
    }
    b = (a+1) + b;
    printf("val b= %d\n",b);
    a++;
  }
  printf("\nA soma é igual %7.2f\n\n",soma);
	system("pause");
	return 0; 
}

 

  • Curtir 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@devair1010 Obrigado por ajudar! 

Eu acredito que foi minha falta de atenção mesmo e por isso não percebi que estava declarando a variável de um tipo e declarando ela em um tipo diferente na hora de imprimir.

 

Só mais uma perguntinha: Teve alguma razão específica para você ter formatado a impressão dessa maneira?

 

printf("\nA soma é igual %7.2f\n\n",soma);

 

Se eu tive usado dessa maneira estaria errado?

printf("\nA soma é igual %.2f\n\n",soma);

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@rafael_carmo   não , não estaria errado , e normalmente se usa assim mesmo como você colocou , mas se for escrever vários valores e quiser que fique organizado por colunas ;       assim todos os valores serão escritos  ocupando sete espaços , sendo um para cada dígito do número até o ponto decimal e os espaços da esquerda ficarão vazios .

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!