Ir para conteúdo
Fórum CódigoFonte.net
mcastro01_12

Algoritmo Pascal (corrigir)

Recommended Posts

Preciso corrigir a soma, quero que a soma seja feita no final e não toda vez que eu digitar um valor maior que 18....socorro!!!!!!!!!!

 

 

 

program Project1;

Var
   Cont, Valor, Idade: Integer;
   Soma: Real;

begin
      Writeln('Digite a quantidade de idades que deseja');
     Readln(Valor);
     Idade:=0;
     Soma:=0;

     For Cont:= 1 To Valor Do

     Begin

        Writeln('Digite a Idade', Cont);
        Readln(Idade);

        Case Idade Of
        0..17: Soma:= 0;
        Else
        Begin

      Soma:=Soma + Idade;
      End;
      Writeln('A soma das idades e:', Soma:2:2);
     Readln;
     End;
   End;
 End.   

Compartilhar este post


Link para o post
Compartilhar em outros sites
fala ae brother blz !

Então vamos nessa, o algoritmo não está errado só nesse ponto, mas vamos trata-lo primeiro.
Para que você consiga digitar a primeira e as demais idades sem interrupções do sistema
terá que usar um IF, ele será responsável por garantir que não tenha interrupções na entrada de dados só isso.

 
Em relação ao outro erro é apenas porque ele é sobre escrito,exemplo no caso do o usuário digitar na idade um 
valor maior que dezessete e outro valor menor ou igual  a dezessete então a soma antes que tinha um valor 
esse valor será sobre escrito porque a soma é igualada a zero quando a idade varia de 0 a 17
para resolver, no lugar disso 0..17:soma := 0; coloque isso 0..17:; teste antes só com a correção do IF para 
entender melhor e copile  o código primeiro na sua cabeça assim irá melhorar a interpretação com o tempo
poderá prever erros acertos etc  até mais valeu. 
 
o código corrigido:
 
program ProjComentado;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
var
  cont,valor,idade: integer;
  soma: real;
begin
  soma := 0;
  idade := 0;
 
  WriteLn('Informe a quantidade de idades: ');
  ReadLn(valor);
 
  for cont := 1 to valor do
    begin
      WriteLn('Informe a idade', cont);
      ReadLn(idade);
 
      case idade of
        0..17:;
        else
          begin
            soma := soma + idade;
          end;
      end;
      if cont = valor then {Nesse IF  avalio eu se o ciclo está no fim ou não ou seja se avariável cont for igual ao valor quer dizer}
        begin              {que o ciclo está na ultima execução(o usuário já informou o necessário) e já poderá exibir a mensagem.}
          WriteLn('A soma das idades e ',soma:2:2);
          WriteLn('Pressione enter para sair');
          ReadLn; //permite que pressione enter para sair.
        end;
    end;
end.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...