Como somar os valores ímpares dado por um número N com base nesse código?

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

for (int i = n; i >=0; i--) {
  if (i % 2 != 0) {
    System.out.println(i);
  }
}

Basta você criar uma variável, fora do for e fazer a soma, atribuindo o valor a tal variável.

Tem como mostrar em código?

soma : inteiro

inicio
   soma <- 0

para i de 1 ate 10 faca
    se i MOD 2 <> 0 entao
        soma <- soma + i
    fimse
fimpara

Eh… Tem como deixar do jeito normal, em português eu não entendo :slight_smile:

Quer que faça e vá apresentar ao professor também?
A resposta está aí, se não sabe portugol, meu amigo, você realmente tem sérios problemas.

1 curtida

@darlan_machado concordo que a pessoa tem que se esforçar pra fazer, mas neste caso ele já fez o código e pra fazer o que ele quer, era só acrescentar 2 linhas, então não vejo problema em mostrar pra ele o código.

O jeito que eu fiz foi assim:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int result = 0;

    for (int i = n; i > 0; i--) {
      if (i % 2 != 0) {
        result += i;
      }
    }

    System.out.println(result);
    sc.close();
  }
}

E só a título de curiosidade, a partir do Java 8, um outro jeito de fazer seria assim:

import static java.util.stream.IntStream.rangeClosed;

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    try (var sc = new Scanner(System.in)) {
      int length = sc.nextInt();
      int result = rangeClosed(1, length).filter(i -> i % 2 != 0).sum();
      System.out.println(result);
    }
  }
}

Cara, eu não vou discutir.
Porém, enxergo alguns problemas ao “dar o peixe”:

  1. A pessoa jamais vai se esforçar, afinal, sempre tem alguém que fará o trabalho por ela
  2. É fundamental saber criar e ler portugol, afinal, é um padrão para construção de lógicas básicas.
  3. Sem que ele faça os passos e passe pelo processo de aprendizado: tentativa, erro, acerto, ele não conseguirá evoluir.
  4. O conceito de ajuda é muito particular, o meu implica em uma ação de duas partes: a que precisa e quer ajuda e a que pode ajudar e está disposto a fazê-lo. Neste caso, a primeira parte não queria ajuda, queria que alguém resolvesse o problema dela.
1 curtida

Olha, tô irritado porque hoje de manhã eu fiz exatamente do jeito que “wldomiciano” fez (o 1°) e o resultado deu errado kkkk
Mas o código dele está certinho :slight_smile:

E eu achei que não precisava explicar, eu já fiz essa questão por assim dizer, só esqueci como era mesmo

E tem como explicar esse rangeClosed?
Eu ainda não aprendi no curso, mas eu estou curioso xD, ele parece até o predicado de “Listas”

Ah, portugol?
Tem outro jeito de interpretar o código? :0

Concordo com o “Darlan”, mas eu já estava com dor de cabeça de tanto tentar, então eu só fiz o básico, fiquei com dúvida e perguntei para alguém e depois interpretar o que ela disse

1 curtida

Vc vai aprender mais pra frente quando chegar em Stream.

Mas, basicamente, o rangeClosed cria uma stream de int, ou, em outras palavras, uma sequencia de números inteiros primitivos.

// Gera uma sequencia de números que vai de 0 até 10 (inclusive) 
rangeClosed(0, 10)
   // Filtra a sequencia pegando apenas os impares
  .filter(i -> i % 2 != 0)
   // Retorna a soma deles
  .sum();

Se quiser ir já adiantando o assunto, tem esta playlist que achei bem legal que fala um pouco sobre essa parte da API do Java.

Que incrível :0
Agora vou usar o tempo todo isso vlw :smiley:

1 curtida