Ir ao conteúdo
  • Cadastre-se

codigo Pascal fazer a maior e menor idade.


Ir à solução Resolvido por Fabio Aragao,

Posts recomendados

Pessoal, Estou com duvida nesta questão.

Eu não consigo fazer a maior e menor idade.

Program Pzim ;type registro = record                  nome : string;		  idade : integer;                end;var vetor : array [1..5] of registro;    i, maior, menor, soma, menoridade, maioridade : integer;    media : real;    nomemenor, nomemaior : string;Beginmenoridade := 0;maioridade := 0;   for i := 1 to 5 do     begin	write( 'Digite o nome da pessoa: ' ) ;         readln( vetor[i].nome ) ;         write( 'Digite a idade da pessoa: ' ) ;         readln( vetor[i].idade ) ;	writeln(  ) ;	soma := soma + vetor[i].idade;		  if (vetor[i].idade > menoridade) then	  begin  	   menoridade := vetor[i].idade;	   nomemenor := vetor[i].nome;	  end;    	  							  if (vetor[i].idade > maioridade) then	   maioridade := vetor[i].idade;					  	end;	 	 media := soma / 5;	 	 maior := vetor[1].idade;	 menor := vetor[1].idade;	 	 for i := 2 to 5 do	   begin		    if ( vetor[i].idade > maior ) then		    writeln( 'Quem tem idade maior que a da primeira pessoa ?: ', vetor[i].nome ) ; 	   end;writeln(  ) ; 	 	 for i := 1 to 5 do	   begin		    if ( vetor[i].idade > media ) then		    writeln( 'Quem tem idade maior que a média de todas as idades ?: ', vetor[i].nome ) ; 		 end;		 writeln(  ) ; 	  		 writeln( 'A pessoa com a menor idade é: ', nomemenor ) ; 		 writeln( 'A pessoa com a maior idade é: ', nomemaior ) ; End.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Fabio Aragao

Problema comum entre a maioria das pessoas.

Se você precisa achar a idade menor, como você vai definir ela como 0? Nunca irá sair de zero, a não ser que defina uma idade negativa, não é mesmo?

 

O mais correto é você guardar nessas duas variáveis a primeira entrada de dados 'if (for == 1)'. E nas demais, fazer a comparação normalmente.

Link para o comentário
Compartilhar em outros sites

  • Solução

Bom dia pessoal.... depois das dicas dos mestres @Math.Pi e @Simon Viegas o codigo foi alterado e está funcionando

Segue abaixo o codigo funcional.

Program Pzim ;type registro = record                  nome : string;		  idade : integer;                end;var vetor : array [1..5] of registro;    i, maior, menor, soma, menoridade, maioridade : integer;    media : real;    nomemenor, nomemaior : string;Beginmenoridade := 199;maioridade := 0;   for i := 1 to 5 do     begin	write( 'Digite o nome da pessoa: ' ) ;         readln( vetor[i].nome ) ;         write( 'Digite a idade da pessoa: ' ) ;         readln( vetor[i].idade ) ;	writeln(  ) ;	soma := soma + vetor[i].idade;				  	if (vetor[i].idade < menoridade) then	   begin  	     menoridade := vetor[i].idade;	     nomemenor := vetor[i].nome;	   end;    								if (vetor[i].idade > maioridade) then	   begin	     maioridade := vetor[i].idade;	     nomemaior := vetor[i].nome;	   end;    					       end;	 	 media := soma / 5;	 	 maior := vetor[1].idade;	 menor := vetor[1].idade;	 	 for i := 2 to 5 do	   begin		if ( vetor[i].idade > maior ) then		writeln( 'Quem tem idade maior que a da primeira pessoa ?: ', vetor[i].nome ) ; 	   end;writeln(  ) ; 	 	 for i := 1 to 5 do	   begin	    if ( vetor[i].idade > media ) then	    writeln( 'Quem tem idade maior que a média de todas as idades ?: ', vetor[i].nome ) ; 	   end;writeln(  ) ; 	  	 writeln( 'A pessoa com a menor idade é: ', nomemenor ) ; 	 writeln( 'A pessoa com a maior idade é: ', nomemaior ) ; End.
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.
 
