Ir ao conteúdo
  • Cadastre-se

Opções de uso no programa


Posts recomendados

Por quê não consigo iniciar meu programa com "2"?

 

Ta ai.

 

Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou não de um novo produto lançado. Para isso forneceu o sexo do entrevistado e sua resposta (sim ou não). Sabendo que foram entrevistadas 10 pessoas, faça um algoritmo que calcule e imprima:

 

a)      O número de pessoas que responderam sim;

B)      O número de pessoas que responderam não;

c)      O número de mulheres que responderam sim;

d)      A % de homens que responderam não entre todos os homens analisados;

program oo;uses wincrt;varSexo,z:longint;x,y,Resposta, NumeroSim, NumeroNao,respm,respf: integer;Total,total2: real;beginx:=0;y:=0;z:=0;repeatwrite('Informe o sexo do entrevistado indicando 1 para Masculino e 2 para Feminino: ');readln(Sexo);write('O entrevistado gostou do produto? Informe 1 para SIM e 2 para NAO: ');readln(Resposta);if (sexo = 1) then beginrespm:= respm + 1endelse  if (sexo = 2) then beginrespf:= respf + 1;end;if Resposta = 1 then   beginNumeroSim:= NumeroSim + 1endelseNumeroNao:= NumeroNao + 1;if (sexo=2) and (resposta=1) then  beginy:= y + 1;z:= z +0;endelse if (sexo=1) and (resposta=2) then beginy:= y + 0;z:= z +1;endelse if (sexo=1) and (resposta=1) then beginy:= y + 0;z:= z + 0;endelse if (sexo=2) and (resposta=2) then beginy:= y + 0;z:= z + 0;end;total:= 100 div respm;total2:= total * z;x:= x + 1;until x = 10;writeln();writeln('O numero de entrevistados que respondeu SIM é:',NumeroSim);writeln('O numero de entrevistados que respondeu NAO é:',NumeroNao);writeln('o numero de mulheres que votaram sim é:',y);writeln('o a porcentagem de homens que votaram nao foi de:',total2:5:2,'%');delay(40000);end.

"2" que no caso seria feminino , ajuda também se me ensinar como poder arrumar isso ao invés de deixar 1/2 deixar fem/masc abraços!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá Leonardo

 

1) IDENTAÇÃO DE CÓDIGO

O primeiro ponto, isso numa orientação pessoal, chamo a atenção sobre a questão da identação. Sugiro que evite esses espaços entre as linhas, pois dificulta a visualização do código.

Outro questão é sobre a identação em si, mas como o código não estava com dentro da tag CODE aqui no fórum, não dá para eu saber como estava...

Abaixo tem um exemplo de como ficaria esse código com o meu¹ padrão de identação.

program oo;uses  //wincrt;  CRT;var  Sexo,z:longint;  x,y,Resposta, NumeroSim, NumeroNao,respm,respf: integer;  Total,total2: real;BEGINx:=0;y:=0;z:=0;repeat  write('Informe o sexo do entrevistado indicando 1 para Masculino e 2 para Feminino: ');  readln(Sexo);  write('O entrevistado gostou do produto? Informe 1 para SIM e 2 para NAO: ');  readln(Resposta);  if (sexo = 1) then begin    respm:= respm + 1  end  else    if (sexo = 2) then begin      respf:= respf + 1;    end;  if Resposta = 1 then begin    NumeroSim:= NumeroSim + 1  end  else    NumeroNao:= NumeroNao + 1;    if (sexo=2) and (resposta=1) then  begin    y:= y + 1;    z:= z +0;  end  else if (sexo=1) and (resposta=2) then begin    y:= y + 0;    z:= z +1;    end    else if (sexo=1) and (resposta=1) then begin      y:= y + 0;      z:= z + 0;      end      else if (sexo=2) and (resposta=2) then begin        y:= y + 0;        z:= z + 0;      end;  total:= 100 div respm;  total2:= total * z;  x:= x + 1;//until x = 10;until x = 3;writeln();writeln('O numero de entrevistados que respondeu SIM é:',NumeroSim);writeln('O numero de entrevistados que respondeu NAO é:',NumeroNao);writeln('o numero de mulheres que votaram sim é:',y);writeln('o a porcentagem de homens que votaram nao foi de:',total2:5:2,'%');Delay(40000);END.

1=Digo "meu", porque ele não é exatamente igual ao padrão utilizado po ai... basicamente difiro diferencio deixando o conteúdo do begin/end alinhado com os mesmo. (no geral, os programadores também dão uma identada).

 

 

2) PROBLEMA EM SI

 

Basicamente o erro inicial está no seguinte trecho:

total:= 100 div respm;

Veja que nessa linha está utilizando do div, e este comando utiliza do processo de "divisão", correto? mas ocorre que o tal do respm pode conter um "0"... e como é sabido, "não existe divisão por zero" (obs.: existir existe, mas o Pascal não aceita e dá erro e logo após fecha).

Então, você precisa tratar esse possível erro. Um exemplo de solução:

if respm<>0 then  total:= 100 div respm;

Deu para entender a ideia?

 

3) ELEMENTO NEUTO DA ADIÇÃO

De cara:

      z:= z + 0;

Isso não faz o menor sentido..  :D.  Acho que nem precisa explicar o que acontece quando se "soma-se zero" a algo né?

Simplesmente apague essas linhas.

 

4) ESTÁ FALTANDO ALGO

Nesse mesmo gancho dessas somas, verifiquei que em alguns ifs você colocou:

    y:= y + 0;    z:= z + 0;

Ué? então para que o if?  (já que não faz nada).

 

***

 

No aguardo.

Link para o comentário
Compartilhar em outros sites

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