Thomas Magnum Postado Outubro 19, 2018 Denunciar Share Postado Outubro 19, 2018 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 20, 2018 Denunciar Share Postado Outubro 20, 2018 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 britivaldo Postado Outubro 20, 2018 Denunciar Share Postado Outubro 20, 2018 Ou seja, para @giu_d_ as entradas são feitas mais precisamente dessa maneira: 945 e não desta maneira 9.45? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Outubro 20, 2018 Denunciar Share Postado Outubro 20, 2018 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", ¬a); 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 britivaldo Postado Outubro 20, 2018 Denunciar Share Postado Outubro 20, 2018 (editado) 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) ... Também acho o use de casting a melhor forma mesmo. Editado Outubro 21, 2018 por britivaldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Thomas Magnum
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
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.