Ir ao conteúdo
  • Cadastre-se

Soma de Valores positivos


Posts recomendados

Estou com dúvida de como prosseguir um código (se é que comecei certo)

Eu preciso exibir a soma dos valores positivos entre 1 e 100.

O código, meu frankstein, que fiz ficou assim:

 

Program Exercico_28 ;
 var
 N, I, soma: Integer;
Begin
  Writeln ('-----------------------------');
  Writeln ('| Serão somados os inteiros |');
  Writeln ('| inteiros  entre 1 e 100   |');
  Writeln ('-----------------------------');
  
  I := 1;
  N := I + I;
  soma := N + I;
  
  While(soma <= 0) do
  begin
    Writeln('Digite somente números positivos!');
    Readln(soma);
  end;
  
  While(soma > 100) do
  begin
    Writeln ('Valores somados!');  
    Readln (soma);
  end;
End. 

Não preciso nem dizer que não funciona, não é? hehe

A minha dúvida é, o que devo corrigir?

Eu preciso simplesmente exibir as somas, nada mais.

Obrigado!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@danilo001    pelo enunciado acredito que seja isso que ele pede :

Program Exercico_28 ;
uses crt;
 var
 N, I, soma: Integer;
Begin
  i:=1;
  clrscr();
  Writeln ('-----------------------------');
  Writeln ('| Serão somados os inteiros |');
  Writeln ('| inteiros  entre 1 e 100   |');
  Writeln ('-----------------------------');
  for n:= 1 to 50 do
  begin
    writeln('numero ',i,' + numero ',i+1,' = ',i+i+1);
    i:=i+2;
  end;
  readln();
End.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @danilo001.
 

Em 14/05/2017 às 13:48, danilo001 disse:

Eu preciso exibir a soma dos valores positivos entre 1 e 100.

 

Então, a primeira coisa que precisamos fazer é entender o problema...   o enunciado já dá uma boa dica:

19 horas atrás, danilo001 disse:

A questão diz: "Exibir a soma dos números inteiros positivos do intervalo de um a cem."

 

Pelo que eu entendi, você precisa fazer a adição 1+2+3+4+5+6+7+...+98+99+100.  Correto? (só precisa ver se vai incluir o 1 e 100 ou não! Acho que vai)

 

Então, o que é isso? Se não me engano, matematicamente seria uma soma de uma PA (Progressão Aritmética).

 

Tendo (supostamente) entendido o problema, agora só partir para uma possível solução.

 

Por um momento esquecermos que deverá ser um algoritmo computacional, como você faria essa conta no papel ou na calculadora? Tente ver os passos que você seguiu ou seguiria e traduza para a linguagem de programação desejada...

 

Obs.: veja que a faixa de valores já é dada...:  "De 1 a 100"... não há necessidade de ler nada do usuário... só calcular e pronto.

 

No aguardo.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Oi,

Agradeço MUITO pela ajuda!

Meu código ficou assim:

Program Exercico_28 ;
 var                         // I = Número inteiro
 N, I: Integer;              // N = Soma
Begin
  Writeln ('-----------------------------');
  Writeln ('| Serão somados os inteiros |');
  Writeln ('| inteiros  entre 1 e 100   |');
  Writeln ('-----------------------------');
  
  I := 1;
  
  While(I <= 100) do
  begin
    N := N + I;
    I := I + 1;
  end;
  
  Writeln(N);
 
End. 

Sempre que executo ele, o valor final é diferente. Isso achei meio estranho.

Mas, mostrei ao meu professor e ele não apontou um erro.

 

Obs.: Os "writeln" que coloquei aqui no início, foi pra deixar mais "bonitinho" kk

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Foi isso mesmo... esses pequenos detalhes fazem muita diferença.

Uma última coisa, se eu quiser colocar pra pessoa pressionar uma tecla para repetir o programa, o que coloco?

Exemplo:

 

"Valor final: X

Deseja sair do programa? S ou N"

 

Se a pessoa desejasse ficar, o programa iria se repetir.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@danilo001    você precisaria colocar mais uma variável do tipo string e um repeat logo depois do primeiro begin, e inicializar a variável assim a := 'n'  e lá no final  depois do Writeln(N);   você colocaria  :

writeln('deseja sair do programa ?  S/N');
readln ();
until ( a='s' ) ;

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @danilo001.

 

13 horas atrás, danilo001 disse:

Foi isso mesmo... esses pequenos detalhes fazem muita diferença.

Qual o compilador que você usa?

 

Então, como recomendação, de fato é necessário inicializar o N, mas no Pascal, ao iniciar o programa, todas as variáveis globais são zeradas automaticamente, ou seja, número fica com 0, letra fica '', caractere fica com ' '... etc.

 

Outro ponto é que, como o laço de repetição é fixo, melhor utilizar o for, no lugar do while.

 

14 horas atrás, danilo001 disse:

Uma última coisa, se eu quiser colocar pra pessoa pressionar uma tecla para repetir o programa, o que coloco?

Para esse código em si, não faz o menor sentido querer repetir...   a resposta é fixa!!!

 

 

Aproveitando esse exemplo de @devair1010, lembrar que é recomendado verificar tanto minúsculo, quanto MAIÚSCULO, pois "s" e "S" não tratados de forma diferente no Pascal, ou seja, o until precisa de 2 condições para esse caso. Outra forma é usar o UpCase(), que retorna o valor do caractere em maiúsculo... ela pertence a unit CRT (ou WinCRT). obs.: alguns compiladores já carregam essa unit ("biblioteca de comandos/estruturas/funções etc") automaticamente. É a mesma unit que disponibiliza o ReadKey, TextColor, ClrScr, Delay, etc

 

Exemplo de estrutura base:

Program Exercico_28;
uses
  CRT;
var    
  somatorio :word;
  i         :byte;
  tecla     :char;    //poderia ser "resp", "resposta", "opcao"... etc
BEGIN
repeat
  TextColor(WHITE); //cor do texto branco mais claro. (TextColor(numero). Cada número = uma cor. White=15, Yellow=14 etc)
  ClrScr; //limpa a tela
  somatorio:=0; //inicializa a variável



  

  write  ('Deseja sair do programa ?'); TextColor(6); writeln('(S/N)'); TextColor(15);
  tecla:=UpCase(ReadKey);
until tecla='S';
END.

Veja que nesse caso, necessariamente precisa inicializar a variável do somatório, pois a partir do segundo loop, ela continuaria com o valor antigo.

 

No aguardo.

  • Curtir 1
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...

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!