2016-09-15 4 views
0

私はプログラミングとC++を初めて使いましたので、私は自分自身についての本を手に入れました.. とにかく私はswitchコマンドを見つけました。週末または休日に落ちる。この場合、クリスマス(12月25日)。本からのC++ switch + boolタスク

bool IsItHoliday(false) 

最初は次のように書いています。 このdは、gは年とダであり、mは月、日である

#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; 
} 

..私は試してみることだし、それはOFCを動作しないコードであることも、日付

あるブールIsItHolidayがに変わります休日(25thDecember)のステートメントがswitchブロックのどこかで真である場合はtrueです。週末を検出するための私のコードは動作しますが、25日は休日として検出されません。

ところで、本はクロアチア語で書かれていますが、私はコードをどのようにして自分のやるべきことにするべきかわかりません。

+3

'場合(D = 25、M = 12)が '(おそらく)' '(Dの== 25 && m個== 12)場合であるべきで、それ以外の場合は単に割り当てます25〜 'd'、12〜' m'であり、常に真と評価される。 –

+0

土曜日と日曜日は営業日です。それ以外はすべて週末ですか?私はできるだけ早くクロアチアに移動する必要があります。 – molbdnilo

+0

また、ケース0の場合は、間違った場所にあります。 – drescherjm

答えて

0

私は確かにdaが平日(おそらくクロアチア語)になっているはずですので、7件すべてを処理する必要があります。クリスマスは特定の平日に結ばれていない、それは週の任意の曜日に落ちることができます。したがって、あなたはcase 0:のためだけにそれを処理することはできません。

(またキリルのコメントが正しい)