2013級C++第9週(春)項目——演算子再ロード(二)

3618 ワード

コースのトップページは次のとおりです.http://blog.csdn.net/sxhelijian/article/details/11890759、完全なカリキュラムとリソースリンクがあります
【プログラム読解】プログラム「簡単C++学生情報管理システム」を読み、その中に構造関数、友元関数、演算子のリロード、静態数メンバーの文法現象が現れた場所を探し出し、その使い方をよく理解し、今後の設計において関係者法と技術項目1-3を柔軟に応用して8週目のコードを直接複製し、要求された演算子を加えて定義を再ロードした後、9週目の任務として別途ブログを出す.【項目1】第8週目の項目1に基づいて(1)一目演算子-,-cは0-cに相当する.(2)Complexクラスの<<と>>演算子のリロードを定義し、入力と出力を実現し、元のプログラムの演算結果表示方式を改造し、プログラムをより自然に読む.【項目2】第8週目の項目2に基づき(1)時間オブジェクトに対する自増および自減の演算子を定義する
	//        
	CTime operator++(int);//  ++,   
	CTime operator++();//  ++,   ,           
	CTime operator--( int);//  --,   
	CTime operator--();//  --,   
(2)タイムクラスの<<と>>演算子の再ロードを定義し、時間の入出力を実現し、元のプログラムの演算結果の表示方式を改造し、プログラムをより自然に読むことができる.
【事業3】第8週事業3に基づく
(1)スコアを定義する一目演算+と-は、それぞれスコアの正と逆を表し、「ビット別逆演算子」~をスコアの逆数演算に再ロードする.
(2)スコアクラスにおける<<と>>演算子のリロードを定義し,スコアの入出力を実現し,元のプログラムにおける演算結果の表示方式を改造し,プログラムをより自然に読み取る.
【プロジェクト4】ベクトルクラスMyVectorを作成し、次のように宣言します.クラスの定義を完了してください.
class MyVector          //     
{
public:
    MyVector(int m);    //    ,  m      ,      0
    MyVector(const MyVector &v);  //      
    ~MyVector(); //    :              
    friend istream &operator>>(istream &input, MyVector &d);
    friend ostream &operator<<(ostream &output, const MyVector &d);
    friend MyVector operator+(const MyVector &d1,const MyVector &d2);//    ,          
    friend MyVector operator-(const MyVector &d1,const MyVector &d2);//    ,          
    bool operator==(const MyVector &d);//          ,               
private:
    int *Array;       //Array        ,             
    int num;          //       
};
int main(){
    MyVector d1(5),d2(5);
    cout<<"  d1——";
    cin>>d1;
    cout<<"  d2——";
    cin>>d2;
    cout<<"d1="<<d1<<endl;
    cout<<"d2="<<d2<<endl;
    cout<<"d1+d2="<<d1+d2<<endl;
    cout<<"d1-d2="<<d1-d2<<endl;
    cout<<"d1"<<((d1==d2)?"==":"!=")<<"d2"<<endl;
    return 0;
}

【項目5】ax+b=0のような方程式の解を求める一元一次方程式クラスを設計する.
例えば、3 x-8=0を入力すると、出力される方程式の解はx=2.66667となる.
さらに、5 s+18=0を入力すると、出力される方程式の解はs=-3.6となる. 
class CEquation
{
private:
	double a;     //      
	double b;     //    
	char unknown; //         
public:
	CEquation(double aa=0,double bb=0);
	friend istream &operator >> (istream &in,CEquation &e);
	friend ostream &operator << (ostream &out,CEquation &e);
	double Solve();
	char getUnknown();
};
int main()
{	CEquation e;
	cout<<"     (  :ax-b=0,a、b   ,x          ):";
	cin>>e;   //      ,    3x-8=0 50s+180=0
	cout<<"   :"<<e;
	cout<<"     :"<<e.getUnknown()<<"="<<e.Solve()<<endl; //     ,    x=... s=...
	e.Solve();
}
====================        CSDN    =================
|== IT                  (     ) ==|
|== C++                  (     ) ==|
|==     ——《    ——  IT      》    ==|
=====  IT       ,                =====