Ir ao conteúdo
  • Cadastre-se
Anatanael Barbosa

Portugol programação básica portugol visualg

Recommended Posts

 Fazer um algoritmo que:
• Leia um número indeterminado de linhas contendo cada uma a idade de um indivíduo.
• A última linha que não entrará nos cálculos, contém o valor da idade igual a zero.
• Calcule e escreva a idade média deste grupo de indivíduos.
• Escreva também a maior idade e a menor

 

 

Conseguir fazer ele, o problema é quando vai escrever a idade menor sempre da 1:

algoritmo "Média_de_idades"
// Função : Calcular a média de idades de qualquer número de pessoas
// Autor : Anatanael Fonseca Barbosa
// Data : 13/04/2018
// Seção de Declarações
var
   cont,soma,idade,maior,menor:inteiro
   media:real
inicio
    cont<-0
    soma<-0
    idade<-1          
    menor<-idade
    maior<-idade

    enquanto (idade>0) faca
     escreva("Digite a idade:")
     leia(idade)

     escolha idade
     caso 0
     outrocaso
     se (idade < menor) então
     menor <- idade
     senao
     se idade > maior então
     maior <- idade
     fimse
     fimse
     fimescolha

     cont<-cont+1
     soma<-soma+idade
     
     fimenquanto

    media<-soma/(cont-1)
    escreval("A média de idades é:",media)
    escreval ("MAIOR:",maior)
    escreval ("MENOR:",menor)

fimalgoritmo

 

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

1#

1 hora atrás, Anatanael Barbosa disse:

Conseguir fazer ele, o problema é quando vai escrever a idade menor sempre da 1:

Você está inicializando variável menor com um valor errado, ou seja, como está iniciando com um, nenhuma idade que você inserir será menor que isso... A sugestão é que maior e menor sejam iniciados com a primeira idade.

 

 

 

2#

Em vez de usar um escolha/caso, utilize um se mesmo.

 

 

 

3#

Se digitar um 0 logo de cara, o programa trava. Isso poderia ser tratado.

 

 

***

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que vou te passar aqui não é a melhor prática, mas faça o teste e veja se PARA ESTA SITUAÇÃO, resolve seu problema.

 

O que acontece: quando você atribui o valor "1" à variável "idade" e atribui o valor dessa variável "idade" à variável "menor" (que também recebe 1, neste caso), você atribuiu o menor valor possível à variável "idade". Por que? Porque o programa lê apenas valores inteiros maiores do que 1. Ou seja, você pode informar quantos valores de idade quiser, que o menor será sempre 1.

 

Sugestão (não é a melhor prática, ressalvo): atribua para a variável "menor idade" um valor elevado, que você acha que o usuário não informaria, sei lá, 30000. Porque a partir desse valor, a primeira idade será um valor menor que este 30000 e aí vai ser possível fazer as comparações com base nas idades atribuídas como entrada ao programa.

 

Faça o teste e reporte aqui!

 

Grande abraço!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Olinad212 disse:

O que vou te passar aqui não é a melhor prática, mas faça o teste e veja se PARA ESTA SITUAÇÃO, resolve seu problema.

 

O que acontece: quando você atribui o valor "1" à variável "idade" e atribui o valor dessa variável "idade" à variável "menor" (que também recebe 1, neste caso), você atribuiu o menor valor possível à variável "idade". Por que? Porque o programa lê apenas valores inteiros maiores do que 1. Ou seja, você pode informar quantos valores de idade quiser, que o menor será sempre 1.

 

Sugestão (não é a melhor prática, ressalvo): atribua para a variável "menor idade" um valor elevado, que você acha que o usuário não informaria, sei lá, 30000. Porque a partir desse valor, a primeira idade será um valor menor que este 30000 e aí vai ser possível fazer as comparações com base nas idades atribuídas como entrada ao programa.

 

Faça o teste e reporte aqui!

 

Grande abraço!

 

Tentei trocar o "1" da idade por "30000", resolveu o problema do "menos" porém o mais sempre fica "30000".

 

 

adicionado 3 minutos depois
1 hora atrás, Simon Viegas disse:

1#

Você está inicializando variável menor com um valor errado, ou seja, como está iniciando com um, nenhuma idade que você inserir será menor que isso... A sugestão é que maior e menor sejam iniciados com a primeira idade.

 

 

 

2#

Em vez de usar um escolha/caso, utilize um se mesmo.

 

 

 

