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

Thomas Magnum

Pergunta

Boa noite, pessoal!

Eu tenho que criar um programa, utilizando a linguagem C, que consiga arredondar notas. Isso se dá assim:

 

Se um aluno tiver uma nota que termina com um valor inferior a ".25", a nota dele deve ser arredondada para baixo ".0"

Se for entre ".26" e ".74", a nota será arredondada para ".5"

E se for maior que "0.75", será arredondada para "+1".

 

Alguém pode me ajudar a criar um código que faça isso?

Eu tentei usar a função  <float> para atribuir a nota, mas não consegui fazer as condições que o enunciado pede.

 

Aguardo retorno de quem puder ajudar,

 

Obrigado.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá, @Thomas Magnum Parece ser um exercício complexo mas não é não

Não gosto e não aprovo que passa o exercício resolvido em casos como esse. Isso atrapalha no processo de aprendizagem de um aluno e muito

O que você precisa fazer é "separar" a parte inteira da nota da parte decimal, armazenando tanto a parte inteira como a parte decimal em variáveis do tipo int. Isso com dois cálculos matemáticas relativamente simples você faz 

Primeiro, para pegar a parte inteira da nota, seria o resto da divisão da nota por 100. Já a parte decimal vou deixar para você fazer

De posse da parte decimal da nota como um valor inteiro, você vai poder fazer as comparações de acordo com o enunciado do exercício

Qualquer dúvida é só perguntar, ok?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, @britivaldo Estou fazendo a leitura da nota como um valor do tipo ponto flutuante mesmo. Seria 9.45 mesmo

Como não vejo como a uma resposta adequada para esse exercício, já que para é preciso, pelo q vi até agora, de um casting para obter o resto da divisão da nota por 100 e esse exercício é de nível iniciante ( o autor do tópico deixou claro isso ) a ideia seria essa:

float nota, parte_decimal = 0;
int parte_inteira = 0;

printf("Digite a nota: ");
scanf("%f", &nota);

parte_inteira = (int) nota % 100;

parte_decimal = (nota - parte_inteira) * 100;

Mas o que ainda me incomoda, se é q essa é uma das melhores maneiras para resolver o exercício, é esse casting

Estando de posse da parte decimal do nota é possível fazer as comparações necessárias

Obs: Armazenar a parte decimal em uma variável do tipo inteira resulta em imprecisão

Logo, se tiver uma ideia melhor de como resolver isso de um modo simples fique a vontade para postar. Do modo como está funciona, mas inda acredito q tem alguma forma melhor para resolver esse exercício

Link para o comentário
Compartilhar em outros sites

  • 0

Ah também me ocorrera usa de casting do valor flutuantes só que, larguei mão de multiplicação e do modulo. Assim sendo, primeiro capturar-se os dados de forma com você fez, depois aplico o casting daí quando aplicado o casting a parte flutuantes e por implementação truncada, ou seja,  r-value conterá apenas a parte inteira do valor dispensando a operação de resto (% modulo) ...

image.png.17bdfc012d29272bace8aa5ca8c40318.png

Também acho o use de casting a melhor forma mesmo.

Editado por britivaldo
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...