Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Não estou achando a solução para esse problema


Posts recomendados

Program Pzim ;
Var
i, resp, conts, contn, contm, contf, masc, fem: integer;
sexo: char;
pcts, pctn: real;
Begin
  conts:= 0;
  contn:= 0;
  contm:= 0;
  contf:= 0;
  
  for i:= 1 to 4 do
  Begin
    clrscr;
    writeln ('Informe seu sexo: ');
    readln (sexo);
    
    if (sexo = 'm') or (sexo = 'M') then
    Begin
      contm:= contm + 1;
      writeln ('Você gostou do produto? (1- sim, 2- não): ');
      readln (resp);
      
      if (resp = 1) then
      Begin
        conts:= conts + 1;
      End
      
      else
      
      if (resp = 2) then
      Begin
        masc:= masc+1;
        contn:= contn + 1;
      End;
    End
    
    else
    
    if (sexo = 'f') or (sexo = 'F') then
    Begin
      contf:= contf+1;
      writeln ('Você gostou do produto? (1- sim, 2- não): ');
      readln (resp);
      
      if (resp = 1) then
      Begin
        fem:= fem+1;
        conts:= conts + 1;
      End
      
      else
      
      if (resp = 2) then
      Begin
        contn:= contn + 1;
      End;
    End;
    
    
  End;
  
  pcts:= (fem/conts)*100;
  
  
  pctn:= (masc/contn)*100;
  
  writeln ('Pessoas que responderam sim: ', conts);
  writeln ('Pessoas que responderam não: ', contn);
  writeln ('Porcentagem de pessoas de sexo feminino que responderam sim: ', pcts, '%');
  writeln ('Porcentagem de pessoas do sexo masculino que responderam não: ', pctn, '%');
end.

ele está meio certo, o problema é que quando coloco tipo 3 do sexo masculino sim e 1 do sexo feminino não,a porcentagem zera!!!!! 

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

  • Membro VIP
21 horas atrás, Jefferson Alan disse:

ele está meio certo, o problema é que quando coloco tipo 3 do sexo masculino sim e 1 do sexo feminino não,a porcentagem zera!!!!!  

 

Você poderia criar validações para cada leitura. Ex.:

  repeat
    writeln('Informe seu sexo: ');
    readln(sexo);
    sexo := UpCase(sexo);
  until (sexo = 'M') or (sexo = 'F');

 

Obs.: o uso UpCase() não faz parte da validação em si. Apenas é um recurso extra que poderia ou não ser utilizado no seu código.

 

Obs. 2: isso é só uma base... pode ir ajustando da forma que desejar.

 

 

ADENDO:

Outra forma:

  repeat
    write  ('Informe seu sexo: ');
    sexo := UpCase(ReadKey);
    writeln(sexo);
    if not (sexo in ['F', 'M']) then
      writeln('Favor inserir "F" ou "M"');
  until (sexo in ['F', 'M']);

 

Nesse exemplo, apenas muda que basta teclar a resposta que ele já "captura" para variável. Outro ponto (que não tem relação com essa alteração anterior) é que é possível verificar se uma variável está "contida dentro de um conjunto de opções" (comando in). É apenas uma forma mais "simples" ou "elegante" de fazer o if anterior.

 

PS: perceba que citei vários conceitos distindos: repetir até ter um valor válido; tornar a letra maiúscula; comando in; ler apenas com uma tecla... são coisas totalmente distintas, mas que podem ser associadas para ter um comportamento que desejo/organização do código. Por exemplo: se não quiser utilizar o UpCase(), poderia inserir o 'f' e 'm' na lista... por aí vai.

 

No aguardo.

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