Home › Fóruns › Programação Básica › ex014
- Este tópico contém 5 respostas, 2 vozes e foi atualizado pela última vez 1 mês atrás por
Tutora Jessica.
-
AutorPosts
-
-
6 de junho de 2025 às 13:49 #158290
Eduardo Garcia Bonaci
Participanteprograma
{
inclua biblioteca Matematica –>matfuncao inicio()
{
//declaração de variaveis
real preco//leitura de entrada
escreva(” Qual foi o valor total da compra? R$”)
leia(preco)//exibição
escreva(“\n ————– RESULTADO ————–“)
escreva(“\n Você comprou R$”, mat.arredondar(preco,2), ” na nossa loja. OBRIGADO!”)//condiçoes
se (preco > 500) {
real desc = 10/100 * precoescreva(“\n ============== ATENÇÃO ===============”)
escreva(“\n Por fazer mais de R$500,00 em compras,”)
escreva(“\n você vai receber R$”, mat.arredondar(desc,2), ” de descontos.”)
escreva(“\n O valor a ser pago será de R$”,mat.arredondar(preco – desc, 2), “!”)
escreva(“\n Volte sempre! “)
}
escreva(“\n\n”)}
}Minha duvida na parte mostrar os 10 % de desconto o meu resultado esta dando zero de desconto , fui olhar na resoluçao do exercicio o professor fez preco *10/100 e eu tinha feito como 10/100 * preco . fiz a conta na calculadora de ambas a forma e chega no mesmo valor , porem no codigo mostra o valor de desconto = 0 se eu usar 10/100 *preco por que esta acontecendo esse erro no meu codigo ? .
-
6 de junho de 2025 às 15:07 #158292
Tutora Jessica
ModeradorOlá Eduardo,
O problema está relacionado à forma como o Portugol Studio lida com operações aritméticas envolvendo números inteiros e reais, ele é um programa que não faz tudo exatamente como nós entendemos, precisamos nos adaptar para que ele consiga entender e executar o que precisamos.Quando você faz
10/100
, ambos os números são inteiros, então a divisão é feita como uma divisão inteira, resultando em0
. Em seguida, quando você multiplica esse resultado porpreco
, o resultado continua sendo0
.Já quando você faz
preco * 10 / 100
, a ordem das operações é diferente. Primeiro,preco
(que é um número real) é multiplicado por10
, resultando em um número real. Em seguida, esse resultado é dividido por100
, resultando no valor correto do desconto.Espero que tenha conseguido explicar de uma forma que consiga entender mais ou menos esse passo a passo, porem caso não consiga entender retorne ao fórum que vamos tentar lhe ajudar novamente da melhor forma 🖖🏼.
-
6 de junho de 2025 às 18:24 #158298
Eduardo Garcia Bonaci
ParticipanteAcho que entendi então no meu caso para resolver o problema eu poderia ter usado a função inteiro_para_real() da biblioteca Tipos ficando assim:
real desc = Tipos.inteiro_para_real(10)/100 * precoEntão nesse caso o 10 passaria a ser um valor real e consequentemente a 1° parte daria valor real também e consequentemente o resultado final seria o valor correto do desconto também.
Estaria certo esse meu raciocínio ? -
6 de junho de 2025 às 18:50 #158299
Tutora Jessica
ModeradorOlá Eduardo, faça os testes de raciocínio diretamente no seu código e veja se esta aparecendo o resultado que deseja, dessa forma você consegue visualizar toda a situação e colocar em prática, depois se quiser compartilhe conosco sua resolução, dessa forma você ajuda outros alunos com a mesma dúvida que a sua.
-
7 de junho de 2025 às 00:38 #158309
Eduardo Garcia Bonaci
Participantetestei essa ideia de converter o numero inteiro para real e funcionou. Testei o mesmo exemplo usado pelo professor nos videos para esse exercicio esta dando o mesmo resultado
meu novo código ficou da seguinte maneiraprograma { inclua biblioteca Matematica -->mat inclua biblioteca Tipos funcao inicio() { //declaração de variaveis real preco //leitura de entrada escreva(" Qual foi o valor total da compra? R$") leia(preco) //exibição escreva("\n -------------- RESULTADO --------------") escreva("\n Você comprou R$", mat.arredondar(preco,2), " na nossa loja. OBRIGADO!") //condiçoes se (preco > 500) { real desc = Tipos.inteiro_para_real(10) / 100 * preco escreva("\n ============== ATENÇÃO ===============") escreva("\n Por fazer mais de R$500,00 em compras,") escreva("\n você vai receber R$", mat.arredondar(desc,2), " de descontos.") escreva("\n O valor a ser pago será de R$",mat.arredondar(preco - desc, 2), "!") escreva("\n Volte sempre! ") } escreva("\n\n") } }
Muito obrigado pelas dicas , foram muito importante para mim, aprendi muitas com esse exercicio e suas dicas
Com base nas suas dicas eu aprendi como poderia corrigir o meu proprio erro e aprendi que eu posso sempre testar se possivel meu novos pensamentos como nesse exercio no própria ferramente , e também aprendi que podemos solucionar de uma forma diferente da solução proposta feito pelo professor e acabar dando mesmo resultado , Não acreditava nessa parte, mesmo o profº Gustavo falando que isso poderia acontecer de eu solucionar de uma forma e ele de outro . Agora vou começar acreditar, esse foi o primeiro exercicio que fiz diferente da solução do professor , os outros antes dele eu acabava fazendo a mesma solução do prof sem ver o video, eu sempre faco o exercicio primeiro e depois vejo a resoluçao .-
Esta resposta foi modificada 1 mês atrás por
Eduardo Garcia Bonaci.
-
9 de junho de 2025 às 09:58 #158393
Tutora Jessica
ModeradorQue maravilha Eduardo, parabéns, esse é um grande passo para o seu aprendizado.
Sempre acredite em você, você esta exatamente no caminho certo, nunca deixe de pesquisar e solucionar sua lógica.
Parabéns mais uma vez fiquei muito feliz com seu feedback .
Bons estudos e lembre se , você consegue 🖖🏼
-
Esta resposta foi modificada 1 mês atrás por
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.