1
resposta

[Projeto] Desafio: Hora da prática

Atividade 3

void ExibirTitulo(string titulo)
{
    int quantidadeLetras = titulo.Length;
    string asteriscos = string.Empty.PadLeft(quantidadeLetras, '*');
    Console.WriteLine(asteriscos);
    Console.WriteLine(titulo);
    Console.WriteLine(asteriscos);
}

var quiz = new Dictionary<string, List<string>>()
{
    {"Qual das opções abaixo representa corretamente um tipo de estrutura " +
    "de repetição muito utilizada em programação?",new List<string>
        {
            "A) if",
            "B) switch",
            "C) for",
            "D) return",
            "E) class"
        }
    },
    {"Qual componente do computador é responsável por executar cálculos " +
    "e processar instruções?", new List<string>
        {
            "A) Memória RAM",
            "B) Disco rígido (HD/SSD)",
            "C) Placa-mãe",
            "D) Processador (CPU)",
            "E) Fonte de alimentação"
        }
    },
    {"O que significa a sigla HTTP, usada na navegação pela internet?", new List<string>
        {
            "A) Hyper Transfer Text Protocol",
            "B) High Transmission Text Program",
            "C) HyperText Transfer Protocol",
            "D) Host Text Transmission Protocol",
            "E) Hyper Tool Transfer Process"
        }
    }
};

ExibirTitulo("Bem vindos ao Quiz sobre conceitos básicos de tecnologia!");
Console.WriteLine("\nAtenção: Qualquer opção marcada que foge das opções disponíveis estará errado!!");

int numeroQuestão = 1;

foreach (var pergunta in quiz.Keys)
{
    Console.WriteLine($"{pergunta}\n");
    Console.WriteLine($"{quiz[pergunta][0]}");
    Console.WriteLine($"{quiz[pergunta][1]}");
    Console.WriteLine($"{quiz[pergunta][2]}");
    Console.WriteLine($"{quiz[pergunta][3]}");
    Console.WriteLine($"{quiz[pergunta][4]}\n");
    Console.Write("Escolha sua resposta: ");
    char resposta = char.Parse(Console.ReadLine()!);
    CorrecaoResposta(numeroQuestão, resposta);
    numeroQuestão++;
    Console.Clear();

}

Console.WriteLine("Fim do Quiz!!");

void CorrecaoResposta(int questao, char resposta)
{
    switch (numeroQuestão)
    {
        case 1:
            if (resposta == 'c')
            {
                Console.WriteLine("\nResposta Correta!!\n");
                Thread.Sleep(2000);
            }
            else
            {
                Console.WriteLine("\nResposta Incorreta!!\n");
                Thread.Sleep(2000);
            }
            break;
        case 2:
            if (resposta == 'd')
            {
                Console.WriteLine("\nResposta Correta!!\n");
                Thread.Sleep(2000);
            }
            else
            {
                Console.WriteLine("\nResposta Incorreta!!\n");
                Thread.Sleep(2000);
            }
            break;
        case 3:
            if (resposta == 'c')
            {
                Console.WriteLine("\nResposta Correta!!\n");
                Thread.Sleep(2000);
            }
            else
            {
                Console.WriteLine("\nResposta Incorreta!!\n");
                Thread.Sleep(2000);
            }
            break;
        default:
            break;
    }
}

Atividade 4

bool nomeEncontrado = false;

var login = new Dictionary<string, string>()
{
    {"Alexa", "123senha"}
};

login.Add("Fabiano", "321senha");

Console.Write("Digite o nome do usuário para fazer o login: ");
string usuarioNome = Console.ReadLine()!;

Console.WriteLine("\nDigite a senha do usuário para fazer o login: ");
string senha = Console.ReadLine()!;

foreach (string nome in login.Keys)
{
    if (nome == usuarioNome)
    {
        nomeEncontrado = true;
        if (login[nome] == senha)
        {
            Console.WriteLine("Login efetuado com sucesso!");
        }
        else
        {
            Console.WriteLine("Login ou senha incorretos!");
        }
    }
}

if (!nomeEncontrado)
    Console.WriteLine("Login ou senha incorretos!");
1 resposta

Oi, Christopher, como vai?

As duas atividades estão funcionais e cobrem bem o que foi pedido. O quiz tem perguntas bem elaboradas sobre conceitos de tecnologia, e o sistema de login valida tanto o usuário quanto a senha corretamente.

Há um ponto de atenção na atividade 3. Dentro da função CorrecaoResposta, o switch usa a variável numeroQuestão do escopo externo em vez do parâmetro questao que foi recebido pela função. Isso significa que o parâmetro questao está sendo ignorado, e a correção depende do valor de uma variável fora da função, o que pode gerar comportamentos inesperados. A correção seria trocar numeroQuestão por questao dentro do switch.

Parabéns pelas soluções, Christopher, e obrigado por continuar compartilhando.

O fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!