Ir ao conteúdo

Posts recomendados

Postado

Tô fazendo uns exercícios do Curso em Vídeo, e cheguei numa parte que tá quebrando minha cabeça. O exercício é o seguinte:

 

 (51) Faça um aplicativo que leia o preço de 8 produtos. No final, mostre na tela qual foi o maior e qual foi o menor preço digitados.

 

Mostrar o maior valor é fácil, minha dificuldade está em mostrar o menor valor digitado. Eu fiz uma gambiarra que funcionou. Só queria saber como posso resolver este problema sem essa gambiarra. Mas também gostaria que não fosse postado a resposta, e sim uma dica de como eu posso fazer por conta própria. Obrigado pela ajuda.

 

Segue o código que fiz.

algoritmo "Maior e menor valores"
var
   cont: inteiro
   valor, maior, menor: real
inicio
   cont <- 1
   menor <- 100000000000 //gambiarra vagabunda kkk
   enquanto cont <= 8 faca
      escreva("Digite o valor do ", cont, "º produto: ")
      leia(valor)
      se valor > maior entao
         maior <- valor
      fimse
      se valor < menor entao
         menor <- valor
      fimse
      cont <- cont + 1
   fimenquanto
   escreval("O produto mais caro teve o valor de: R$", maior)
   escreval("O produto mais barato teve o valor de: R$", menor)
fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado
2 horas atrás, Ferreira_Theu disse:

Eu fiz uma gambiarra que funcionou.

 

@Ferreira_Theu, a sua "gambiarra" não seria uma gambiarra... seria uma solução em si. 😎

    Sobre:

    2 horas atrás, Ferreira_Theu disse:

    Mas também gostaria que não fosse postado a resposta, e sim uma dica de como eu posso fazer por conta própria.

     

    Basicamente você teria 2 formas:

    1. inicializar o menor com um maior valor possível; (O que você fez.)
    2. inicializar o maior e o menor com o primeiro valor.
    Postado
    Em 19/07/2021 às 11:00, Ferreira_Theu disse:
    menor <- 100000000000

    Essa não é a melhor forma.

     

    Nesse caso mais simples pode ter dado certo, mas em outras situações onde é difícil prever o valor da entrada pode não funcionar.

     

    Se p.ex todas as entradas forem maiores que 100000000000 a variável menor nunca vai mudar de valor.

     

    Para resolver isso é só fazer uma condicional logo após o comando leia(valor) para atribuir o valor quando cont for igual a 1 (já que esse é o valor inicial do contador). Assim a variável vai iniciar com o primeiro valor informado e depois vem as outras condicionais do seu programa com os testes de maior e menor. Em alguns casos também é preciso iniciar a variável maior, pense p.ex como ficaria com todas as entradas negativas.

    • Curtir 1
    • Membro VIP
    Postado
    2 horas atrás, Midori disse:

    Em alguns casos também é preciso iniciar a variável maior, pense p.ex como ficaria com todas as entradas negativas.

     

    Exatamente... por isso que seria bom logo inicializar os dois (o maior e o menor) com o primeiro valor... acho também que seria melhor forma.

    • Curtir 1
    Postado

    Fiz um condicional que faz as variáveis maior e menor receberem o primeiro valor, independente se ele for positivo ou negativo. Obrigado pela ajuda de vocês. ;D

    algoritmo "semnome"
    var
       cont: inteiro
       valor, maior, menor: real
    inicio
          cont <- 1
          enquanto cont <= 8 faca
                escreva("Digite o valor do ", cont, "º produto: ")
                leia(valor)
                se cont = 1 entao
                   menor <- valor
                   maior <- valor
                fimse
                se valor > maior entao
                   maior <- valor
                fimse
                se valor < menor entao
                   menor <- valor
                fimse
                cont <- cont + 1
          fimenquanto
          escreval("O produto mais caro teve o valor de: R$", maior)
          escreval("O produto mais barato teve o valor de: R$", menor)
    fimalgoritmo

     

    Era tão simples de resolver, e eu não fazia ideia em como fazer. É ***** pensar sobre isso

    • Curtir 1
    • Obrigado 1
    • Membro VIP
    Postado

    @Ferreira_Theu, só uma refatorada:

     

    1. melhor inicializar o contador com 0, afinal não tem número algum cadastrado;
    2. o VisualG insere espaços antes do número (loucura dele), daí formatando com :x resolve isso; (x = números de casas reservadas.)
    3. como são condições mutuamente excludentes entre si, faz mais sentido lógico utilizar o se/senao; (Pelo menos nessa fase de aprendizagem.);
    4. o comando ALEATORIO serve apenas para preencher automaticamente.

    Segue:

    algoritmo "Maior e menor valores"
    var
       cont: inteiro
       valor, maior, menor: real
    inicio
       cont <- 0
       ALEATORIO 1, 80
       enquanto (cont <= 8) faca
          cont <- cont + 1
          escreva("Digite o valor do ", cont:1, "º produto: ")
          leia(valor)
    
          se cont = 1 entao
             menor <- valor
             maior <- valor
          senao
             se valor > maior entao
                maior <- valor
             senao
                se valor < menor entao
                   menor <- valor
                fimSe
             fimSe
          fimSe
       fimEnquanto
       ALEATORIO OFF
       escreval()
       escreval("O produto mais caro teve o valor de R$ ", maior:1:2)
       escreval("O produto mais barato teve o valor de R$ ", menor:1:2)
    fimAlgoritmo

     

    Adendo: outra forma de preencher automaticamente seria utilizar a própria "IDE":
    image.png

     

    Dessa forma não precisando do ALEATORIO no código... aí habilitando ou desativando lá por esse menu.
     

     

    Exemplo de resultado:
    image.png

     

    Ah! Usando no código tem a característica de poder definir a faixa de valores... teste os 2 para entender um pouco melhor.

    • Curtir 4

    Crie uma conta ou entre para comentar

    Você precisa ser um usuário para fazer um comentário

    Criar uma conta

    Crie uma nova conta em nossa comunidade. É fácil!

    Crie uma nova conta

    Entrar

    Já tem uma conta? Faça o login.

    Entrar agora

    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×
    ×
    • Criar novo...