Pechi 0 Denunciar post Postado Fevereiro 11, 2010 Pessoal, estou aprendendo C agora e estou com um problema. Criei uma funçaõ para realizar a média de 3 numeros. Porem o resultado vem sem os decimais... Alguem pode verificar o erro?? Obs.: Estou usando o DEV float media3 (int v1, int v2, int v3) { return((v1+v2+v3)/3); } int main() { int n1,n2,n3; float res; n1=1; n2=1; n3=2; res=media3(n1,n2,n3); printf("%f\n",res); system ("pause"); } A saída é 1.00000 e devia ser 1.3333. Alguem sabe porque isso ocorre? Valew Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Fevereiro 11, 2010 printf("%5.2f\n", res); O 5.2 significa 5 casas antes da vírgula e 2 depois. =), Daí você coloca o que você achar melhor. Compartilhar este post Link para o post Compartilhar em outros sites
Pechi 0 Denunciar post Postado Fevereiro 11, 2010 printf("%5.2f\n", res); O 5.2 significa 5 casas antes da vírgula e 2 depois. =), Daí você coloca o que você achar melhor. Então cara, isso eu sei... O que está errado não é o tanto de casas após a virgula e sim o valor delas. O resultado que está aparecendo é 1.000000 (com a sua intervenção fica 1.00). O que eu quero é que apareça 1.333333 (ou se for o caso do "%5.2f" deveria ficar 1.33). Mas valeu cara. =D Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Fevereiro 11, 2010 Brother, quando você divide a soma dos 3 inteiros por 3 o resultado é um inteiro, nesse caso o piso do valor que é 1. Se você quer a parte fracionária do número você deve fazer a divisão de tipos pontos flutuantes, nesse caso você pode fazer: // altere apenas os tipos dos parâmentros dessa função float media3 (float v1, float v2, flaot v3) { return((v1+v2+v3)/3); } Compartilhar este post Link para o post Compartilhar em outros sites
Pechi 0 Denunciar post Postado Fevereiro 12, 2010 Brother, quando você divide a soma dos 3 inteiros por 3 o resultado é um inteiro, nesse caso o piso do valor que é 1. Se você quer a parte fracionária do número você deve fazer a divisão de tipos pontos flutuantes, nesse caso você pode fazer: // altere apenas os tipos dos parâmentros dessa função float media3 (float v1, float v2, flaot v3) { return((v1+v2+v3)/3); } Valew cara... hahaha Valew mesmo... realmente funcionou. Agora, você consegue me explicar porque isso acontece? Quero dizer os int's que eu coloquei realmente tem valores inteiros!!! O que tem valor com ponto flutuante é o resultado da divisão deles... Logo não faz sentido.. Os inteiros só estão abrigando os numeros o valor com ponto flutuante vai no Float... você conseguem dar uma explicação que faça sentido? []s Compartilhar este post Link para o post Compartilhar em outros sites
Daniloinf 3 Denunciar post Postado Fevereiro 12, 2010 Não me lembro ao certo, mas acho que isso é porque C é uma linguagem fortemente tipada ( <- google ) e não trabalha com as informações de modo geral, isto é, quando você está fazendo operação só com inteiros, o processamento é feito utilizando blocos do tamanho de inteiros, logo o resultado esperado é um inteiro. Isso você deve encontrar no começo de livros sobre a linguegem... Como eu disse, eu não tenho certeza se é isso mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
Pechi 0 Denunciar post Postado Fevereiro 12, 2010 Não me lembro ao certo, mas acho que isso é porque C é uma linguagem fortemente tipada ( <- google ) e não trabalha com as informações de modo geral, isto é, quando você está fazendo operação só com inteiros, o processamento é feito utilizando blocos do tamanho de inteiros, logo o resultado esperado é um inteiro. Isso você deve encontrar no começo de livros sobre a linguegem... Como eu disse, eu não tenho certeza se é isso mesmo... Ok Danilo.. você já ajudou bastante http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Tentarei encontrar a informação em algum livro Valeu mesmo cara.. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif [PODE FECHAR] Compartilhar este post Link para o post Compartilhar em outros sites