- 08. Usando os conceitos de switch case, faça um programa que pergunte o mês ao usuário (número de 1 até 12), e diga quantos dias aquele mês possui. Fevereiro tem 28 dias (não é bissexto).
Quantos dias tem no mês
Vamos lá.Meses com 28 dias: 2
Meses com 30 dias: 4, 6, 9 e 11
Meses com 31 dias: 1, 3, 5, 7, 8, 10 e 12
Vamos fazer acumulando cases, para você fixar melhor esta importante técnica usando switch.
A variável days inicia com 0.
A lógica é a seguinte...todos os meses tem 28 dias ou mais. Assim, queremos que o 'case 2' seja sempre executado, então ele vai ficar lá embaixo.
Lá, iremos adicionar o valor 28 a variável days.
Pronto, qualquer mês que você digite vai ter pelo 28 dias, pois não usaremos break nos cases, pra acumular.
- days = days + 28;
Os cases do meio são os dos meses 4, 6, 9 e 11 tem 30 dias.
Como já vamos adicionar 28 dias, só temos que adicionar mais 2 dias pra ficar 30, nesses cases:
- days = days + 2;
Veja bem: se digitar 2, cai só no 'case 2', que coloca 28 dias na variável. Se digitar 4, 6, 9 ou 11, cai nesses cases que soma 2 e depois cai no 'case' que soma mais 28 dias, totalizando 30 dias.
Então, caso digitem 1, 3, 5, 7, 8, 10 ou 12, devemos somar apenas +1:
- days = days + 1;
Veja como ficou nosso código:
#include <iostream> using namespace std; int main() { int days=0, month; cout << "Numero do mes: "; cin >> month; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = days + 1; case 4: case 6: case 9: case 11: days = days + 2; case 2: days=days+28; break; default: cout <<"Mês inválido"<<endl; } cout <<"O mês "<<month<<" tem "<<days<<" dias.\n"; }
Deu pra entender? É uma solução bem charmosa.
Nenhum comentário:
Postar um comentário