Faça um programa que recebe um conjunto de números inteiros, todos na mesma linha, os armazena em uma lista, e então exibe a soma dos positivos.
Entradas:
  1. Conjunto de números inteiros, em uma única linha.
Saídas:
  1. Soma dos números positivos.
Exemplo de Entrada:
\begin{array}{lllll}1 & -1 & 3 & 6 & -2\end{array}
Exemplo de Saída:
10

Passo 1

O enunciado pede que se leia um conjunto de números inteiros, todos em uma única linha, e que se imprima a soma apenas dos números positivos.
Informações relevantes extraídas do enunciado:
  • A entrada é uma única linha com vários números inteiros separados por espaços (por exemplo: 1\\\ -1\\\ 3\\\ 6\\\ -2).
  • A saída deve ser a soma dos números que são estritamente maiores que zero (ou seja, somar apenas os x tais que x>0).
  • No exemplo dado, a entrada é 1,\\\ -1,\\\ 3,\\\ 6,\\\ -2 e a saída esperada é 10.

Passo 2

Como o programa recebe uma linha com vários números, o primeiro passo prático é transformar essa linha de texto em uma lista de valores numéricos. Em Python (uma escolha natural para resolver isso) faz-se assim em duas etapas:
  1. Ler a linha inteira como string (por exemplo usando input()).
  2. Usar o método split() para dividir a string em pedaços separados por espaços. split() retorna uma lista de strings onde cada string representa um número escrito.
    Explicando com um exemplo: se a linha for "1 -1 3 6 -2", então após s.split() obtemos ["1", "-1", "3", "6", "-2"].

Passo 3

Depois de obter a lista de strings, precisamos convertê-las para inteiros. Em Python usamos a função int() para cada elemento. Assim obtemos uma lista de inteiros, por exemplo [1, -1, 3, 6, -2].
Aqui é importante entender que cada elemento é agora um número inteiro e podemos compará-lo numericamente com 0 usando a condição x>0.

Passo 4

Agora a lógica principal: percorrer a lista de inteiros e acumular em uma variável apenas os elementos que satisfaçam x>0. Esse padrão é muito comum e usa:
  • Um acumulador inicializado em 0 (por exemplo s = 0).
  • Um laço que verifica cada número x e faz if x > 0: s += x.
    Explicando o porquê: começamos em s=0 porque somar nada dá zero; para cada número positivo adicionamos seu valor ao acumulador; números negativos e zero são ignorados porque a condição x>0 falha.

Passo 5

Programa completo em Python (comentado linha a linha). Este código lê a linha, transforma em inteiros, soma só os positivos e imprime o resultado:
# Ler a linha com os inteiros (ex: "1 -1 3 6 -2")
linha = input().strip()

# Se a linha for vazia, tratamos como lista vazia; caso contrário, dividimos por espaços
if linha == "":
    numeros = []
else:
    numeros = linha.split()  # lista de strings como ["1", "-1", "3", "6", "-2"]

# Converter cada string para inteiro
numeros = [int(x) for x in numeros]  # lista de inteiros [1, -1, 3, 6, -2]

# Somar apenas os positivos
soma = 0
for x in numeros:
    if x > 0:
        soma += x

# Imprimir o resultado
print(soma)
Comentário rápido: a compreensão de lista [int(x) for x in numeros] faz a conversão de todos os elementos para inteiros em uma linha. O laço for com if x > 0 implementa a regra de somar somente os positivos.

Passo 6

Vamos executar mentalmente o programa com o exemplo do enunciado para ver a conta passo a passo. Peguei do enunciado os números \,1,\\\ -1,\\\ 3,\\\ 6,\\\ -2\,.
  • A lista de inteiros é [1,\\\ -1,\\\ 3,\\\ 6,\\\ -2].
  • Testando um a um:
    • 1>0 verdade → acumula 1 (acumulador vira 1)
    • -1>0 falso → ignora (continua 1)
    • 3>0 verdade → acumula 3 (acumulador vira 1+3)
    • 6>0 verdade → acumula 6 (acumulador vira 1+3+6)
    • -2>0 falso → ignora (continua 1+3+6)
  • Soma final calculada: 1 + 3 + 6 = 10.

Passo 7

Casos especiais e complexidade:
  • Se não houver números na linha (linha vazia), o programa deve imprimir 0. No código acima isso já é tratado (lista vazia → soma fica 0).
  • Se todos os números forem negativos ou zeros, a soma será 0 (nenhum elemento satisfaz x>0).
  • Complexidade: o algoritmo faz uma única leitura e percorre a lista uma vez, logo seu tempo é linear em relação ao número de inteiros n: O(n). Espaço extra usado é também O(n) se convertermos toda a lista primeiro; podemos reduzir para O(1) lendo item a item (por exemplo iterando sobre linha.split() e convertendo cada elemento em int sem armazenar a lista inteira).

Passo 8

Dicas rápidas para a prova:
  • Se o enunciado fala “uma única linha”, sempre pense em split() para separar por espaços.
  • Use um acumulador e uma condição simples if x > 0: para filtrar positivos — é a forma mais direta e segura.
  • Se quiser economizar memória, evite criar lista de inteiros inteira: faça for token in linha.split(): x = int(token); if x > 0: soma += x.

Resposta

10

Exercícios relacionados