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

Verificando acesso a área restrita

Console.Write ("Digite a senha: ");
string senha = Console.ReadLine()!;

Console.Write ("Digite seu nível de acesso: ");
int nivelAcesso = int.Parse(Console.ReadLine()!);

if (senha == "42" && nivelAcesso >= 5) {
    Console.WriteLine ("Acesso Liberado!");
}
else {
    Console.WriteLine ("Acesso negado.");
}

Baseado nesse conceito, eu decidi criar outro programa com outros conceitos que eu já aprendi, para validar acesso a áreas específicas dentro de uma aeronave.

Dictionary <string, int> acessoUsuario = new Dictionary<string, int>();
acessoUsuario.Add("A7x9", 1);
acessoUsuario.Add("Qw12", 1);
acessoUsuario.Add("B14k", 2);
acessoUsuario.Add("User01", 2);
acessoUsuario.Add("Zp88", 3);
acessoUsuario.Add("Secure77", 3);
acessoUsuario.Add("Dev2026", 4);
acessoUsuario.Add("AdminX", 5);
acessoUsuario.Add("Root99", 6);
acessoUsuario.Add("MasterKey", 6);

void ValidandoEntradaSala(int nivelAcessoNecessario, int nivelAcessoUtilizado, string senhaUtilizada) {
    if (nivelAcessoUtilizado >= nivelAcessoNecessario && acessoUsuario.ContainsKey(senhaUtilizada)) {
        if (acessoUsuario[senhaUtilizada] == nivelAcessoUtilizado) {
            Console.WriteLine ("Acesso autorizado.");
        }
        else {
            Console.WriteLine ("Acesso negado.");
        }
    }
    else {
        Console.WriteLine ("Acesso negado.");
    }
}

void mostrarInterface() {
    Console.Clear();
    Console.WriteLine ("==============================");
    Console.WriteLine ("   AERONAVE SALAS RESTRITAS   ");
    Console.WriteLine ("==============================");
    Console.WriteLine ("1. Sala de Operações");
    Console.WriteLine ("2. Sala de Controle");
    Console.WriteLine ("3. Sala de Armas");
    Console.WriteLine ("4. Sala de Tática");
}

int sala;
bool validou;

while (true) {
    mostrarInterface();
    Console.Write ("Selecione a sala que deseja acessar: ");
    validou = int.TryParse(Console.ReadLine()!, out sala);
    if (sala == 1 || sala == 2 || sala == 3 || sala == 4) {
        validou = true;
        if (validou) break;
    } 
}

if (validou) {
    Console.Write ("Digite a senha: ");
    string senhaUtilizada = Console.ReadLine()!;

    Console.Write ("Digite seu nível de acesso: ");
    int nivelAcessoUtilizado = int.Parse(Console.ReadLine()!);

    switch (sala) {
        case 1: ValidandoEntradaSala(5, nivelAcessoUtilizado, senhaUtilizada); break;
        case 2: ValidandoEntradaSala(6, nivelAcessoUtilizado, senhaUtilizada); break;
        case 3: ValidandoEntradaSala(3, nivelAcessoUtilizado, senhaUtilizada); break;
        case 4: ValidandoEntradaSala(4, nivelAcessoUtilizado, senhaUtilizada); break;
    }
}
1 resposta
solução!

Olá, Diego, como vai?

Seu primeiro exercício atende corretamente ao que foi proposto na atividade. A validação da senha como string "42" e a verificação do nível de acesso maior ou igual a 5 com o operador lógico && estão coerentes com o enunciado.

No segundo programa, a lógica está consistente e demonstra que você já está conectando conceitos como Dictionary, métodos, switch e validações encadeadas. O uso de ContainsKey antes de acessar o índice do dicionário está correto e evita exceções. A regra implementada em ValidandoEntradaSala garante que a senha exista e que o nível informado corresponda ao registrado, além de ser maior ou igual ao exigido para a sala, o que deixa a validação bem estruturada do ponto de vista lógico.

Continue compartilhando suas implementações no fórum. Ele está à disposição para apoiar sua evolução.

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