Ir ao conteúdo
  • Cadastre-se

Questao Pascal


Dhomus

Posts recomendados

ae pessoal, sou novo nessa linguagem i estou aprendendo a apenas algumas semanas.

me deparei com uma questao, q me deixou meio incabulado i gostaria da ajuda de vocês... segue a questao

Criar um programa que solicite ao usuário o nome, idade e sexo de 5 pessoas e efetue o seguinte processamento:

1. A média das idades das pessoas do sexo feminino;

2. A média das idades das pessoas do sexo masculino;

3. A pessoa mais velha;

4. A pessoa mais nova;

bemmmmm...

fiz um pedaco do programa mas nao to conseguindo o resto, talvez tenha usado uma tecnica errada...

vou mandar o que tenho feito ate agora

Program Pzim ;

var Sexo, nome1, nome2:char;

i, idade1,idade2:integer;

media1, media2:real;

Begin

clrscr;

for i:=1 to 5 do

begin

writeln('digite seu sexo M ou F');

readln(sexo);

case sexo of

'm': begin

writeln('digite sua idade');

readln(idade1);

writeln('digite seu nome');

readln(nome1);

end;

'f': begin

writeln('digite sua idade');

readln(idade2);

writeln('digite seu nome');

readln(nome2);

end;

end;

media1:=media1+idade1/5;

media2:=media2+idade2/5;

end;

writeln('Media de idade do sexo masculino', media1:10:0);

writeln('Media de idade do sexo feminino', media2:10:0);

End.

nao to conseguindo a 3 i 4 letra.

vlwz ae desde

Link para o comentário
Compartilhar em outros sites

Visitante: tiagohb
 

boa noite,

dei uma olhada no seu fonte e fiz algumas alterações nele.

Program Pzim ;

uses crt;

var

nome, nomeMaior, nomeMenor : string;

sexo: string[1];

idade,idadeMaior,idadeMenor,contador, contadorM, contadorF: integer;

somaM,somaF,mediaM,mediaF:real;

Begin

clrscr;

idade:= 0;

idadeMaior:= 0;

idadeMenor:= 9999;

contador:= 0;

contadorM:= 0;

contadorF:= 0;

mediaM:= 0;

mediaF:= 0;

while contador < 5 do begin

contador:= contador + 1;

writeln('digite o nome');

readln(nome);

writeln('digite o sexo.M para masculino e F para feminino');

readln(sexo);

writeln('digite a idade');

readln(idade);

if (sexo = 'f') or (sexo = 'F') then begin

contadorF:= contadorF + 1;

somaF:= somAF + idade;

end

else begin

if (sexo = 'm') or (sexo = 'M') then begin

contadorM:= contadorM + 1;

somaM:= somaM + idade;

end

else begin

writeln('sexo invalido');

contador:= contador - 1;

end

end;

if idade > idadeMaior then begin

idadeMaior:= idade;

nomeMaior:= nome;

end;

if idade < idadeMenor then begin

idadeMenor:= idade;

nomeMenor:= nome;

end;

clrscr;

end;

if contadorM <> 0 then begin

mediaM:= somaM/contadorM;

writeln('media da idade masculina = ', mediaM:2:2);

end

else begin

writeln('media da idade masculina = 0');

end;

if contadorF <> 0 then begin

mediaF:= somaF/contadorF;

writeln('media da idade feminina = ', mediaF:2:2);

end

else begin

writeln('media da idade feminina = 0');

end;

writeln('pessoa mais velha: ',nomeMaior);

writeln('pessoa mais nova : ',nomeMenor);

repeat until keypressed;

End.

ja testei e esta atendendo a sua questao

qualquer duvida sobre o codigo é só falar

abraços

Link para o comentário
Compartilhar em outros sites

Olá Dhomus. eu fiz um programa que resolvia o que você mostrou, porém usei algumas estruturas que não sei se você conhece, para deixar o programa + caro e rápido(disso eu não tenho certeza :lol:).

segue o código abaixo:

