Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Herculano

Erro ao converter int para double

Recommended Posts

E ai galera eu sou iniciante em c e estava fazendo alguns exercicios básicos.

Como este:

 

Faça um programa em C/C++ que:

- leia um número real X do teclado;

- determine e imprima o seguinte somatório:

= x- (x/1!) -(x/2!) -(x/3!) -(x/4!) - ........

 

usando os 20 primeiros termos da série.

 

 

#include <stdio.h>
#include <iostream.h>


double fatorial(int fat)
	{
		double f;
		f=fat;
		if (f == 0)
			return 1;
		else 
			{
			for(int i=fat;i>1;i--)
				{
					f= f * i;
				}

			return f;
			}

	}

double soma (double num)
	{
		int result;
		
		for(int j=0;j < num;j++)
		{
		  result= result - (num / (fatorial (j) ) );
		  
		}
		return result;
	}
void main ()

	{
		double numero,resultado;

		printf("Digite um número:");
		scanf("%d",&numero);
		resultado= soma(numero);
		printf("%d", resultado);
		

	}

 

 

Quando eu tento compilar no visual c++ rola de boa mas no dev c++ ocorre alguns erros. Eu acho q eu não estou sabendo usar os tipos de variaveis. Se alguém puder dar alguma ajuda , agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara primeiro oq eu percebi..

você fala q a função retorna um double e ta tentando retornar um int, terá perde de precisão..

pq você naum declara result como double? tem algum motivo para ele ser int ??

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como disseo quitZAUMMMM, retorne um double da função.

 

e o teu problema está em:

printf("%d", resultado);
//você NÃO pode fazer isso, pois a função printf fica esperando um int, e só existe um double na lista de parametros....

//seria válido:
printf("%f", resultado);
//ou
printf("%d", (int)resultado);


//ja para scanf, faça:
scanf("%f%*c", &numero); 
//o indicador %*c diz para o scanf ler e DESCARTAR o ultimo caractere, que no caso será '\n' que é o presionamento da tecla enter

Compartilhar este post


Link para o post
Compartilhar em outros sites

IASDFHUAH agora q eu entendi o pq você colocar %*c no scanf.. xD!

vlw vitor agora to sabendo de + essa! ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa é boa, né???

aprendi com o pessoal do orkut.

=D

Compartilhar este post


Link para o post
Compartilhar em outros sites

hsueheuashusae, mas você pode usar a supreção de entrada para outras situações também..tipo o 'c' ali pode ser trocador por d,f...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem lembrado groove! :D

nós podemos ler e descartar um integer, seria: %*d

 

sinceramente, eu só usei para chars (quebra de linha) até hj.

É a melhor solução para o problema de buffer de teclado sujo, na minha opinião.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Victor, pra resolver esse problema do buffer sujo fiz uma função, ai quando preciso só chamo ela...mais prático :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.