• 0
Sign in to follow this  
gnr_ssa

alguém Ajudinha Com Esse Algoritimo ?

Question

fazer um programa para ler o nome o sexo e a idade de pessoas

OBS:

1- o programa so devera ser finalizado quando o usurio digitar sim no teclado

2- antes de ser finalizado o programa devera mostrar:

- quantas pessoas foram digitadas

- a quantidade e percentual de pessoas do sexo masculino

- a quantidade o percentual de pessoa do sexo feminino

- a quantidade e o percentual de pessoas menores de 18 anos

----------------------------------------------------------------------------------------------------

alguém ajuda aí no que está errado, acho que calculo do percentual está errado ou e assim mesmo ???

outra coisa quando digio SIM ele não sai de primeira, pede pra digitar as dados novamentes de idade e sexo para depois mstrar resultado.

seila alguém pode dizer onde tou errando aí ??

obrigado.

program IBGE;

uses crt;

var

idade,totalpessoas,totalmasculino,totalfeminino,menoridade: integer;

percsexom,percsexof,percmidade: real;

nome,sexo: string;

begin clrscr;

nome := 'gato';

totalpessoas:=1;

totalmasculino:=1;

totalfeminino:=1;

menoridade:=1;

percsexoM:=0;

percsexof:=0;

percmidade:=0;

while nome <> 'sim' do begin clrscr;

writeln ('Digite SIM para sair do programa e mostrar resultado');

writeln ('Digite o nome das pessoas');

readln (nome);

totalpessoas := totalpessoas+1;

writeln ('Digite o sexo M para masculino e F para Feminino');

readln (sexo);

if (sexo = 'M') then

totalmasculino := totalmasculino+1

else

totalfeminino := totalfeminino+1;

writeln ('digite sua idade');

readln (idade);

if idade < 18 then begin

menoridade := menoridade+1;

end;

percsexoM := (totalmasculino / totalpessoas) * 100;

percsexoF := (totalfeminino / totalpessoas) * 100;

percmidade := (menoridade / totalpessoas) * 100;

end;

writeln ('A quantidade de pessoas ‚: ',totalpessoas);

writeln ('A quantidade de pessoas do sexo masculino ‚ ',totalmasculino);

writeln ('A quantidade de pessoas do sexo femino ‚ ',totalfeminino);

writeln ('A quantidade de pessoas menor de 18 anos ‚ ',menoridade);

writeln ('Percentual de pessoas do sexo masculino ‚ ',percsexoM);

writeln ('Percentual de pessoas do sexo femino ‚ ',percsexoF);

writeln ('Percentual de pessoas menores de 18 anos ‚ ',percmidade);

readln;

end.

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

primeiro: deveria adicionar uma verificação do nome logo após o "readln(nome)"

segundo: o cálculo de percentual segue a regra de três simples abaixo

100 -> total

x -> valor

logo

x = (valor * 100) / total

onde x é o percentual do valor em relação ao total. A precedência de operadores de multiplicação e divisão pode ser considerada a mesma, portanto, sua fórmula está correta.

Abraços

Edited by CSML sistemas

Share this post


Link to post
Share on other sites
  • 0
primeiro: deveria adicionar uma verificação do nome logo após o "readln(nome)"

segundo: o cálculo de percentual segue a regra de três simples abaixo

100 -> total

x -> valor

logo

x = (valor * 100) / total

onde x é o percentual do valor em relação ao total. A precedência de operadores de multiplicação e divisão pode ser considerada a mesma, portanto, sua fórmula está correta.

Abraços

valeu man

mas não entendi ainda, como deve ser feita essa verificação logo apost readln(nome) para o program mostrar o resultado.

Share this post


Link to post
Share on other sites
  • 0

A verificação após o readln(nome) é para evitar que, após o usuário informar o string de escape "sim", continuem sendo solicitados outros dados... Ficaria algo como

...

readln (nome);

if (nome = 'sim') then continue;

totalpessoas := totalpessoas+1;

...

Dessa forma, caso seja informado "sim" para o nome, a execução é passada para a próxima iteração do "while", que, obviamente, concluirá o loop...

;)

Share this post


Link to post
Share on other sites
  • 0

Mesmo assim quando digita SIM, o programa conta como um nome recebido pede a idade e sexo, e depois que finaliza

como que faz pra quando digitar sim já mostrar direto o resultado ?

Share this post


Link to post
Share on other sites
  • 0

Cara, o "continue" não está saltando para a próxima iteração??? Seria esta a definição deste comando...

Bom, então põe "break" no lugar de "continue"... na verdade, é até o mais correto.

O comando "break" encerra o loop.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this