Program novo;
uses crt;
type
form=record
nome:string[20];
idade:integer;
sexo:char;
end;
var
cadastro:array[1..5] of form;
i,j,f:integer;
mdmasculino,mdfeminino:real;
x:form;
Begin
clrscr;
for i:=1 to 5 do begin
Writeln('Cadastro',i);
write('Nome: ');
readln(cadastro[i].nome);
write('Idade: ');
readln(cadastro[i].idade);
write('Sexo (m/f): ');
readln(cadastro[i].sexo);
writeln(' ');
end;
mdmasculino:=0;
mdfeminino:=0;
j:=0;
f:=0;
for i:=1 to 5 do begin
if (cadastro[i].sexo='m')then begin
j:=j+1;
mdmasculino:=mdmasculino+cadastro[i].idade;
end
else begin
f:=f+1;
mdfeminino:=mdfeminino+cadastro[i].idade;
end;
end;
mdmasculino:=mdmasculino/j;
mdfeminino:=mdfeminino/f;
for i:=1 to 4 do begin
for j:=i+1 to 5 do begin
if (cadastro[i].idade<cadastro[j].idade) then begin
x:=cadastro[i];
cadastro[i]:=cadastro[j];
cadastro[j]:=x;
end;
end;
end;
writeln(' ');
writeln('A m‚dia da idade dos homens ‚: ',mdmasculino:10:0);
writeln('A m‚dia da idade das mulheres ‚: ',mdfeminino:10:0);
writeln('O mais velho(a) ‚: ',cadastro[1].nome);
writeln('O mais novo(a) ‚: ',cadastro[5].nome);
readkey;
End.

Esse código foi criado no turbo Pascal, caso não rode no pascal zim remova a linha 2 (uses crt;).

Caso você não entenda o que está escrito posta aqui que eu tento explicar.

sou novo também nessa linguagem e no ramo ;D

espero que tenha ajudado.

Link para o comentário
Compartilhar em outros sites

Tycaio, realmente ainda nao conheco essa estrutura, estou a pouco tempo aprendendo mas logo darei uma olhadinha.;)

tiagohb, valeu pela estrutura, mas, tipo, tenho olhado as apostilas q tenho i ainda nao consegui entender como funciona i para q esses contadores, você poderia explicar???

vlwz aos dois pela ajuda:D

Link para o comentário
Compartilhar em outros sites

tipo, quando se trata de estruturas de repetição(nesse caso while) é preciso um contador para controlar a quantidade de vezes que você gostaria que o proceso que está entre e estrutura de repetição(while...end;). Também foi usado nesses caso para contar quantas vezes foi lido um sexo masculino, e quantas vezes o sexo feminino(no caso contadorM e contadorF)para que ele posso fazer a média da idade dos 2 sexos, pois caso não exista contador e a idade total seja dividida por 5 sempre não vai dar a média certa, pois se você digitar 2 mulheres de 40 anos e 3 homens de 40 a média aritimética dos homens e das mulheres não vão ser 40, porque o total da idade dos homens e das mulheres vai ser dividido por 5 entendeu???

no caso, respondendo genericamente sua pergunta, os contadores, em qualquer programa, serve para você controlar algo que envolva repetição.

espero ter conseguido explicar xD

Link para o comentário
Compartilhar em outros sites

bemmmmmmm

nao 100%, mas deu pra saca alguma coisa...

valeu cara...

^^

vou dar uma estudada melhor em mais algumas apostilas

so mais uma coisa...

if idade > idadeMaior then begin

idadeMaior:= idade;

nomeMaior:= nome;

end;

if idade < idadeMenor then begin

idadeMenor:= idade;

nomeMenor:= nome;

porque utilizar esses indicadores ai

Link para o comentário
Compartilhar em outros sites

Visitante: tiagohb
 

bom...ja que você ainda esta começando vou tentar explicar tudo bem detalhado:

não sei se você ja aprendeu o comando while, se não aprendeu aprende agr

Essa estrutura de repetição while repete enquanto a condição for verdadeira. Caso a condição seja falsa, então a repetição será interrompida. Comando pode ser simples (uma instrução) ou composto (duas ou mais intruções) e a condição é uma expressão lógica

no caso do seu programa estava escrito que você teria q perguntar para somente 5 pessoas então eu criei uma variavel (contador)para contar ate 5(que no caso é as 5 pessoas que você irira pergutar nome, sexo e idade) .

e no meio da repeticao foi colocado os seguintes testes: se o sexo fosse feminino(f) ele entra no primeiro if, adiciona 1 para o um contador(contadorF que é usado para saber quantas pessoas do sexo feminino foram ""cadastradas"" e depois fazer a media feminina) soma a idade da pessoa na variavel somaF.

o segundo if tem a mesmo estrutura do primeiro só que é para o sexo masculino. E se o sexo for invalido aparece a msg ""sexo invalido"" e subtrai 1 do contador para que quando o sexo for invalid não conte como um valido e atrapalhe no calculo das medias.

