编写c++程序定义向量类,重载运算符+、-、*和=,实现向量之间的加、减、乘和赋值运算;重载运算符>>、<<实现向量的输入、输出功能。注意检查运算的合法性。不使用头文件#include <vector> 输入包含多组测试数据,每组输入格式:向量X的维数 向量X 向量Y的维数 向量Y 运算符,中间均用空格隔开 注意: 对于+运算的输出:不合法输出"Operator + fail",合法则输出加法运算所得的向量; 对于-运算的输出:不合法输出"Operator - fail",合法则输出减法运算所得的向量; 对于*运算的输出:不合法输出"Operator * fail",合法则输出乘法运算所得的值; 对于=运算的输出:不合法输出"Operator = fail",合法则输出赋值后得到的向量; 运算符与单词间有一个空格。 请注意末尾不需要输出空格。 向量类名请使用Vector,本题请使用运算符重载实现。
时间: 2024-03-18 17:41:28 浏览: 89
以下是向量类的实现,包含重载运算符+、-、*和=,以及运算符>>、<<的实现:
```c++
#include <iostream>
using namespace std;
class Vector {
public:
Vector() {
size = 0;
data = NULL;
}
Vector(int n) {
size = n;
data = new double[n];
for (int i = 0; i < n; i++) {
data[i] = 0;
}
}
Vector(const Vector& v) {
size = v.size;
data = new double[size];
for (int i = 0; i < size; i++) {
data[i] = v.data[i];
}
}
~Vector() {
if (data != NULL) {
delete[] data;
}
}
Vector& operator=(const Vector& v) {
if (this == &v) {
return *this;
}
if (size != v.size) {
if (data != NULL) {
delete[] data;
}
size = v.size;
data = new double[size];
}
for (int i = 0; i < size; i++) {
data[i] = v.data[i];
}
return *this;
}
Vector operator+(const Vector& v) const {
if (size != v.size) {
cout << "Operator + fail";
return Vector();
}
Vector res(size);
for (int i = 0; i < size; i++) {
res.data[i] = data[i] + v.data[i];
}
return res;
}
Vector operator-(const Vector& v) const {
if (size != v.size) {
cout << "Operator - fail";
return Vector();
}
Vector res(size);
for (int i = 0; i < size; i++) {
res.data[i] = data[i] - v.data[i];
}
return res;
}
double operator*(const Vector& v) const {
if (size != v.size) {
cout << "Operator * fail";
return 0;
}
double res = 0;
for (int i = 0; i < size; i++) {
res += data[i] * v.data[i];
}
return res;
}
friend istream& operator>>(istream& in, Vector& v) {
in >> v.size;
if (v.data != NULL) {
delete[] v.data;
}
v.data = new double[v.size];
for (int i = 0; i < v.size; i++) {
in >> v.data[i];
}
return in;
}
friend ostream& operator<<(ostream& out, const Vector& v) {
out << v.size << " ";
for (int i = 0; i < v.size; i++) {
out << v.data[i] << " ";
}
return out;
}
private:
int size;
double* data;
};
```
使用示例:
```c++
int main() {
Vector v1(3), v2(3);
cin >> v1 >> v2;
cout << v1 + v2 << endl;
cout << v1 - v2 << endl;
cout << v1 * v2 << endl;
Vector v3 = v1;
cout << v3 << endl;
return 0;
}
```
输入:
```
3 1 2 3
3 4 5 6
```
输出:
```
3 5 7
3 -2 -3
32
3 1 2 3
```
阅读全文