C ++実験---タイムストリームの挿入、抽出、インクリメント、デクリメント操作

時間クラス
Descriptionのフローの挿入、抽出、インクリメントおよびデクリメント操作は、
時間クラスTimeをカプセル化し、クラスの次の演算子をオーバーロードして、main()関数を正しく実行します。
ストリーム挿入演算子「>>」は、入力形式に従って標準入力から3つの整数(それぞれ時間、分、秒を表すhh、mm、ss)を読み取り、それらの値はintの範囲にあります。
ストリーム抽出演算子 "<<";は、 "hh:mm:ss"に従ってTimeクラスのオブジェクトを出力し、不正な時間に対して "error !!!"を出力します。
プリインクリメント演算子「++」:時間オブジェクトの秒に1を加算して、戻ります。
事前デクリメント演算子「–」:時間オブジェクトの秒から1を引き、戻ります。
ポストインクリメント演算子「++」:時間オブジェクトの秒に1を加算し、元の値に戻します。
デクリメント後の演算子「–」:時間オブジェクトの秒から1を引き、元の値に戻します。
上記の4つのインクリメントとデクリメントは、法定時間でのみ機能し、違法な時間を生成することはありません。例:
元の時間オブジェクトが「00:00:00」の場合、デクリメント操作後のオブジェクトは「23:59:59」です。
元の時間オブジェクトが「23:59:59」の場合、後のオブジェクトはインクリメント操作は「00」:00:00」です。
元の時間オブジェクトが「24:60:60」の場合、インクリメントまたはデクリメント操作後もオブジェクトは「24:60:60」のままです。
関数呼び出しの形式については、append.ccを参照してください。
main()関数
Input
によって入力された最初の整数nはappend.cc指定されており、テストデータのグループがn個あり、それぞれにhh、mm、ssの3つの整数があり、時間、分、それぞれと2番目、およびそれらの値はintの範囲内です。
出力は
、テーブルを出力します。各列は8つの文字幅で、2列の間にスペースがあります。
まず、ヘッダーを出力します: "++ t --tt t-- t ++ t"、
次に、次の順序で行のテストデータの各グループに対応します:
pre ++、pre-、元の値、post- 、Post ++、元の値。
入力日付が有効な場合、出力形式は「hh:mm:ss」であり、2桁未満の出力には接頭辞0を付ける必要があります。入力時間が不正な場合、「エラー!!!」が出力されます。フォーマットについてはサンプルを参照してください。
サンプル入力

6
0 0 1
0 59 59
1 1 60
23 0 0
23 59 59
24 1 0

サンプル出力

++t --t t t-- t++ t
00:00:02 00:00:01 00:00:01 00:00:01 00:00:00 00:00:01
01:00:00 00:59:59 00:59:59 00:59:59 00:59:58 00:59:59
error!!! error!!! error!!! error!!! error!!! error!!!
23:00:01 23:00:00 23:00:00 23:00:00 22:59:59 23:00:00
00:00:00 23:59:59 23:59:59 23:59:59 23:59:58 23:59:59
error!!! error!!! error!!! error!!! error!!! error!!!

タイトル指定コード

int main()
{
    
    
    Time t;
    int cases;
    cin>>cases;
    cout<<setw(8)<<left<<"++t"<<" ";
    cout<<setw(8)<<left<<"--t"<<" ";
    cout<<setw(8)<<left<<"t"<<" ";
    cout<<setw(8)<<left<<"t--"<<" ";
    cout<<setw(8)<<left<<"t++"<<" ";
    cout<<setw(8)<<left<<"t"<<right<<endl;
    for(int i = 1; i <= cases; ++i)
    {
    
    
        cin>>t;
        cout<<(++t)<<" ";
        cout<<(--t)<<" ";
        cout<<t<<" ";
        cout<<t--<<" ";
        cout<<t++<<" ";
        cout<<t<<endl;
    }
}

コード:

#include<iostream>
#include<iomanip>
using namespace std;

class Time{
    
    
	int hh,mm,ss;
public:
	Time(){
    
    
		hh=0;
		mm=0;
		ss=0;
	}
	
	Time(int h,int m,int s){
    
    
		hh=h;
		mm=m;
		ss=s;
	}
	
