Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Separar os números por vírgula e colocar ponto no final

Fazendo o exercício eu queria que os números pares fossem separados por vírgula (,), porém o problema era que após o último número par da lista não deveria ser mostrada uma vírgula, e sim um ponto(.). Depois de várias tentativas pra fazer isso logo após os testes pra saber se o número é par, e vendo que o código estava ficando extenso e estranho, percebi que tinha uma forma muito melhor e mais simples.

A solução foi que a cada teste verdadeiro se o número fosse positivo, eu ia adicionando ele a uma nova lista somente de números positivos, assim eu conseguiria escrever todos os números na tela separados por vírgula e com um ponto final após o último de uma maneira bem mais fácil

Gostaria da avaliação dos professores pra saber se está correto e se existiria alguma forma melhor além dessa. (Claro, com o conteúdo que tive até aqui, na aula 3)

/ Exercício: Números inteiros pares

List<int> numeros = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 18, 19, 21, 24, 88, 99};
List<int> numerosParesFor = new List<int>();
List<int> numerosParesForeach = new List<int>();

// USANDO FOR

Console.WriteLine("Usando FOR");
Console.Write("Os números pares são: ");

// Identificando se o número é par ou ímpar e, caso seja par, adiciono ele a uma nova lista só de números pares.
for (int i = 0; i < numeros.Count; i++)
{
    if (numeros[i] % 2 == 0)
    {
        numerosParesFor.Add(numeros[i]);
    }        
}

// Escrevendo na tela a lista de números pares.
// Fiz separado para conseguir escrever os números separados por vírgula e colocar um ponto após o último.
for (int i = 0; i < numerosParesFor.Count; i++)
{
    if (i != numerosParesFor.Count - 1)
    {
        Console.Write($"{numerosParesFor[i]}, ");
    } else
    {
        Console.Write($"{numerosParesFor[i]}. ");
    }
}
// USANDO FOREACH

int indice = 0; // Variável auxiliar para ajudar no acesso ao índice de numerosParesForeach

Console.WriteLine("\n\nUsando FOREACH");
Console.Write("Os números pares são: ");

// Identificando se o número é par ou ímpar e, caso seja par, adiciono ele a uma nova lista só de números pares.
foreach (int i in numeros)
{
    if (i % 2 == 0)
    {
        numerosParesForeach.Add(i);
    }
}

// Escrevendo na tela a lista de números pares.
// Fiz separado para conseguir escrever os números separados por vírgula e colocar um ponto após o último.
foreach (int i in numerosParesForeach)
{
    if (indice != numerosParesForeach.Count - 1)
    {
        Console.Write($"{numerosParesForeach[indice]}, ");
        indice++;

    }else
    {
        Console.Write($"{numerosParesForeach[indice]}.");
    }
}
1 resposta
solução!

Olá Fábio! Tudo beleza?

Fico feliz em ver que você encontrou uma solução que funciona bem para o seu problema. A abordagem que você usou, de criar uma nova lista apenas com os números pares, é uma maneira eficiente de resolver o exercício. Isso permite que você separe a lógica de identificação dos números pares da lógica de formatação da saída, o que torna o código mais organizado e fácil de entender.

Quanto à sua implementação, ela está correta e segue o que foi ensinado até a aula 3. Usar um for e um foreach para iterar sobre a lista e separar os números pares é uma prática comum. A forma como você está gerenciando a adição de uma vírgula ou ponto na saída também está bem feita.

Se você estiver buscando uma alternativa ainda mais concisa, pode considerar o uso do método String.Join para formatar a saída dos números pares. Veja como seria:

// Usando FOR
Console.WriteLine("Usando FOR");
Console.Write("Os números pares são: ");
Console.WriteLine(string.Join(", ", numerosParesFor) + ".");

// Usando FOREACH
Console.WriteLine("\n\nUsando FOREACH");
Console.Write("Os números pares são: ");
Console.WriteLine(string.Join(", ", numerosParesForeach) + ".");

Essa abordagem elimina a necessidade de um segundo loop apenas para formatar a saída, tornando o código ainda mais compacto. No entanto, a sua solução atual está perfeitamente adequada para o que foi ensinado até agora.

Espero ter ajudado e bons estudos!