Ir ao conteúdo
  • Cadastre-se

Portugol Dicas para resolver essa questão no PORTUGOL


Posts recomendados

Galera estou treinando no Portugol, mas essa questão em especifico eu não consegui resolver. Poderiam me ajudar ou apenas me dar dicas de como posso resolver ? 

 

Fazer um algoritmo que leia o nome e a altura de três pessoas, determinando e apresentando o nome e a altura do menor deles.

Link para o comentário
Compartilhar em outros sites

Eu fiz ao contrario, ao invés de mostrar o menor, eu mostrei o maior. Tentei arrumar, mas não consegui. Então vô mandar assim mesmo 😕

Var
   // Seção de Declarações das variáveis

   Nome: vetor[1..3] de caractere
   Altura: vetor[1..3] de real
   posicao: inteiro
Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   para posicao de 1 ate 3 faca
      escreva("Digite o seu nome: ")
      leia(Nome[posicao])
      escreval("")
      escreva("Digite a sua altura: ")
      leia(Altura[posicao])
      limpatela
   fimpara
   escreval("       REGISTROS        ")
   para posicao de 1 ate 3 faca
      escreval("nome","                    ","altura")

      ESCREVAl(Nome[posicao],"                   ", Altura[posicao])
   fimpara

   se (Altura[1]>Altura[2]) e (Altura[1]>Altura[3]) entao
      escreval("")
      escreval(Nome[1]," é o maior da lista,com:",Altura[1]," metros de altura")
   fimse
   
   se (Altura[2]> Altura[1]) e (Altura[2]>Altura[3]) entao
      escreval("")
      escreval(Nome[2]," é o maior da lista,com:",Altura[2]," metros de altura")
   fimse
   
   se (Altura[3]> Altura[1]) e (Altura[3]>Altura[2]) entao
      escreval("")
      escreval(Nome[3]," é o maior da lista,com:", Altura[3]," metros de altura")
   fimse
fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Alice Braga,

6 horas atrás, Alice Braga disse:

Eu fiz ao contrario, ao invés de mostrar o menor, eu mostrei o maior. Tentei arrumar, mas não consegui. Então vô mandar assim mesmo

 

Era só inverter de ">" para "<" nas condições. Mas ainda existirá ouros problemas, como no caso de empates. Experimente inserir duas ou mais alturas iguais, que sejam as menos (ou maiores, caso ainda não tenha corrigido)...

 

 

Segue alguns pontos:

 

1#

Seguindo a ideia de utilizar nomes de variáveis mais sugestíveis, seria preferível, por exemplo, utilizar as nomenclaturas dos vetores no plural. Vide:

var
   nomes: vetor[1..3] de caractere
   alturas: vetor[1..3] de real
   posicao: inteiro

Assim dando uma ideia que é um conjunto de coisas... :)

 

nome = 1 nome

nomes = conjunto de nomes

 

 

2#

Uma outra forma mais elegante para verificar o menor seria guardar a posição do então menor... exemplo:

algoritmo "semnome"
var
   nomes: vetor[1..3] de caractere
   alturas: vetor[1..3] de real
   posicao: inteiro

   indiceMenorAltura: inteiro
   i: inteiro
inicio
   para posicao de 1 ate 3 faca
      escreva("Digite o seu nome: ")
      leia(nomes[posicao])
      escreval("")
      escreva("Digite a sua altura: ")
      leia(alturas[posicao])
      limpaTela
   fimPara

   escreval("       REGISTROS        ")
   para i de 1 ate posicao faca
      escreval("Nome  : ", nomes[i])
      escreval("Altura: ", alturas[i]:1:2)
      escreval("")
   fimpara

   indiceMenorAltura := 1
   para i de 1 ate posicao faca
      se (alturas[i] < alturas[indiceMenorAltura]) entao
         indiceMenorAltura <- i
      fimSe
   fimPara
   
   escreva (nomes[indiceMenorAltura], " é o(a) mais baixo(a) da lista, com ")
   escreval(alturas[indiceMenorAltura]:1:2, " metros de altura")
fimAlgoritmo

 

Qual dúvida é só perguntar.

 

    • Amei 1
    Link para o comentário
    Compartilhar em outros sites

    • Membro VIP

    Outra forma de implementar seria utilizando registros, exemplo:

    algoritmo "Vetores - Menor altura"
    tipo
       t_Pessoa = registro
                    nome: caractere
                    altura: real
                  fimRegistro
    var
       pessoas: vetor[1..3] de t_Pessoa
       posicao: inteiro
       indiceMenorAltura: inteiro
       i: inteiro
    inicio
       para posicao de 1 ate 3 faca
          escreva("Digite o seu nome: ")
          leia(pessoas[posicao].nome)
          escreva("Digite a sua altura: ")
          leia(pessoas[posicao].altura)
          limpaTela
       fimPara
    
       escreval("       REGISTROS        ")
       para i de 1 ate posicao faca
          escreval("Nome  : ", pessoas[i].nome)
          escreval("Altura: ", pessoas[i].altura:1:2)
          escreval("")
       fimpara
    
       indiceMenorAltura := 1
       para i de 1 ate posicao faca
          se (pessoas[i].altura < pessoas[indiceMenorAltura].altura) entao
             indiceMenorAltura <- i
          fimSe
       fimPara
    
       escreva (pessoas[indiceMenorAltura].nome, " é o(a) mais baixo(a) da lista, com ")
       escreval(pessoas[indiceMenorAltura].altura:1:2, " metros de altura")
    fimAlgoritmo

     

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