Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com casas decimais


rafaelvitti

Pergunta

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

  • 0

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");
}

Link para o comentário
Compartilhar em outros sites

  • 0
#include <stdio.h>
#include <conio.h>

void main(void)
{
   float nota1, nota2, media;
   clrscr();
   printf("Digite a Nota 1: ");
   scanf("%f",&nota1);
   printf("Digite a Nota 2: ");
   scanf("%f",&nota2);
   media = (nota1+nota2)/2;
   printf("M‚dia: %5.2f",media);
   getch();
}

Editado por DeeKilleer
Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0

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!

Link para o comentário
Compartilhar em outros sites

  • 0
mudar a semântica tyambém resolve, o que postei era apenas um quebra galho

Negativo. 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á.

Link para o comentário
Compartilhar em outros sites

  • 0
mudar a semântica tyambém resolve, o que postei era apenas um quebra galho

Negativo. 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)...

Link para o comentário
Compartilhar em outros sites

  • 0
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. :)

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...