Ir ao conteúdo
  • Cadastre-se

VisualG Aplicativo que mostre o maior e o menor preço


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
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.
    Link para o comentário
    Compartilhar em outros sites

    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
    Link para o comentário
    Compartilhar em outros sites

    • Membro VIP
    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
    Link para o comentário
    Compartilhar em outros sites

    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
    Link para o comentário
    Compartilhar em outros sites

    • Membro VIP

    @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
    Link para o comentário
    Compartilhar em outros sites

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

     

    GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

    EBOOK GRÁTIS!

    CLIQUE AQUI E BAIXE AGORA MESMO!