Ir ao conteúdo
  • Cadastre-se

VisualG alguém poderia me ajudar com esse código, por gentileza?


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

algoritmo "pesquisa"

var
   salario: vetor[1..100] de real
   idade, idademenor: vetor[1..100] de inteiro
   sexo: vetor[1..100] de caractere
   i, contador, idade2: inteiro
   resp: caractere
   maioridade, menoridade, qtdmulher: inteiro
   mediasalario, totalsalario: real
inicio
      mediasalario <- 0

      escreval ("-----SENSO-----")
      repita
            contador := contador + 1
            escreval ("Informe a idade do habitante:")
            leia (idade[contador])
            se (idade[contador] < 0) entao
               fimalgoritmo
            fimse
            escreval ("Informe o sexo do habitante(M/F):")
            leia (sexo[contador])
            escreval ("Informe o salário do habitante:")
            leia (salario[contador])
            limpatela
            escreval ("Deseja adicionar outro habitante?(S/N)")
            leia (resp)
            limpatela
      ate (resp = "N")
      
      para i de 1 ate contador faca
           totalsalario <- totalsalario + salario[i]
           mediasalario <- totalsalario/contador

           se (idade[i] > maioridade) entao
              maioridade <- idade[i]
           se (idade[i] < menoridade) entao
              menoridade <- idade[i]
           fimse
           fimse
      
           se (sexo[i] = "F") e (salario[i] < 100) entao
              qtdmulher <- qtdmulher + 1
           fimse
      fimpara
      
      escreval ("A média de salários é R$", mediasalario)
      escreval ("A maior idade do grupo é", maioridade, " e a menor", menoridade)
      escreval ("A quantidade de mulheres com salário menor que R$100,00 é", qtdmulher)
      
fimalgoritmo

estou fazendo esse exercício de programação no visualg mas ao executar ele apresenta a variável de menoridade sempre como 0

a de maioridade está aparecendo certinho

não consigo encontrar o erro...

alguém pode me ajudar, por gentileza? sou iniciante

 

 

Link para o comentário
Compartilhar em outros sites

Se você não atribui um valor para uma variável inteira no VisualG ele atribui o valor 0, então você está comparando dentro do loop se alguma idade é menor que 0, o que não vai ocorrer já que um valor negativo para a idade encerra o programa.

 

Você pode atribuir inicialmente um valor alto para menoridade como 10000 ou fazer o mais correto que seria atribuir o primeiro valor do vetor para menoridade:

menoridade <- idade[1] antes de entrar no loop que faz as comparações.

 

 

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

7 minutos atrás, XDeyvis disse:

Boa tarde!

Parece estar faltando e referência da menoridade, o que o programa deve considerar como tal.

muito obrigada, acho que é isso mesmo!

 

5 minutos atrás, JorgeGus disse:

Se você não atribui um valor para uma variável inteira no VisualG ele atribui o valor 0, então você está comparando dentro do loop se alguma idade é menor que 0, o que não vai ocorrer já que um valor negativo para a idade encerra o programa.

 

Você pode atribuir inicialmente um valor alto para menoridade como 10000 ou fazer o mais o mais correto que seria atribuir o primeiro valor do vetor para menoridade:

menoridade <- idade[1] antes de entrar no loop que faz as comparações.

 

 

muito obrigada! cheguei a pensar que ele estava pegando o 0, mas não sabia qual valor determinar para que a comparação ocorresse

vou tentar aqui!

@JorgeGus

escreval ("-----SENSO-----")
      repita
            contador := contador + 1
            escreval ("Informe a idade do habitante:")
            leia (idade[contador])
            se (idade[contador] < 0) entao
               fimalgoritmo
            fimse
            escreval ("Informe o sexo do habitante(M/F):")
            leia (sexo[contador])
            escreval ("Informe o salário do habitante:")
            leia (salario[contador])
            limpatela
            escreval ("Deseja adicionar outro habitante?(S/N)")
            leia (resp)
            limpatela
      ate (resp = "N")
      
      menoridade <- idade[1]
      
      para i de 1 ate contador faca
           totalsalario <- totalsalario + salario[i]
           mediasalario <- totalsalario/contador
           
           se (idade[i] > maioridade) entao
              maioridade <- idade[i]
           se (idade[i] < menoridade) entao
              menoridade <- idade[i]
           fimse
           fimse
      
           se (sexo[i] = "F") e (salario[i] < 100) entao
              qtdmulher <- qtdmulher + 1
           fimse
      fimpara

adicionei menoridade <- idade[1], antes do loop

no entanto, ele continua não realizando a comparação

está no local errado?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

Olá.

  1. a média só precisa ser calculada uma vez (fora do loop);
  2. feche o se da maioridade. O fimse está fora do lugar;
  3. tem variáveis declaradas que não foram usadas. Precisa dar uma reorganizada na lista

 

ADENDO:

Acredito que esta estrutura não seja válida:

 

3 horas atrás, amdauf disse:



      se (idade[contador] < 0) entao
         fimalgoritmo
      fimse

 

O comando fimAlgoritmo deve ser inserido apenas no fim do programa... no caso, o programa não dá erro seria simplesmente um bug.

 

 

 

  • Curtir 2
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!