3 pontos que podem ser vistos:  (qualquer coisa deixa essa cópia separada e tenta fazer uma outra)

1) Na opção "'Quem tem idade maior que a da primeira pessoa ?" você colocou para exibir a frase para cada ocorrência... acho desnecessário;

2) Ao verificar qual é a menor ou menor idade, você poderia apenas armazenar a posição no registro, e não os dados em si... Mas ai, não daria para iniciar as variável com um valor (199 e 0, já que agora seria uma posição), seria mais prático fazer como Math.Pi sugeriu... no caso atribuindo a primeira posição como sendo o menor e maior... e ajustar o restante...

Já começaria ajustando as variáveis:

posMaior, posMenor, posMaiorIdade e posMenorIdade :byte  //ou integer mesmo!

Por ai vai...

3) Se atentar com a identação!!!
O código deve SEMPRE está bem identado! O segredo é já programar identado.. se mexeu e precisou realinhar, realinha logo!!! Não deixe para identar depois de pronto!!!  (diferente por exemplo de um trabalho escrito no Word, que poderia de boa deixar para formatar depois).. com o tempo se acostuma.

No meu padrão, ficaria assim:

program Pzim;type   registro = record                nome :string;                idade:integer;              end;var   vetor :array [1..5] of registro;   i,   soma       :integer;   menor,   menorIdade,   maior,   maiorIdade :integer;   media      :real;   nomeMenor,   nomeMaior  :string; //não necessariamente precisa separar por linhas, pode ficar um no lado do outro//apenas é uma sugestão! Acho mais organizado e facilita caso queira deixar um comentário para cada variávelbeginmenoridade:=199;maioridade:=0;for i := 1 to 5 do  begin  write('Digite o nome da pessoa : '); readln(vetor[i].nome);  write('Digite a idade da pessoa: '); readln(vetor[i].idade);  writeln;  soma:=soma+vetor[i].idade;   if (vetor[i].idade < menoridade) then    begin      menorIdade:=vetor[i].idade;    nomeMenor :=vetor[i].nome;    end;  if (vetor[i].idade > maioridade) then    begin    maiorIdade := vetor[i].idade;    nomeMaior := vetor[i].nome;    end;  end;media:=soma/5;	 maior:=vetor[1].idade;menor:=vetor[1].idade;for i := 2 to 5 do  if (vetor[i].idade > maior) then    writeln( 'Quem tem idade maior que a da primeira pessoa ?: ', vetor[i].nome ) ; writeln;for i := 1 to 5 do  if ( vetor[i].idade > media ) then    writeln( 'Quem tem idade maior que a média de todas as idades ?: ', vetor[i].nome ) ; writeln;writeln('A pessoa com a menor idade é: ', nomemenor);writeln('A pessoa com a maior idade é: ', nomemaior);end.

Obs.: O principal ponto que reforço é sobre o alinhamento lateral!!! Pular linha para destacar os "blocos" ou "partes" do código, não tem problema! Mas claro que seguindo sempre um padrão lógico...

Obs. 2: Veja que no "meu" padrão deixo as linhas entre o begin/end na mesma direção deles... já a maioria também identa (como no seu caso)!!! Isso não importa tanto, mas sim que tudo fique com a mesma "regra".


Veja um ponto sobre o alinhamento lateral:

Beginmenoridade := 199;maioridade := 0;   for i := 1 to 5 do     begin       write( 'Digite o nome da pessoa: ' ) ;       readln( vetor[i].nome ) ;

Esse for teria que começar na mesma direção do maioridade... não tem porque ter identado.


***

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