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
DiaSemanacom valores explícitos de 1 a 7. - Leia um número inteiro do console e converta para
DiaSemanacom cast. - Use
switchpara 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
- Declaramos o enum
DiaSemanacom valores explícitos de 1 a 7, associando cada dia a um número. - Lemos um número inteiro do console com
int.Parse(Console.ReadLine()). - Verificamos se o número está fora do intervalo 1-7; se sim, imprimimos "Dia inválido." e encerramos com
return. - Convertemos o número para o enum com o cast
(DiaSemana)numero. - No
switch, agrupamosSabadoeDomingono mesmo caso para imprimir "fim de semana". - O caso
defaultcobre 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 deintpara 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: comparardia == "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.