2016-09-15 2 views
0

Je suis nouveau à la programmation et C++, je me suis un livre à ce sujet alors oui .. En tout cas je suis tombé sur la commande de commutateur et ils m'ont donné une tâche pour voir si certaine date est tomber le week-end ou des vacances; dans ce cas de Noël (25thDecember) .Il dit aussi de mettre:Commutateur C + + tâche booléenne du livre

bool IsItHoliday(false) 

au début. Ce est code que je essayer et ça ne fonctionne pas .. ofc

#include <iostream> 
using namespace std; 

int main() { 
    cout<<"dd mm gggg"; 
    int d,m; 
    long int g; 
    cin>>d>>m>>g; 

    long da; 
    if (m<3) { 
    da=365*g+d+31*(m-1)+(g-1)/4-3*((g-1)/100+1)/4; 
    } 
    else { 
    da=365*g+d+31*(m-1)-static_cast<int>(0.4*m+2.3)+g/4-3* (g/100+1)/4; 
    } 
    cout<<d<<"."<<m<<"."<<g<<". falls on "; 

    bool IsItHoliday(false); 

    switch (da%7) { 
    case 0: 
    case 1: 
    cout<<"weekend"<<endl; 
    break; 
    default: 
    cout<<"working day"<<endl; 
    } 
    return 0; 
} 

d est le jour, m est mois, g est l'année et da est la date

également Bool IsItHoliday devrait changer true si la déclaration pour les vacances (25 décembre) est vraie quelque part dans le bloc de commutation. Mon code pour détecter le week-end fonctionne mais il ne détecte pas le 25 décembre comme vacances. En passant, le livre est en croate et non, ils ne me donnent pas comment le code devrait ressembler à la tâche qu'il est censé faire.

+3

'si (d = 25, m = 12)' doit (probablement) 'si (d == 25 && m == 12)', sinon il juste cessionnaires 25 à 'd' et 12 à' m' et est toujours évalué à 'vrai'. –

+0

Les samedis et dimanches sont les jours ouvrables, tout le reste est le week-end? Je dois déménager en Croatie dès que possible. – molbdnilo

+0

Aussi vous avez la pause dans le cas 0: au mauvais endroit. – drescherjm

Répondre

0

Je suis assez sûr que da est censé être le jour de la semaine (probablement du croate), donc vous devriez gérer tous les 7 cas. Noël n'est pas lié à un jour de la semaine spécifique, il peut tomber n'importe quel jour de la semaine. Par conséquent, vous ne pouvez pas le gérer uniquement pour case 0:.

(également le commentaire de Kiril est correct)