Ir ao conteúdo
  • Cadastre-se

VisualG Usando Escolha e Se


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

   Boa tarde pessoal. Estou com uma duvida em um alg que montei no visualg.

   Estou usando o escolha para montar uma pesquisa, contudo, não consigo fazer uma soma de certos requisitos, ex: somar somente quem tem olhos verdes E cabelo louro.

   Quando coloco olhos verdes com qq outro cabelo ou qq cor de olho com cabelos louros ele também soma... o comando "se (xxxx) e (xxx) entao" não está dando certo.

   Gostaria de saber o que estou fazendo de errado...

   Abaixo segue meu alg:

   Desde já agradeço a ajuda. Abraços

*utilizei o botao CODE mas ficou tudo em P&B

var
   sexo, resp: Caractere
   cont, idade,idadepesq, vercab, maior, o, verdes, azuis, cast, c, cablou, cabpr, cabcast: Inteiro
inicio

   repita
      limpatela
      cont <- cont+1
      Escreval("Pesquisa")
      Escreval("sexo: [m/f]")
      leia(sexo)
      Escreval("Idade: ")
      leia(idade)
      Escreval("Cor do olhos:")
      Escreval("1 - azuis")
      Escreval("2 - verdes")
      Escreval("3 - castanhos")
      leia(o)
      Escolha o
      Caso 1
         azuis <- azuis+1
      Caso 2
         verdes <- verdes+1
      Caso 3
         cast <- cast+1
      fimescolha

      Escreval("Cor do cabelo:")
      Escreval("4 - louro")
      Escreval("5 - preto")
      Escreval("6 - castanhos")
      leia(c)
      Escolha c
      Caso 4
         cablou <- cablou+1
      Caso 5
         cabpr <- cabpr+1
      Caso 6
         cabcast <- cabcast+1
      fimescolha

      escreva("Cadastrar outro: [s/n]")
      leia (resp)

      Se (idade > maior) entao
         maior <- idade
      fimse
      Se (sexo = "f") e (idade >= 18) e (idade <= 35) entao
         idadepesq <- idadepesq + 1
      fimse
      Se (verdes >= 1) e (cablou >= 1) entao
         vercab <- vercab + 1
      fimse

   ate(resp="n")

   Escreval("Maior idade: ", maior)
   Escreval("Mulheres entre 18 e 35 anos: ", idadepesq)
   Escreval("Olhos verdes e cabelo louro: ", vercab)
   Escreval("Total de pessoas: ", cont)

fimalgoritmo

 

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

@Renato Alem     para ficar colorido você pode usar a linguagem c / c++ / c#  no botão do tipo de linguagem

1805450701_tipodelinguagem.thumb.JPG.96287df1ac07c9e06568a59657c9a8b0.JPG

e essa parte aqui , poderia ser assim  :

Se ( o = 2) e (c = 1) entao  // aqui é a variável que pegou o dado
  vercab <- vercab + 1
fimse
ate(resp="n")
escreval("Maior idade -----------------: ",maior    )

 

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

  • Membro VIP
  • Solução

Só complementando:

 

Sobre:

16 horas atrás, Renato Alem disse:

Estou usando o escolha para montar uma pesquisa, contudo, não consigo fazer uma soma de certos requisitos, ex: somar somente quem tem olhos verdes E cabelo louro.

 

 

Você fez:

16 horas atrás, Renato Alem disse:

      se (verdes >= 1) e (cablou >= 1) entao
         vercab <- vercab + 1

 

Se você quer verificar os dados do entrevistado atual, você precisaria pegar esses dados.. Você apenas confundiu e usou o "total de entrevistados com olhos verdes" e o "total de entrevistados com cabelos louros", em vez usar a "cor do olho do entrevistado" e a "cor do cabelo do entrevistado", respectivamente. No caso podendo ficar:

 

10 horas atrás, devair1010 disse:

se (o = 2) e (c = 1) entao  // aqui é a variável que pegou o dado
  vercab <- vercab + 1

 

 

Obs.: a "id" da cor do cabelo seria 4, e não 1.

 

