Ajude nosso projeto a se manter online.

Quantos dias o mês possui - Exercício de C++

Neste tutorial, vamos resolver o seguinte exercício de nossa lista:
  • 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