Visualizando 4 respostas da discussão
  • Autor
    Posts
    • #158290
      Eduardo Garcia Bonaci
      Participante

      programa
      {
      inclua biblioteca Matematica –>mat

      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 = 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”)

      }
      }

      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 ? .

    • #158292
      Tutora Jessica
      Moderador

      Olá 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 em 0. Em seguida, quando você multiplica esse resultado por preco, o resultado continua sendo 0.

      Já quando você faz preco * 10 / 100, a ordem das operações é diferente. Primeiro, preco (que é um número real) é multiplicado por 10, resultando em um número real. Em seguida, esse resultado é dividido por 100, 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 🖖🏼.

    • #158298
      Eduardo Garcia Bonaci
      Participante

      Acho 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 * preco

      Entã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 ?

    • #158299
      Tutora Jessica
      Moderador

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

    • #158309
      Eduardo Garcia Bonaci
      Participante

      testei 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 maneira

      programa
      {
      	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 .

      • #158393
        Tutora Jessica
        Moderador

        Que 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 🖖🏼

Visualizando 4 respostas da discussão
  • Você deve fazer login para responder a este tópico.