Ir ao conteúdo
  • Cadastre-se

Algoritmo Pascal com for


Edna Aparecida

Posts recomendados

Preciso de ajuda com o exercicio abaixo sendo:

Some a idade de 10 pessoas e apresente a soma, a maior e a menor idade digitada. o exercicio mostra a soma, porém a menor e maior idade não mostra, ou apresenta zeros ou então pega a ultima idade digitada.

eu fiz de duas maneiras e mesmo assim não deu certo.

1-

program idade_me_ma_for;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
idade_maior, idade_menor,idade,cont:integer;
soma:real;

begin

for cont:= 1 to 10 do

begin
writeln ('Digite a idade');
readln(idade);
soma:=soma + idade;
end;
begin
idade_menor:=idade;
idade_maior:=idade;
end;
begin

if idade < idade_menor then
begin

idade_menor:=idade;
end;


if idade > idade_maior then
begin
idade_maior:=idade;
end;


writeln ('a menor idade e:',idade_menor);
writeln ('a maior idade e:',idade_maior);



begin
writeln('a soma das idade e:', soma:2:2);
writeln ('Tecle enter para sair');
readln;
end;
end;

end.
2-
program idade_me_ma_for;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
idade_maior, idade_menor,idade,cont:integer;
soma:real;

begin

for cont:= 1 to 10 do

begin
writeln ('Digite a idade');
readln(idade);
soma:=soma + idade;
end;

begin

if idade < idade_menor then
begin

idade_menor:=idade;
end;


if idade > idade_maior then
begin
idade_maior:=idade;
end;


writeln ('a menor idade e:',idade_menor);
writeln ('a maior idade e:',idade_maior);



begin
writeln('a soma das idade e:', soma:2:2);
writeln ('Tecle enter para sair');
readln;
end;
end;

end.

:confused:

Link para o comentário
Compartilhar em outros sites

Entendo somente há uma diferença o primeiro é de matriz este é somente de codigo de repetição neste caso só apresenta um for.

Porém ele não apresenta os valores até sei que entre um begin e end tem um erro, mais não estou enchergando infelizmente. Eu fiz um igual com repeat e funcionou a não ser que ele não funcione com for. De qualquer maneira estou agradecida.

Link para o comentário
Compartilhar em outros sites

Entendo somente há uma diferença o primeiro é de matriz este é somente de codigo de repetição neste caso só apresenta um for.

Dá pra fazer com for com certeza. Não muda se é matriz, ou não, o negócio é que voce precisa pegar o menor valor, e pra isso voce precisa "lembrar" quais foram os numeros anteriores, e em nenhum lugar voce está fazendo essa memória (exatamente como no tópico passado).

Cada vez que entra no loop, um valor é atribuido a mesma variável, então ela perde o valor antigo e fica só com o novo. Sem ter o antigo em lugar nenhum, voce não tem como saber se o novo é maior ou menor que o antigo. O que está ocorrendo é algo mais ou menos assim:



1) Primeira idade informada: Idade = 13;

2)Segunda idade informada: Idade = 25;
//perceba que voce não tem como mais saber que o valor da idade era 13, voce só sabe que a idade atual é 25. voce não sabe se essa idade é maior ou menor que a primeira idade, simplesmente porque voce não tem mais o valor da primeira idade em lugar nenhum, voce substitui o lugar onde voce tinha salvo o valor 13 pelo valor 25.

3) Terceira idade informada: Idade = 17;
//Agora voce não sabe mais que a primeira idade era 13 e a segunda 25, voce só sabe a idade atual.

.
.
.

10) Décima idade informada: Idade = 26;
//voce só tem essa idade salva, aí voce fala que Idade_menor é igual a 26, e Idade_maior também é 26.

Percebeu? Cada vez que voce recebe uma idade, voce perde a idade anterior, então no final voce só vai ter a ultima.

Pra evitar isso, ou voce cria uma variável diferente para cada uma das 10 idades (uma variável para cada idade, tipo: Idade1, Idade2 e etc..), ou então cada vez que voce receber um valor de idade, voce verifica na mesma hora (e não depois de receber todas) se esse valor é maior ou menor que os maiores e menores valores recebidos até o momento, se for, voce atribui esse valor às variáveis Idade_menor ou Idade_menor. Pra deixar mais claro, voce tem que colocar o código dentro do for, e não fora dele como está agora.

No tópico anterior eu resolvi pra voce esse mesmo problema, dê uma lida lá e tente entender o que está acontecendo, e como eu fiz pra contornar o problema.

Link para o comentário
Compartilhar em outros sites

Boa noite,

Sou um iniciante em programação,

fiz e acho q ta certo, confere ai:

e como o Ghost Killer falou acima é mais ou menos assim:

program idade_me_ma_for;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

idade_maior, idade_menor,idade,cont:integer;

soma:real;

begin

idade_menor:=1000;

idade_maior:=0;

for cont:= 1 to 3 do

begin

writeln ('Digite a idade');

readln(idade);

if idade < idade_menor then

idade_menor:=idade;

if idade > idade_maior then

idade_maior:= idade;

soma:=soma + idade;

end;

begin

writeln('a menor idade é: ', idade_menor);

writeln('a maior idade é: ', idade_maior);

writeln('a soma das idade e: ', soma);

writeln ('Tecle enter para sair');

readln;

end;

end.

Link para o comentário
Compartilhar em outros sites

A ideia é que ela tentasse entender, senão toda vez ela vai voltar a cometer o mesmo erro. A velha história de dar o peixe e ensinar a pescar.

No tópico que eu citei lá em cima, ela cometeu esse errinho, e agora cometeu o mesmo, então tentei explicar melhor o problema.

Boa ideia...

Mostrei logo o problema, pois, como já citei, sou iniciantes e estou pegando esses problemas básicos para treinar.

não comparando a Edna com uma borboleta, mas, neste caso, fiz como o cara que cortou o casulo da borboleta e acabou deixando-a aleijada...

Percebi o truque, e servirá de lição para a próxima.

Falou...

Link para o comentário
Compartilhar em outros sites

Boa ideia...

Mostrei logo o problema, pois, como já citei, sou iniciantes e estou pegando esses problemas básicos para treinar.

não comparando a Edna com uma borboleta, mas, neste caso, fiz como o cara que cortou o casulo da borboleta e acabou deixando-a aleijada...

Percebi o truque, e servirá de lição para a próxima.

Falou...

Eu consegui resolver conforme a explicação é que não deu para responder e quando postei a resposta hoje não sei porque motivo não salvou desculpem. Não quero causar transtorno. Preciso continuar aprendendo aqui. Pois tenho aqui como um curso online.

Obrigada mesmo.

Edna

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!