3#

Se digitar um 0 logo de cara, o programa trava. Isso poderia ser tratado.

 

 

***

 

No aguardo.

 

Refiz tudo, e troquei a parte do "caso" por "se", e também o "enquanto" por "repita".

 

Deu certo agora

algoritmo "Média_de_idades"

var
   idade,cont,soma,maior,menor:inteiro
   media:real
inicio
   soma<-0
   cont<-0

     repita
   escreva("Digite a idade:")
   leia(idade)
    
   cont<-cont+1
    
   se cont = 1 então
   maior <- idade
   menor <- idade
   fimse

   se idade<>0 então
     se idade > maior então
     maior <- idade
       senao
       se idade < menor então
       menor <- idade
       fimse
     fimse
   fimse
  
   soma<-soma+idade
    
     ate idade = 0
   
   media<-soma/(cont-1)
   
   escreval("A média de idades é:",media)
   escreval("A menor idade é:",menor)
   escreval("A maior idade é:",maior)

fimalgoritmo


Só ficou uma dúvida, esse código poderia ser feito com o "enquanto" em vez do "repita" ? Tentei aqui mais não deu certo.

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Anatanael Barbosa disse:

 

Tentei trocar o "1" da idade por "30000", resolveu o problema do "menos" porém o mais sempre fica "30000".

Segue a lógica inversa

 

Atribua para a variável "maior idade" o valor "1". Porque a partir desse valor, a primeira idade será um valor maior que este 1 ou igual a ele. Assim, será possível fazer as comparações com base nas idades atribuídas como entrada ao programa.

 

Faça o teste e reporte.

 

Grande abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Olinad212 disse:

Segue a lógica inversa

 

Atribua para a variável "maior idade" o valor "1". Porque a partir desse valor, a primeira idade será um valor maior que este 1 ou igual a ele. Assim, será possível fazer as comparações com base nas idades atribuídas como entrada ao programa.

 

Faça o teste e reporte.

 

Grande abraço!!

 

A agora entendi, deu certo, muito obrigado !!!!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

Sobre o código atual, só alguns pequenos ajustes.

algoritmo "Média_de_idades"
var
   idade,cont,soma,maior,menor:inteiro
   media:real
inicio
soma<-0
cont<-0
repita
   escreva("Digite a idade:")
   leia(idade)
   cont<-cont+1
   se idade<>0 ENTÃO
      se cont = 1 ENTÃO
         maior <- idade
         menor <- idade
      senao
         se idade > maior ENTÃO
            maior <- idade
         senao
            se idade < menor ENTÃO
               menor <- idade
            fimse
         fimse
      fimse
      soma<-soma+idade
   fimse
ate idade = 0
media<-soma/(cont-1)
escreval("A média de idades é:",media)
escreval("A menor idade é:",menor)
escreval("A maior idade é:",maior)
fimalgoritmo

 

 

 

2#

10 minutos atrás, Anatanael Barbosa disse:

Só ficou uma dúvida, esse código poderia ser feito com o "enquanto" em vez do "repita" ? Tentei aqui mais não deu certo.

Sim. TUDO que se faz com repita, pode ser feito com enquanto e vice-versa.

 

Poste o seu código para analisarmos...

 

 

 

3#

A estrutura está com o mesmo problema:

16 minutos atrás, Anatanael Barbosa disse:

3#

Se digitar um 0 logo de cara, o programa trava. Isso poderia ser tratado.

 

 

 

***

 

No aguardo.

adicionado 3 minutos depois

4#

Dá para ajustar também o contador, exemplo:

algoritmo "Média_de_idades"
var
   idade,cont,soma,maior,menor:inteiro
   media:real
inicio
soma<-0
cont<-0
repita
   escreva("Digite a idade:")
   leia(idade)
   se idade<>0 ENTÃO
      cont<-cont+1
      se cont = 1 ENTÃO
         maior <- idade
         menor <- idade
      senao
         se idade > maior ENTÃO
            maior <- idade
         senao
            se idade < menor ENTÃO
               menor <- idade
            fimse
         fimse
      fimse
      soma<-soma+idade
   fimse
ate idade = 0
media<-soma/(cont)
escreval("A média de idades é:",media)
escreval("A menor idade é:",menor)
escreval("A maior idade é:",maior)
fimalgoritmo

obs.: ainda precisa verificar o item 3#.

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×