	friend istream& operator >>(istream &is,Time &T){
    
    
		is>>T.hh;
		is>>T.mm;
		is>>T.ss;
	}
	
	friend ostream& operator <<(ostream &os,const Time &T){
    
    
		if(!((T.hh>=0&&T.hh<=23)&&(T.mm>=0&&T.mm<=59)&&(T.ss>=0&&T.ss<=59))){
    
    
			os<<"error!!!";
		}else{
    
    
			
			if(T.hh/10){
    
    
				os<<T.hh<<':';
			}else{
    
    
				os<<0<<T.hh<<':';
			}
			
			if(T.mm/10){
    
    
				os<<T.mm<<':';
			}else{
    
    
				os<<0<<T.mm<<':';
			}
			
			if(T.ss/10){
    
    
				os<<T.ss;
			}else{
    
    
				os<<0<<T.ss;
			}
		}
	}
	
	Time& operator ++(){
    
    
		if(hh==23&&mm==59&&ss==59){
    
    
			hh=0;
			mm=0;
			ss=0;
			return *this;
		}else if(!((hh>=0&&hh<=23)&&(mm>=0&&mm<=59)&&(ss>=0&&ss<=59))){
    
    
			return *this;
		}else{
    
    
			ss++;
			if(ss==60){
    
    
				ss=0;
				mm++;
				if(mm==60){
    
    
					mm=0;
					hh++;
					if(hh==24){
    
    
						hh=0;
					}
				}
			}
			return *this;
		}
	}
	
	Time& operator --(){
    
    
		if(hh==0&&mm==0&&ss==0){
    
    
			hh=23;
			mm=59;
			ss=59;
			return *this;
		}else if(!((hh>=0&&hh<=23)&&(mm>=0&&mm<=59)&&(ss>=0&&ss<=59))){
    
    
			return *this;
		}else{
    
    
			ss--;
			if(ss==-1){
    
    
				ss=59;
				mm--;
				if(mm==-1){
    
    
					mm=59;
					hh--;
					if(hh==-1){
    
    
						hh=23;
					}
				}
			}
			return *this;
		}
	}
	
	Time operator ++(int){
    
    
		int h=hh;
		int m=mm;
		int s=ss;
		
		if(hh==23&&mm==59&&ss==59){
    
    
			hh=0;
			mm=0;
			ss=0;
		}else if(!((hh>=0&&hh<=23)&&(mm>=0&&mm<=59)&&(ss>=0&&ss<=59))){
    
    
			
		}else{
    
    
			ss++;
			if(ss==60){
    
    
				ss=0;
				mm++;
				if(mm==60){
    
    
					mm=0;
					hh++;
					if(hh==24){
    
    
						hh=0;
					}
				}
			}
		}
		return Time(h,m,s);
	}
	
	Time operator --(int){
    
    
		int h=hh;
		int m=mm;
		int s=ss;
		
		if(hh==0&&mm==0&&ss==0){
    
    
			hh=23;
			mm=59;
			ss=59;
		}else if(!((hh>=0&&hh<=23)&&(mm>=0&&mm<=59)&&(ss>=0&&ss<=59))){
    
    

		}else{
    
    
			ss--;
			if(ss==-1){
    
    
				ss=59;
				mm--;
				if(mm==-1){
    
    
					mm=59;
					hh--;
					if(hh==-1){
    
    
						hh=23;
					}
				}
			}
		}
		return Time(h,m,s);
	}
};


//setW函数在<iomanip>头文件里面 
int main()
{
    
    
    Time t;
    int cases;
    cin>>cases;
    cout<<setw(8)<<left<<"++t"<<" ";
    cout<<setw(8)<<left<<"--t"<<" ";
    cout<<setw(8)<<left<<"t"<<" ";
    cout<<setw(8)<<left<<"t--"<<" ";
    cout<<setw(8)<<left<<"t++"<<" ";
    cout<<setw(8)<<left<<"t"<<right<<endl;
    for(int i = 1; i <= cases; ++i)
    {
    
    
        cin>>t;
        cout<<(++t)<<" ";
        cout<<(--t)<<" ";
        cout<<t<<" ";
        cout<<t--<<" ";
        cout<<t++<<" ";
        cout<<t<<endl;
    }
}

おすすめ

転載: blog.csdn.net/timelessx_x/article/details/115051590