rafaelvitti Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 Bom dia Preciso fazer um programa que calcule a media de duas notas mas por exemplo, quando executo e entro com valores 1 e 2 ele me retorn media 1 ao invés de 1,5.Tem algo faltando????#include <stdio.h>#include <stdlib.h>main(){int numero1,numero2;float media; printf("POR FAVOR,DIGITE O PRIMEIRO NUMERO"); scanf("%d",&numero1); printf("POR FAVOR, DIGITE O SEGUNDO NUMERO"); scanf("%d",&numero2); media = (numero1+numero2)/2; printf("A MEDIA DO ALUNO E %f. \n",media); system("PAUSE"); }desde já agradeço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 A variável "media" até pode ser float, mas o resultado da divisão não é. Logo, o resultado da divisão ignora a parte fracionária. Mas você só precisa fazer um cast na divisão:media = (float)(numero1+numero2)/2; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 juninhodagavioes Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 Ou pode ser assim:#include <stdio.h> #include <stdlib.h> main() { float numero1,numero2; float media; printf("POR FAVOR,DIGITE O PRIMEIRO NUMERO"); scanf("%f",&numero1); printf("POR FAVOR, DIGITE O SEGUNDO NUMERO"); scanf("%f",&numero2); media = (numero1+numero2)/2; printf("A MEDIA DO ALUNO E %f. \n",media); system("PAUSE"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DeeKilleer Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 (editado) #include <stdio.h> #include <conio.h> void main(void) { float nota1, nota2, media; clrscr(); printf("Digite a Nota 1: "); scanf("%f",¬a1); printf("Digite a Nota 2: "); scanf("%f",¬a2); media = (nota1+nota2)/2; printf("M‚dia: %5.2f",media); getch(); } Editado Abril 15, 2009 por DeeKilleer Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo_elite Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 Apenas mude de float pra integer sua variável media!!! Só mudar a semântica! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 Apenas mude de float pra integer sua variável media!!!Tem certeza de que isso realmente vai resolver o problema da forma como o OP expôs? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Abril 15, 2009 Denunciar Share Postado Abril 15, 2009 float nota1, nota2, media;Se, em qualquer situação, a entrada não tiver uma parte fracionária, mudar tudo para float é gambiarra. Nestes casos, um cast é mais indicado.Aliás, entrada de dados em C ou C++ é uma das coisas mais porcas que existem. Isso é coisa do tempo do onça. O ideal é usar o mínimo possível. E pelo que já vi até hoje, isso é usado apenas em programas muito simples, do tipo exercício de faculdade. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo_elite Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 media = (float)(numero1+numero2)/2;O Cast resolve da forma mais tradicional, agora mudar a semântica tyambém resolve, o que postei era apenas um quebra galho, como a variável so recebe números inteiros, quando tentar entrar números fracionários, ele eliminará... Isso dependendo do compilador, se for um conpilador antigo, dá erro, semantica de dados errados.... é como querer inserir um campo bolean um string!Espero ter esclarecido meu post anterior! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 mudar a semântica tyambém resolve, o que postei era apenas um quebra galhoNegativo. Ao trocar o tipo de "media" para int, o problema continuará sendo exatamente o mesmo que o OP reclamou: a média dos valores 1 e 2 continuará sendo 1. A acurácia do resultado depende de "media" armazenar em ponto flutuante. Portanto, para resolver, só com "media" sendo float. E, adicionalmente, o cast que indiquei ou então, trocar tudo para float de uma vez. Fora isso, não dá. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo_elite Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 mudar a semântica tyambém resolve, o que postei era apenas um quebra galhoNegativo. Ao trocar o tipo de "media" para int, o problema continuará sendo exatamente o mesmo que o OP reclamou: a média dos valores 1 e 2 continuará sendo 1. A acurácia do resultado depende de "media" armazenar em ponto flutuante. Portanto, para resolver, só com "media" sendo float. E, adicionalmente, o cast que indiquei ou então, trocar tudo para float de uma vez. Fora isso, não dá.Caro amigo, acho que você não entendeu, ele quer que o resultado seja sempre um inteiro, olha só o pedido dele!Preciso fazer um programa que calcule a media de duas notas mas por exemplo, quando executo e entro com valores 1 e 2 ele me retorn media 1 ao invés de 1,5.Por isso que postei o quebra galho, ou então o jeito erto, fazendo um cast!!! Entendeu agora? Se a resposta for 1.5, ele quer apenas a casa do inteiro!!! Pode fazer isso dependendo da plicação no próprio palicativo, por exempro em pascal (media, 2:0)... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 Na verdade não...O valor retornado é 1 e deveria ser 1,5 (foi o que eu entendi) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Maligno Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 ele quer que o resultado seja sempre um inteiro, olha só o pedido dele!Leia novamente o pedido do OP com um pouquinho mais de calma. Observe que ele reclama justamente do resultado ser apresentado como um inteiro. Logo, NÃO é isso o que ele quer.Ademais, pense bem: pra quê alguém iria querer ignorar o resto numa média aritmética? É até uma questão de lógica. :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo_elite Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 kkkkkkkkk...Agora que vi...Me perdoe de coração!!!Olha eu postndo coisa errada... heheheheOh vergonha!!!kkkkkkkMe desculpe por postar coisa errada no fórum, eu estava equivocado com o que o colega queria!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Abril 16, 2009 Denunciar Share Postado Abril 16, 2009 Me desculpe por postar coisa errada no fórum, eu estava equivocado com o que o colega queria!!!Você não deve desculpas a ninguémMuito pelo contrário, você tentou ajudar !Errar é humano Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rafaelvitti
Bom dia
Preciso fazer um programa que calcule a media de duas notas mas por exemplo, quando executo e entro com valores 1 e 2 ele me retorn media 1 ao invés de 1,5.
Tem algo faltando????
#include <stdio.h>
#include <stdlib.h>
main()
{
int numero1,numero2;
float media;
printf("POR FAVOR,DIGITE O PRIMEIRO NUMERO");
scanf("%d",&numero1);
printf("POR FAVOR, DIGITE O SEGUNDO NUMERO");
scanf("%d",&numero2);
media = (numero1+numero2)/2;
printf("A MEDIA DO ALUNO E %f. \n",media);
system("PAUSE");
}
desde já agradeço
Link para o comentário
Compartilhar em outros sites
13 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.