Ir ao conteúdo

Posts recomendados

Postado

Boa tarde!

Construí um algorimto para a resolução do problema abaixo no viasualg:

Você esta fazendo uma pesquisa com 50 habitantes de uma pequena vila. Escreva um algoritmo que colete os dados de idade, sexo (M/F) e salário de todos as pessoas que desejam participar da pesquisa (para encerrar a entrada de dados entre na idade o valor igual a zero). Após coletar todos os dados informe: 

a. A média de salário do grupo 
b. Maior e menor idade do grupo 
c. A percentagem do total de mulheres com salário até R$ 300,00 
d. . A quantidade de homens 

O problema do meu algoritmo é que quando digito a idade igual a zero, ele contabiliza todas as outras funções do laço pela última vez ao invé de simplesmente encerrar o loop. Poderiam me ajudar?
Eis o algoritmo que criei abaixo:

 

algoritmo "semnome"
// Função :
// Autor :
// Data : 13/05/2017
// Seção de Declarações
var
idade,maioridade, menoridade,conthomem: inteiro
sexo: caracter
salario, mediasalario, somasalario, contsalario, contmulher, contmulher300, porcentmulher: real
inicio
// Seção de Comandos
menoridade <- 10000;
maioridade <- 0;
conthomem <- 0
somasalario <- 0
contsalario <- 0
contmulher <- 0
idade <- 1
enquanto idade <> 0 faca
Escreva ("Digite a idade ")
Leia (idade)
Escreva ("Digite o sexo : M para Masculino e F para feminino: ")
Leia (sexo)
Escreva ("Digite o salário ")
Leia (salario)
se (idade > maioridade) então
maioridade <- idade
fimse
se (idade < menoridade) então
menoridade <- idade
fimse
se (sexo = "M") então
conthomem <- conthomem + 1
senao
se (sexo = "F") então
contmulher <- contmulher + 1
fimse
se (sexo = "F") E (salario <= 300) então
contmulher300 <-contmulher300 + 1
fimse
porcentmulher <- (contmulher300 * 100) / contmulher
fimse
contsalario <- contsalario + 1
somasalario <- somasalario + salario
mediasalario <- somasalario / contsalario
fimenquanto
Escreval (" A porcentagem do total de mulheres com salario até 300 reais é de ", porcentmulher, " % ")
Escreval ("A quantidade total de homens é de ", conthomem, " homens")
Escreval ("A maior idade do grupo é ", maioridade, "anos")
Escreval ("A menor idade do grupo é ", menoridade, "anos")
Escreval ("A média de salário do grupo é de ", mediasalario, "reais")
fimalgoritmo

 

  • Curtir 1
Postado

@Vinícius Theófilo     seu código está certo, mas para que o loop seja encerrado assim que você digital zero é preciso colocar o comando se logo depois de ler a idade, assim se for zero ele não faz a entrada dos outros dados.

veja como ficaria seu código :

algoritmo "pesquisa"
// Função :
// Autor :
// Data : 13/05/2017
// Seção de Declarações
var
idade,maioridade, menoridade,conthomem         : inteiro
sexo                                           : caracter
salario, mediasalario, somasalario, contsalario: real
contmulher, contmulher300, porcentmulher       : real
inicio
// Seção de Comandos
menoridade <- 10000;
maioridade <- 0;
conthomem <- 0
somasalario <- 0
contsalario <- 0
contmulher <- 0
idade <- 1
enquanto idade <> 0 faca
  Escreva ("Digite a idade ")
  Leia (idade)
  se idade > 0 ENTÃO
    Escreva ("Digite o sexo : M para Masculino e F para feminino: ")
    Leia (sexo)
    Escreva ("Digite o salário ")
    Leia (salario)
    se (idade > maioridade) ENTÃO
      maioridade <- idade
    fimse
    se (idade < menoridade) ENTÃO
      menoridade <- idade
    fimse
    se (sexo = "M") ENTÃO
      conthomem <- conthomem + 1
    senao
      se (sexo = "F") ENTÃO
        contmulher <- contmulher + 1
      fimse
      se (sexo = "F") E (salario <= 300) ENTÃO
        contmulher300 <-contmulher300 + 1
      fimse
      porcentmulher <- (contmulher300 * 100) / contmulher
    fimse
    contsalario <- contsalario + 1
    somasalario <- somasalario + salario
    //mediasalario <- somasalario / contsalario
  fimse