logo apos ele entra em outro IF para saber a pessoa mais velha comaprando a idade ""lida"" com a variavel maior. se a idade lida for maior que o valor da variavel maior ele entra na condição, iguala maior com a idade e guarda o nome da pessoa.a rotinapara saber a pessoa mais nova é a mesmo q a da mais velha só a condição que muda(idade < menor).

saindo da repetição ele faz os calculos da media. Se o contadorF ou contadorM for igual a zero daria pau na divisao, então quando o contador é = zero eu ja mostro a msg de q aquela media é = a zero e mostra a pessoa mais nova e a pessoa mais velha.

Bom...ai esta..aushusahas...qse uma biblia..Oo

qualquer duvida é só avisar!!

Abraços

Link para o comentário
Compartilhar em outros sites

e isso ai...agora eu juro que eu vi um while no programa dele xD

essa parte é meio chatinha de aprender, mina turma teve muita dificuldade de aprender isso, porém assim que você aprende a lógica da estrutura você mata td ;D

nesse caso como ele explicou...contador conta quandas x você quer repitir determinada coisa, ou para contar alguma coisa.

É parecido com aquilo que agente aprende no primario, que antigamente os pastores usavam pedrinhas para contar ao rebanho...mesmo principio.

Link para o comentário
Compartilhar em outros sites

i lá venho eu novamente pedir um conselho de vocês...

voltei a estudar, i me deparei com um problema.....

Program Pzim ;

var contador, idade, idadeMaior, idadeMenor:integer;

nome:string;

Begin

contador:=0;

idadeMaior:=0;

idadeMenor:=9999;

clrscr;

contador:=contador+1;

while nome<>'fim' do

begin

write('digite o nome da pessoa');

read(nome);

writeln('digite a idade da pessoa');

readln(idade);

if idade>idadeMaior then

idadeMaior:=idade;

if idade<idadeMenor then

idadeMenor:=idade;

writeln('idade menor', idadeMenor);

writeln('idade maior', idadeMaior);

end;

readkey;

End.

ele quando le FIM, ainda continua pedindo a idade....

Link para o comentário
Compartilhar em outros sites

Tipo...assim, na programação, caracteres(letras nesse caso) tem valores diferentes...no casp o "f" maiúsculo é diferente de "f' minusculo...e assim vai..no seu caso, se você tiver digitenao qualquer coisinha diferente o laço vai continuar verdadeiro e assim continua repetendo...

nesse caso, o contador não é preciso...você só utliza ele caso queira delimitar quandidade de repetição ou algo parecido.

valeu ;D

Link para o comentário
Compartilhar em outros sites

Bom dia... Não conheço muito a linguagem, mas estou fazendo aula de pascal no meu curso. tem uma apostila completa na página de meu professor, o site é gelsonrei.googlepages.com, pode lhe ajudar, Não estou pegando muito bem esta parte de programação.

Espero que lhe ajude...

ae pessoal, sou novo nessa linguagem i estou aprendendo a apenas algumas semanas.

me deparei com uma questao, q me deixou meio incabulado i gostaria da ajuda de vocês... segue a questao

Criar um programa que solicite ao usuário o nome, idade e sexo de 5 pessoas e efetue o seguinte processamento:

1. A média das idades das pessoas do sexo feminino;

2. A média das idades das pessoas do sexo masculino;

3. A pessoa mais velha;

4. A pessoa mais nova;

bemmmmm...

fiz um pedaco do programa mas nao to conseguindo o resto, talvez tenha usado uma tecnica errada...

vou mandar o que tenho feito ate agora

Program Pzim ;

var Sexo, nome1, nome2:char;

i, idade1,idade2:integer;

media1, media2:real;

Begin

clrscr;

for i:=1 to 5 do

begin

writeln('digite seu sexo M ou F');

readln(sexo);

case sexo of

'm': begin

writeln('digite sua idade');

readln(idade1);

writeln('digite seu nome');

readln(nome1);

end;

'f': begin

writeln('digite sua idade');

readln(idade2);

writeln('digite seu nome');

readln(nome2);

end;

end;

media1:=media1+idade1/5;

media2:=media2+idade2/5;

end;

writeln('Media de idade do sexo masculino', media1:10:0);

writeln('Media de idade do sexo feminino', media2:10:0);

End.

nao to conseguindo a 3 i 4 letra.

vlwz ae desde

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para 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...