Ir ao conteúdo

Posts recomendados

Postado

Eu estava tentando fazer essa questão em C 

image.png.68139e963e42d5ce9f6cedec91583ac2.png

Aí comecei assim e deu erro >

#include <stdio.h>
int main()
{
	int n, i;
	float s;
	
	i = 1;
	printf("digite o N: \n");
	scanf("%d", &n);
	
	do
	{	
	 	s = s + 1/i;
	 	i++;
        // printf("kkkkkkkkjkjjj");  tentei até colocar um printf pra verificar se estava funcionando essa parte, mudei pra while{} e nd
	}while (i <= n);
	printf("\nO S é: %.2f ", s);
	return(0);
}

Depois disso peguei e troquei o s = s + 1/i; para s = s + um/i;   onde <um> defini como constante inteira e deu errado também

Acabei pegando e criando uma variavel um inteira e deu errado

Só depois disso que fiz certo, criando uma variavel float de um, AI FUNCIONOU 

#include <stdio.h>
int main()
{
	int n, i;
	float s,um;
	
	i = 1;
	um = 1; 
	printf("digite o N: \n");
	scanf("%d", &n);
	
	do
	{	
	 	s = s + um/i;
	 	i++;
	}while (i <= n);
	printf("\nO S é: %.2f ", s);
	return(0);
}

A questão é, não possivel atribuir um para um float a soma dele mesmo com um inteiro dividindo um inteiro?  

Postado
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL,"");
    int num, x;
    float s, d;
    s = 0;
    printf("Digite um número de termo para cálculo da série: ");
    scanf("%d",&num);
   for(x=1; x<=num; x++){
       d = x;
       s = s + 1/d;
    }
    printf("\nO valor de S para o número informado é: %.2f", s);
    return 0;
}

 

  • Obrigado 1
Postado
1 hora atrás, AnonymousLPH disse:

A questão é, não possivel atribuir um para um float a soma dele mesmo com um inteiro dividindo um inteiro?  

O problema é inteiro dividindo 1 (1/x) em C se  |x| é maior que 1 o resultado é sempre 0.

 

  • Obrigado 1
Postado
int main()
{
	int n, i;
	float s;
	
	i = 1;
	printf("digite o N: \n");
	scanf("%d", &n);
	
	do
	{	
	 	s = s + 1/i;
	 	i++;
	}    while (i <= n);
	printf("\nO S é: %.2f ", s);
	return(0);
}

Nesse primeiro caso começou errado ao tentar usar s do lado direito sem ter um valor inicial definido. Não deve ter compilado já aí. Não pode escrever s = s + 1/i; se ao entrar no loop o valor de s não era conhecido.

 

Se i é inteiro como declarou e 1 é inteiro a divisão (1/i) vai ser feita considerando DOIS inteiros e vai dar 0,1 ou -1, certo?

 

Só que você quer a fração.

Então pode escrever por exemplo 1./i e terá uma divisão de float por int. Apenas colocando o ponto lá vai indicar de 1 é double, o float longo mas float. Talvez tenha um warning do compilador por isso. Mas vai funcionar.

Ou pode escrever 1.f/i e assim oficialmente declarar 1.0 como float e não double.

 

Ou pode converter o i usando um cast: 1/(float) i . Essa conversão explícita se chama cast e tem sempre esse formato em C ou C++. 

 

3 horas atrás, AnonymousLPH disse:

Depois disso peguei e troquei o s = s + 1/i; para s = s + um/i;   onde <um> defini como constante inteira e deu errado também

 

Pois é. Uma constante inteira não serve. devia ter declarado float.

 

3 horas atrás, AnonymousLPH disse:

A questão é, não possivel atribuir um para um float a soma dele mesmo com um inteiro dividindo um inteiro?

 

Sim. É perfeitamente possível. No entanto divisão de inteiro por inteiro dá um outro inteiro. E vai truncar os valores para o menor inteiro. Se for isso o que quer não há problema. Mas o compilador não vai saber quando você quer isso como fração e aí você deve usar uma das maneiras que te mostrei.

 

  • Obrigado 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!