Adendo:

Sugeriria dar uma melhorada nas definições das nomenclaturas das variáveis. A recomendação seria deixar com termos mais sugestíveis... meio que lendo o seu nome, já ter uma ideia para que ela serve. Ex.:

var
   sexo :caractere
   idade :inteiro
   idCorOlho :inteiro
   idCorCabelo :inteiro
   
   maiorIdade :inteiro
   qtdFemEntre18e35 :inteiro
   qtdOlhosVerdes, qtdOlhosAzuis, qtdOlhosCastanhos :inteiro
   qtdCabelosLouros, qtdCabelosPretos, qtdCabelosCastanhos: inteiro
   qtdOlhosVerdesCabelosLoiros :inteiro

   cont :inteiro

 

Outro dica interessante é utilizar o conceito de camelCase (ou mais especificamente o lowerCamelCase).

 

Nesse contexto, o código citado mais acima ficaria com algo como:

se (idCorOlho = 2) e (idCorCabelo = 4) entao
  qtdOlhosVerdesCabelosLoiros <- qtdOlhosVerdesCabelosLoiros + 1

Perceba como fica mais objetivo... mesmo se fosse um código isolado (que não está num tópico de um fórum), daria para suporte mais facilmente o que está fazendo.

 

Se quiser ainda mais incrementar, poderia ser algo como:

se (idCorOlho = OLHO_VERDE) e (idCorCabelo = CABELO_LOIRO) entao
  qtdOlhosVerdesCabelosLoiros <- qtdOlhosVerdesCabelosLoiros + 1

Sendo que OLHO_VERDE e CABELO_LOIRO declarados como constantes, e sendo definidos respectivamente com os seus valores  (2 e 4).

 

Obs. 2: o código do cabelo poderia começar do 1 sem problema... não precisa iniciar a partir do fim do outro, pois são coisas isoladas..

 

@Renato Alem, por favor, poste o enunciado completo do problema... que aí poderíamos aproveitar para verificar se o código está no caminho certo (seguindo o que foi "ordenado" para ser feito pelo enunciado).

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

@devair1010

11 horas atrás, devair1010 disse:

@Renato Alem     para ficar colorido você pode usar a linguagem c / c++ / c#  no botão do tipo de linguagem

1805450701_tipodelinguagem.thumb.JPG.96287df1ac07c9e06568a59657c9a8b0.JPG

e essa parte aqui , poderia ser assim  :


Se ( o = 2) e (c = 1) entao  // aqui é a variável que pegou o dado
  vercab <- vercab + 1
fimse
ate(resp="n")
escreval("Maior idade -----------------: ",maior    )

 

Olá @devair1010, farei assim da próxima vez, obrigado. Acontece que quando estava testando as linguagens, o HTML foi o que ficou mais colorido na visualização, mas depois ficou desse jeito. Mas farei o C da próxima vez. Obrigado.

adicionado 50 minutos depois

.

.

.

@Simon Viegas

Cara, sensacional suas colocações, muito obrigado pelas dicas. Fiquei um tempão mudando diversos comandos e variáveis e a resposta é a mais simples... Navalha de Occam SEMPRE...hehehehe

Segue o enunciado do problema:

 

 Foi realizada uma pesquisa de algumas características físicas da população de uma certa região, a qual coletaram os seguintes dados referentes a cada habitante para serem analisados:
- sexo (masculino e feminino)
- cor dos olhos (azuis, verdes ou castanhos)
- cor dos cabelos (louros, castanhos, pretos)
- idade
Faça um algoritmo que determine e escreva:
a) a maior idade dos habitantes;
b) a quantidade de indivíduos do sexo feminino cuja idade está entre 18 e 35 anos, inclusive;
c) a quantidade de indivíduos que tenham olhos verdes e cabelos louros;
O final do conjunto de habitantes é reconhecido pelo valor -1 informado como idade.***

*** este tópico estou tentando escrever -1 ou fim em idade e não consigo finalizar. Por isso estou utilizando (resp="N")

 

Mais uma vez agradeço muito a ajuda. 

  • Curtir 1
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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!