資源簡介
編寫一個實現n維向量各種操作的類,功能包括:
(1) 構造函數實現n維向量的初始化構造,這里n可變;
(2) 析構函數實現向量動態內存的釋放;
(3) 拷貝構造函數實現向量的拷貝構造;
(4) 重載賦值運算符'=',實現兩個向量之間的賦值;
(5) 編寫成員函數求兩個向量的內積;
(6) 編寫成員函數求兩個向量的外積;
(7) 編寫成員函數求兩個向量的和;
(8) 編寫成員函數求兩個向量的差;
(9) 編寫成員函數判斷兩個向量之間的線性相關性。
(10) 編寫一個主函數測試向量類的上述功能。

代碼片段和文件信息
/*////////////////////////////
??3.向量類的設計與實現
編寫一個實現n維向量各種操作的類,功能包括:
(1) 構造函數實現n維向量的初始化構造,這里n可變;
(2) 析構函數實現向量動態內存的釋放;
(3) 拷貝構造函數實現向量的拷貝構造;
(4) 重載賦值運算符‘=‘,實現兩個向量之間的賦值;
(5) 編寫成員函數求兩個向量的內積;
(6) 編寫成員函數求兩個向量的外積;
(7) 編寫成員函數求兩個向量的和;
(8) 編寫成員函數求兩個向量的差;
(9) 編寫成員函數判斷兩個向量之間的線性相關性。
(10) 編寫一個主函數測試向量類的上述功能。
////////////////////////////////////////////////////*/
#include?
class?Vector?
{?
int?*data;????????????????????????????????//向量各維數值指針
int?length;???????????????????????????????//向量維數
public:?
Vector()?{data=NULL;?length=0;}???????????//默認構造函數
Vector(int?len);?
~Vector()?{?if(data!=NULL)?delete?data;?}?//析構函數實現向量動態內存的釋放
Vector(Vector&t);??
int?&operator[](int?x);?
Vector?&operator=(Vector?&v);?
int?InnerProduct(Vector?&v);?
void?OuterProduct(Vector?&v);
Vector?operator+(Vector?&v);?
Vector?operator-(Vector?&v);?
void?Linearly(Vector?&v);
friend?ostream&?operator<<(ostream?&outputVector?&v);//友員函數實現向量輸出
};?
//構造函數實現n維向量的初始化構造
Vector::Vector(int?len)?
{?
data=new?int[len];?
length=len;?
}?
//拷貝構造函數實現向量的拷貝構造
Vector::Vector(Vector&t)?
{?
length=t.length;?
data=new?int[t.length];?
for(int?i=0;i data[i]=t.data[i];?
}?
//重載賦值運算符‘=‘,實現兩個向量之間的賦值
Vector?&Vector::operator=(Vector&v)?
{?
length=v.length;?
data=new?int[v.length];?
for(int?i=0;i data[i]=v.data[i];?
return?*this;?
}?
//成員函數求兩個向量的內積
int?Vector::InnerProduct(?Vector?&v)
{?
int?sum=0;
for(int?i=0;i {
sum=sum+data[i]*v.data[i];
}
return?sum;
}
//成員函數求兩個向量的外積
void?Vector::OuterProduct(Vector?&v)
{
int?i;
cout<<“|“;
for(i=0;i cout<<“i“< cout<<“|“< for(i=0;i cout< cout<<“|“< for(i=0;i cout< cout<<“|“< }
//重載賦值運算符‘<<‘,實現向量輸出
ostream&?operator<<(ostream?&outputVector&v)
{?
output<<“{“;
for(int?i=0;i output< output<<“}“;
return?output;?
}?
//重載賦值運算符‘[]‘,實現向量各維數賦值
int?&Vector::operator?[](int?x)?
{?
if(x return?data[x];?
}?
//重載賦值運算符‘+‘,實現求兩個向量的和
Vector?Vector?::operator+(Vector&v)?
{?
Vector?Temp(length);?
for(int?i=0;i Temp.data[i]=data[i]+v.data[i];?
return?Temp;?
}?
//重載賦值運算符‘-‘,實現求兩個向量的差
Vector?Vector?::operator-(Vector&v)?
{?
Vector?Temp(length);?
for(int?i=0;i Temp.data[i]=data[i]-v.data[i];?
return?Temp;?
}
//成員函數判斷兩個向量之間的線性相關性
void?Vector::Linearly(Vector?&v)
{
int?k;??//非線性相關時令k=0
if?(length!=v.length)
{
cout<<“非線性相關“< k=0;
}
if?(k!=0)
for(int?i=0;i {
if(data[i]/v.data[i]!=data[i+1]/v.data[i+1])?
{
cout<<“非線性相關“< k=0;
}
}
if(k!=0)?cout<<“線性相關“<
}
//主函數測試向量類的上述功能
void?main()?
{?
Vector?v1(5)v2v3v4v5v6(4);?
v1[0]?=?11;?
v1[1]?=?12;?
v1[2]?=?13;?
v1[3]?=?14;
v1[4]?=?15;???????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4489??2020-03-17?17:07??向量類的設計與實現?VC++6.0.cpp
評論
共有 條評論