2015-第5週プロジェクト4-静的メンバー応用

2873 ワード

【項目4-静的メンバー適用】
/*  
 *Copyright (c)2014,                
 *All rights reserved.  
 *    :C++.cpp  
 *      :     
 *    :2015 4 8   
 *     :v1.0  
 *  
 *    :                    Time 。
 *                             ,       ,     12   ,     24   ,
 *             ,            0,  “    ”   ,             
 *    : 
 *    : 
 */
#include <iostream>
#include <cmath>
using namespace std;
class Time{
public:
    Time(int=0,int=0,int=0);
    void show_time( ); //  is_24 from0,      -20:23:5/8:23:5 pm/08:23:05 pm
    void add_seconds(int); //  n  
    void add_minutes(int); //  n  
    void add_hours(int); //  n  
    static void change24();  //      is_24, 12 24      
    static void changefrom0();   //      from0,      0
 private:
    static bool is_24; // true ,24   , 20:23:5; flase,12   ,   8:23:5 pm
    static bool from0; // true ,  0,8:23:5   08:23:05
    int hour;
    int minute;
    int sec;
};
//                     ……
bool Time::is_24=true;
bool Time::from0=false;

Time::Time(int h,int m,int s): hour(h), minute(m), sec(s){}

void Time::show_time( )
{

    int h=((is_24)?hour:hour%12);
    if (h<10&&from0) cout<<'0';
    cout<<h<<':';
    if(minute<10&&from0) cout<<'0';
    cout<<minute<<':';
    if(sec<10&&from0) cout<<'0';
    cout<<sec;
    if(!is_24)
        cout<<((hour>12)? " pm":" am");
    cout<<endl;
}

void Time::add_seconds(int n)
{
    sec+=n;
    if (sec>59)
    {
        add_minutes(sec/60);
        sec%=60;
    }
}

void Time::add_minutes(int n)
{
    minute+=n;
    if (minute>59)
    {
        add_hours(minute/60);
        minute%=60;
    }
}

void Time::add_hours(int n)
{
    hour+=n;
    if (hour>23)
        hour%=24;
}

void Time::change24()
{
    is_24=!is_24;
}
void Time::changefrom0()
{
    from0=!from0;
}

int main( )
{
    Time t1(23,14,25),t2(8,45,6);
    cout<<"24  ,    :"<<endl;
    cout<<"t1 :";
    t1.show_time();
    cout<<"t2 :";
    t2.show_time();
    t1.add_hours(10);
    t2.add_hours(10);
    Time::changefrom0();
    cout<<"10   ,       :"<<endl;
    cout<<"t1 :";
    t1.show_time();
    cout<<"t2 :";
    t2.show_time();
    t1.change24();
    cout<<"     :"<<endl;
    cout<<"t1 :";
    t1.show_time();
    cout<<"t2 :";
    t2.show_time();
    return 0;
}

実行結果:
重点構文抽出:
 int h=(is_24)?hour:hour%12;  //                  
    //if(is_24)   
    //  h=hour;  
    //else   
    //  h=hour%12;
void Time::change24()  
{  
    is_24=!is_24;  //  is_24 bool ,!      
}