fimenquanto
mediasalario <- somasalario / contsalario
Escreval (" A porcentagem do total de mulheres com salario até 300 reais é de ", porcentmulher, " % ")
Escreval ("A quantidade total de homens é de ", conthomem, " homens")
Escreval ("A maior idade do grupo é ", maioridade, "anos")
Escreval ("A menor idade do grupo é ", menoridade, "anos")
Escreval ("A média de salário do grupo é de ", mediasalario, "reais")
fimalgoritmo

 

Postado
11 minutos atrás, devair1010 disse:

@Vinícius Theófilo     seu código está certo, mas para que o loop seja encerrado assim que você digital zero é preciso colocar o comando se logo depois de ler a idade, assim se for zero ele não faz a entrada dos outros dados.

veja como ficaria seu código :


algoritmo "pesquisa"
// Função :
// Autor :
// Data : 13/05/2017
// Seção de Declarações
var
idade,maioridade, menoridade,conthomem         : inteiro
sexo                                           : caracter
salario, mediasalario, somasalario, contsalario: real
contmulher, contmulher300, porcentmulher       : real
inicio
// Seção de Comandos
menoridade <- 10000;
maioridade <- 0;
conthomem <- 0
somasalario <- 0
contsalario <- 0
contmulher <- 0
idade <- 1
enquanto idade <> 0 faca
  Escreva ("Digite a idade ")
  Leia (idade)
  se idade > 0 ENTÃO
    Escreva ("Digite o sexo : M para Masculino e F para feminino: ")
    Leia (sexo)
    Escreva ("Digite o salário ")
    Leia (salario)
    se (idade > maioridade) ENTÃO
      maioridade <- idade
    fimse
    se (idade < menoridade) ENTÃO
      menoridade <- idade
    fimse
    se (sexo = "M") ENTÃO
      conthomem <- conthomem + 1
    senao
      se (sexo = "F") ENTÃO
        contmulher <- contmulher + 1
      fimse
      se (sexo = "F") E (salario <= 300) ENTÃO
        contmulher300 <-contmulher300 + 1
      fimse
      porcentmulher <- (contmulher300 * 100) / contmulher
    fimse
    contsalario <- contsalario + 1
    somasalario <- somasalario + salario
    //mediasalario <- somasalario / contsalario
  fimse
fimenquanto
mediasalario <- somasalario / contsalario
Escreval (" A porcentagem do total de mulheres com salario até 300 reais é de ", porcentmulher, " % ")
Escreval ("A quantidade total de homens é de ", conthomem, " homens")
Escreval ("A maior idade do grupo é ", maioridade, "anos")
Escreval ("A menor idade do grupo é ", menoridade, "anos")
Escreval ("A média de salário do grupo é de ", mediasalario, "reais")
fimalgoritmo

 

 

Muito obrigado @devair1010 !!! Funcionou perfeitamente e entendi o problema anterior! Muito Grato!

  • Curtir 1
  • Membro VIP
Postado

Só complementando:

De um modo geral, os cálculos de média devem ficar fora do laço de repetição, pois senão, toda ver que cair naquela estrutura de seleção a conta será feita novamente (sem necessidade)

porcentmulher <- (contmulher300 * 100) / contmulher

 

 

Ainda sobre os cálculos... sempre que tiver uma divisão, é necessário protegê-la com verificação se o denominador é diferente de 0. (para ser mais direto.. experimente digitar 0 logo no início do programa e tente inserir o sexo diferente de "M" e "F".

 

 

No aguardo.

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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!