Médio C#
Somando números pares com for e foreach
Enunciado
Dado um array de inteiros, use um laço for para calcular a soma de todos os números pares e um foreach para imprimir cada número par encontrado. Ao final, mostre a soma.
Requisitos
- Usar
forpara percorrer o array e somar os pares - Usar
foreachpara imprimir os números pares - Imprimir a soma final
Código inicial
using System;
class Program
{
static void Main()
{
int[] numeros = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int soma = 0;
// Use for para somar os pares
// Use foreach para imprimir os pares
// Imprima a soma
}
}
Saída esperada
2
4
6
8
10
Soma: 30
Ver dica
Um número é par quando numero % 2 == 0. No for, use o índice para acessar numeros[i]. No foreach, percorra o array novamente e imprima apenas os pares.
Mostrar solução
using System;
class Program
{
static void Main()
{
int[] numeros = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int soma = 0;
// for: percorre por índice e soma os pares
for (int i = 0; i < numeros.Length; i++)
{
if (numeros[i] % 2 == 0)
soma += numeros[i];
}
// foreach: percorre os valores e imprime os pares
foreach (int n in numeros)
{
if (n % 2 == 0)
Console.WriteLine(n);
}
Console.WriteLine($"Soma: {soma}");
}
}
Passo a passo
- Declaramos o array
numeroscom valores de 1 a 10. - Inicializamos
somacom 0. - O laço
forpercorre dei = 0atéi < numeros.Length, acessando cada elemento pornumeros[i]. - Dentro do
for, verificamos se o número é par comnumeros[i] % 2 == 0; se for, somamos emsoma. - O laço
foreachpercorre cada valorndo array. - Dentro do
foreach, senfor par, imprimimosn. - Após os laços, imprimimos o valor final de
somacom interpolação de strings.
Por que funciona
O for é ideal para percorrer arrays com controle de índice, e o foreach simplifica a iteração sobre todos os elementos. Ambos acessam os mesmos dados, mas com propósitos diferentes: um para acumular, outro para exibir. A condição % 2 == 0 identifica números pares corretamente.
Erros comuns
- Usar
i <= numeros.Lengthnofor: isso causaIndexOutOfRangeExceptionporque o último índice válido éLength - 1. - Esquecer de incrementar
somadentro doif: a soma ficaria 0. - No
foreach, tentar modificarn(ex.:n++): isso não compila, pois a variável de iteração é somente leitura.
Outra forma de resolver
Usar LINQ para somar e filtrar:
using System.Linq;
int soma = numeros.Where(n => n % 2 == 0).Sum();
foreach (var n in numeros.Where(n => n % 2 == 0))
Console.WriteLine(n);
LINQ é preferível para código mais declarativo, mas laços explícitos são melhores para aprender controle de fluxo.
Saída esperada
2
4
6
8
10
Soma: 30