/*
* 程序的版權和版本聲明部分
* Copyright (c)2014, 在校學生
* All rightsreserved.
* 文件名稱: 1.cpp
* 作 者: 劉旺
* 完成日期:2014年5月5日
* 版本號: v1.0
* 輸入描述:無
* 問題描述: 建立一個向量類MyVector
*/
#include <iostream>
#include <cstdlib>
using namespace std ;
class MyVector{
public :
MyVector(int m) ;
MyVector(const MyVector &d) ;
~MyVector() ;
friend istream &operator>>(istream &is, const MyVector &d) ;
friend ostream &operator<<(ostream &os, 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 &d1) ;
private :
int *Array ;
int num ;
};
MyVector::MyVector(int m)
{
num = m ;
Array = new int[num] ;
for(int i=0; i<m; i++)
{
Array[i] = 0 ;
}
}
MyVector::MyVector(const MyVector &d)
{
num = d.num ;
if(Array != NULL)
{
delete []Array ;
}
Array = new int[num] ;
for(int i=0 ; i<num ; i++)
{
Array[i] = d.Array[i] ;
}
}
MyVector::~MyVector()
{
delete []Array ;
}
istream & operator>>(istream &is, const MyVector &d)
{
cout << d.num << "個元素的向量" << endl ;
for(int i=0; i<d.num ; i++)
{
cin >> d.Array[i] ;
}
return is ;
}
ostream& operator<<(ostream &os, const MyVector &d)
{
cout << "(" ;
if(d.num>0)
{
cout << d.Array[0] ;
}
for(int i=1; i<d.num ; i++)
{
cout << "," << d.Array[i] ;
}
cout << ")" << endl ;
return os ;
}
MyVector operator+(const MyVector& d1 , const MyVector &d2)
{
if(d1.num!=d2.num)
{
cout << "倆向量數量不同無法進行運算" ;
exit(0) ;
}
MyVector d(d1.num) ;
d.Array = new int[d.num] ;
for(int i=0; i<d.num ; i++)
{
d.Array[i] = d1.Array[i]+d2.Array[i] ;
}
return d ;
}
MyVector operator-(const MyVector& d1 , const MyVector &d2)
{
if(d1.num!=d2.num){cout << "倆向量數量不同無法進行運算" ;exit(0);}
MyVector d(d1.num) ;
d.Array = new int[d.num] ;
for(int i=0; i<d.num ; i++)
{
d.Array[i] = d1.Array[i]-d2.Array[i] ;
}
return d ;
}
bool MyVector::operator==(const MyVector &d)
{
if(num!= d.num){return false ;}
for(int i=0 ; i < num; i++ )
{
if(Array[i]!=d.Array[i])
{
return false ;
}
}
return true ;
}
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 ;
}
沉下去