Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado

@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
Postado

@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

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