Ir ao conteúdo

Posts recomendados

Postado

 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

 

  • Membro VIP
Postado

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.

Postado

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

Postado
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!!

Postado
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
  • Membro VIP
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!