1
resposta

[Sugestão] Resolução e implementação adicional no Exercício 1

Realizei o primeiro exercício conforme proposto, porém tentei incrementar com uma estrutura onde o usuário seleciona o que deseja fazer em seguida, optei por utilizar a estrutura switch, porém fiquei com dúvidas de como poderia "Forçar o usuário" a escolher a opção S ou N, por isso utilizei um while, aceito sugestões.

int notaMedia = 5;
int notaInformada;
string escolhaUsuário;
bool continuar = true;

while (continuar)
{

    Console.Write("Digite a nota média: ");
    notaInformada = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("");

    if (notaInformada >= notaMedia)
    {
        Console.WriteLine($"Você informou a nota: {notaInformada}, ela é Suficiente para aprovação");
        Console.WriteLine("");
    }
    else
    {
        Console.WriteLine($"Você informou a nota: {notaInformada}, ela é Insuficiente para aprovação");
        Console.WriteLine("");
    }

    Console.Write("Se desejar verificar outra nota digite 'S' ou se desejar sair é só digitar 'N':");
    escolhaUsuário = Console.ReadLine().ToUpper();
    Console.WriteLine("");


    switch (escolhaUsuário)
    {
        case "S":
            Console.WriteLine("Vamos verificar outra nota então!");
            Console.WriteLine("");
            break;

        case "N":
            Console.WriteLine("Obrigado por utilizar nosso programa, até a próxima!");
            Console.WriteLine("");
            continuar = false;
            break;
        default:
            while (escolhaUsuário != "S" && escolhaUsuário != "N")
            {
                Console.Write("Opção Inválida, digite apenas 'S' ou 'N' para sair: ");
                escolhaUsuário = Console.ReadLine().ToUpper();
                Console.WriteLine("");

                if(escolhaUsuário == "N")
                {
                    continuar = false;
                }
            }
            break;
    }
}
1 resposta

Olá Álvaro, tudo certo?

Que bacana que você está se desafiando a incrementar o exercício!

Utilizar o switch junto com um while é uma ótima abordagem para garantir que o usuário insira uma opção válida. Vou deixar uma sugestão de como você pode melhorar a estrutura do seu código para "forçar" o usuário a escolher entre 'S' ou 'N'.

Você já está no caminho certo, mas podemos simplificar um pouco a lógica dentro do switch e do while. Veja a sugestão abaixo:

int notaMedia = 5;
int notaInformada;
string escolhaUsuário;
bool continuar = true;

while (continuar)
{
    Console.Write("Digite a nota média: ");
    notaInformada = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("");

    if (notaInformada >= notaMedia)
    {
        Console.WriteLine($"Você informou a nota: {notaInformada}, ela é Suficiente para aprovação");
        Console.WriteLine("");
    }
    else
    {
        Console.WriteLine($"Você informou a nota: {notaInformada}, ela é Insuficiente para aprovação");
        Console.WriteLine("");
    }

    do
    {
        Console.Write("Se desejar verificar outra nota digite 'S' ou se desejar sair é só digitar 'N': ");
        escolhaUsuário = Console.ReadLine().ToUpper();
        Console.WriteLine("");

        if (escolhaUsuário == "S")
        {
            Console.WriteLine("Vamos verificar outra nota então!");
            Console.WriteLine("");
            break;
        }
        else if (escolhaUsuário == "N")
        {
            Console.WriteLine("Obrigado por utilizar nosso programa, até a próxima!");
            Console.WriteLine("");
            continuar = false;
            break;
        }
        else
        {
            Console.WriteLine("Opção Inválida, digite apenas 'S' ou 'N'.");
        }
    } while (true);
}

Neste exemplo, eu substituí o switch por um do-while dentro do while principal. Isso garante que o programa continuará pedindo ao usuário para inserir 'S' ou 'N' até que uma entrada válida seja fornecida. Assim que uma opção válida é inserida, o loop do-while é interrompido.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.