Herculano 0 Denunciar post Postado Março 5, 2009 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
quitZAUMMM 18 Denunciar post Postado Março 5, 2009 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
VictorCacciari 42 Denunciar post Postado Março 5, 2009 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
quitZAUMMM 18 Denunciar post Postado Março 6, 2009 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
VictorCacciari 42 Denunciar post Postado Março 6, 2009 Essa é boa, né??? aprendi com o pessoal do orkut. =D Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Março 6, 2009 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
VictorCacciari 42 Denunciar post Postado Março 6, 2009 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
gRoOvE 0 Denunciar post Postado Março 6, 2009 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