pc-gamer Postado Janeiro 8, 2012 Denunciar Share Postado Janeiro 8, 2012 #include<stdio.h> float esf(float v){ float r; v=(4*3.14*r*r*r)/3; return v; } int main() { float r,result; printf("Digite o valor do raio:"); scanf("%f",&r); result=esf®; printf("o volume e:%.2f",result); getch(); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Janeiro 8, 2012 Denunciar Share Postado Janeiro 8, 2012 A cahamda da função não faz sentido:result=esf®; Além disso, na função esf(), você declara uma variável 'r', e antes de atribuir qualquer valor á mesma,já a utiliza numa expressão. Isso é incorreto. Sem falar que você sobreescreve o valor passado via parâmetro com o resultado da expressão. Não há lógica alguma nisso. O cálculo de volume de uma esfera é V = (4/3)πr³ em que: v = volume da esfera; π = "pi" = 3,1416; r = raio da esfera. Ou seja, divide-se por 3 apenas o '4', e não toda a expressão. Linearizando para uma expressão aceita pelo C ANSI: volume = (4.0/3) * 3.1415 * raio * raio * raio; Ainda, ao fazer uma divisão em que ambos os operandos são inteiros, o resultado é um inteiro em C. Portanto, é necessário usar um dos operandos como float. Corrigindo tudo, fica assim: #include <stdio.h> #define PI 3.1415 float esf(float raio){ float volume; volume = (4.0/3) * PI * raio * raio * raio; return volume; } int main(){ float raio; printf("Digite o valor do raio:"); scanf("%f",&raio); printf("o volume e: %.2f", esf(raio)); return(0); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pc-gamer Postado Janeiro 8, 2012 Autor Denunciar Share Postado Janeiro 8, 2012 ok,obrigado,mas o result=esf®; apareceu errado no forum era result=esf®. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Janeiro 8, 2012 Denunciar Share Postado Janeiro 8, 2012 (editado) Opa, tem alguns erros no seu código:1) Para você utilizar o comando "getch()", você está esquecendo de declarar a biblioteca:<conio.h> 2) Do jeito que você está passando o valor para a função está errado: result=esf®; Se você quer passar "um" parametro para ela(função) deveria ser assim: result=esf(r); 3) Como você fez a função, está errado, pois a variavel que deveria receber o valor do cálculo deveria ser a "r" e não a "v", a qual você está recebendo valor por parametro. Exemplo: r=(4*3.14*v*v*v)/3; 4) Como não sei a fórmula do calculo da esfera, apenas fiz as modificações corretas no seu código e fiz da seguinte maneira o exemplo: #include <stdio.h> #include <conio.h> float esf(float v){ float r; r=(4*3.14*v*v*v)/3; return r; } int main(){ float r,result; printf("Digite o valor do raio:"); scanf("%f",&r); result=esf(r); printf("o volume e:%.2f",result); getch(); }Acho que é isso, apenas verifique a maneira correta do cálculo da esfera. Editado Janeiro 8, 2012 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pc-gamer Postado Janeiro 8, 2012 Autor Denunciar Share Postado Janeiro 8, 2012 o r ta aparecendo errado aqui ,mas valeu. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
pc-gamer
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.