Fácil C#

Dia da semana com switch

Enunciado

Crie um enum DiaSemana com os dias de segunda a domingo. Leia um número inteiro de 1 a 7 e converta para o enum correspondente (1 = Segunda, ..., 7 = Domingo). Use switch para imprimir se é dia útil ou fim de semana.

Requisitos

  • Defina o enum DiaSemana com valores explícitos de 1 a 7.
  • Leia um número inteiro do console e converta para DiaSemana com cast.
  • Use switch para imprimir "Dia útil" ou "Fim de semana".
  • Trate valores fora do intervalo 1-7 imprimindo "Dia inválido".

Código inicial

using System;

enum DiaSemana
{
    // Defina os membros com valores de 1 a 7
}

class Program
{
    static void Main()
    {
        // Leia um número e faça a conversão
    }
}

Saída esperada

Digite um número (1-7): 3
Quarta-feira é dia útil.

Digite um número (1-7): 6
Sábado é fim de semana.

Digite um número (1-7): 9
Dia inválido.
Ver dica

Atribua valores explícitos no enum: Segunda = 1, Terca = 2, .... No switch, use case DiaSemana.Sabado: e case DiaSemana.Domingo: para fim de semana.

Mostrar solução
using System;

enum DiaSemana
{
    Segunda = 1,
    Terca = 2,
    Quarta = 3,
    Quinta = 4,
    Sexta = 5,
    Sabado = 6,
    Domingo = 7
}

class Program
{
    static void Main()
    {
        Console.Write("Digite um número (1-7): ");
        int numero = int.Parse(Console.ReadLine());

        if (numero < 1 || numero > 7)
        {
            Console.WriteLine("Dia inválido.");
            return;
        }

        DiaSemana dia = (DiaSemana)numero; // conversão de int para enum

        switch (dia)
        {
            case DiaSemana.Sabado:
            case DiaSemana.Domingo:
                Console.WriteLine($"{dia} é fim de semana.");
                break;
            default:
                Console.WriteLine($"{dia} é dia útil.");
                break;
        }
    }
}

Passo a passo

  1. Declaramos o enum DiaSemana com valores explícitos de 1 a 7, associando cada dia a um número.
  2. Lemos um número inteiro do console com int.Parse(Console.ReadLine()).
  3. Verificamos se o número está fora do intervalo 1-7; se sim, imprimimos "Dia inválido." e encerramos com return.
  4. Convertemos o número para o enum com o cast (DiaSemana)numero.
  5. No switch, agrupamos Sabado e Domingo no mesmo caso para imprimir "fim de semana".
  6. O caso default cobre os demais dias, imprimindo "dia útil".

Por que funciona

O enum associa nomes legíveis a valores inteiros, e o cast explícito permite converter o número lido para o tipo DiaSemana. O switch compara o valor do enum com cada membro, e como Sabado e Domingo compartilham o mesmo bloco, a lógica de fim de semana fica clara.

Erros comuns

  • Esquecer o cast: DiaSemana dia = numero; gera erro de compilação, pois não há conversão implícita de int para enum.
  • Não tratar valores inválidos: se o número for 0 ou 8, o cast cria um valor indefinido e o switch cai no default, mas a validação evita confusão.
  • Usar == com string: comparar dia == "Segunda" não compila; enums não são strings.

Outra forma de resolver

Usar Enum.TryParse para converter diretamente de string, mas o enunciado pede conversão de número. Uma alternativa é usar if aninhados, porém o switch é mais idiomático.

Saída esperada

Digite um número (1-7): 3
Quarta é dia útil.

Digite um número (1-7): 6
Sábado é fim de semana.

Digite um número (1-7): 9
Dia inválido.