Pascal/Estrutura de repetição: diferenças entre revisões

[revisão pendente][revisão pendente]
m (Foram revertidas as edições de 200.131.28.2 (disc) para a última revisão de 179.221.121.91)
readkey;
end.
</syntaxhighlight>{{AutoCat}}
= Exercícios =
01 Construa um programa que leia um conjunto de dados contendo altura e sexo (MASCULINO ou FEMININO) de N pessoas e calcule e escreva:
 
* a maior e a menor altura do grupo e de quem é esta altura ( Se HOMEM ou MULHER )
* a média de altura entre as mulheres
* O número de homens e a diferença percentual entre estes e as mulheres
* Critique as variáveis onde for necessário
 
Resolução:
<syntaxhighlight lang="pascal">
program alturamf;
uses CRT;
var
quant,cont,cont_m,cont_f:integer;
sexo,sme_alt,sma_alt:string;
alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real;
begin
{inicializa as variáveis}
cont_m := 0;
cont_f := 0;
alt_menor := 10;
alt_maior := 0;
soma_alt := 0;
writeln('Qual a quantidade de pessoas?');
readln(quant);
while quant<1 do {obriga a quantidade de pessoas ser positiva}
begin
writeln('Quantidade inválida! Digite uma quantidade maior que 1!');
readln(quant);
end;
for cont:=1 to quant do
begin
writeln('Qual o sexo da ',cont,'o pessoa?<m> masculino ou <f> feminino');
readln(sexo);
while (sexo<>'m') and (sexo<>'f') do
begin
writeln('Sexo inválido! Digite <m> para masculino ou <f> para feminino!');
readln(sexo);
end;
writeln('Qual a altura da ',cont,'o pessoa?');
readln(alt);
while (alt<0 2) or (alt>2 5) do {obriga uma altura válida}
begin {repete até a altura ser válida}
writeln('Altura inválida! Digite uma altura entre 0 2 e 2 5!');
readln(alt);
end;
if alt<alt_menor then {testa a menor altura}
begin
alt_menor:=alt; {guarda a menor altura}
sme_alt:=sexo; {guarda o sexo da menor altura}
end;
if alt>alt_maior then {testa a maior altura}
begin
alt_maior:=alt; {guarda a maior altura}
sma_alt:=sexo; {guarda o sexo da maior altura}
end;
if sexo='m' then {testa se o sexo e m}
cont_m:=cont_m+1; {conta a quantidade de homens}
else
begin
cont_f := cont_f+1; {conta a quantidade de mulheres}
soma_alt := soma_alt+alt; {soma a altura feminina}
end;
end ;
clrscr;
writeln('Resultado:');
write('A maior altura é: ',alt_maior:2:2,'m de um');
if sma_alt='m' then writeln(' homem')
else writeln('a mulher');
writeln('A média de alturas entre as mulheres é :',soma_alt/cont_f:2:2);
writeln('o número de homens é: ',cont_m:3);
write('A diferença percentual entre homens e mulheres é: ');
dif:=(cont_m/quant)*100-(cont_f/quant)*100;
if dif>0 then write(dif:2:2,'% a mais de homens');
else write(abs(dif):2:2,'% a mais de mulheres');
readkey;
end.
</syntaxhighlight>
 
{{AutoCat}}