题目描述
设向量X=(x1,x2,…,xn)和Y=(y1,y2…,yn),它们之间的加、减分别定义为:
X Y=(x1 y1,x2 y2,…,xn yn)
X-Y=(x1-y1,x2-y2,…,xn-yn)
编程序定义向量类Vector ,重载运算符“ ”、“-”,实现向量之间的加、减运算;并重载运算符”<<”作为向量的输出操作。
要求如下:
1.实现Vector类;
2.编写main函数,初始化两个Vector对象的,计算它们之间的加减,并输出结果。
输入
第1行:输入10个int类型的值,初始化第一个Vector对象。
第2行: 输入10个int类型的值,初始化第一个Vector对象。
输出
第1行:2个Vector对象相加后的输出结果。
第2行:2个Vector对象相减后的输出结果。
输入样例1
-4 1 0 10 5 -9 8 13 6 2 -11 8 10 17 -6 9 6 7 12 5
输出样例1
-15 9 10 27 -1 0 14 20 18 7 7 -7 -10 -7 11 -18 2 6 -6 -3
思路分析
这道题不难,考查很平常的运算符重载知识,运算符重载,比较需要关心的地方就是什么时候加const,在哪里加const,什么时候加&,在哪里加&之类的问题,跑不起来的时候就都试试,把能加的都加上去。
AC代码
代码语言:javascript复制#include <iostream>
using namespace std;
class Vector
{
int vec[10];
public:
Vector(int v[10])
{
int i;
for (i = 0; i < 10; i )
vec[i] = v[i];
}
Vector() {}
Vector(Vector& v)
{
int i;
for (i = 0; i < 10; i )
vec[i] = v.vec[i];
}
Vector operator (Vector& v)
{
int i;
Vector result;
for (i = 0; i < 10; i )
result. vec[i] = v.vec[i] vec[i];
return result;
}
Vector operator-(Vector& v)
{
int i;
Vector result;
for (i = 0; i < 10; i )
result.vec[i] = vec[i]-v.vec[i] ;
return result;
}
friend ostream& operator<<(ostream& out, Vector& v);
};
ostream& operator<<(ostream& out, Vector& v)
{
int i;
for (i = 0; i < 9; i )
out << v.vec[i] << ' ';
out << v.vec[i] << endl;
return out;
}
int main()
{
int i, vector[10];
for (i = 0; i < 10; i )
cin >> vector[i];
Vector a(vector);
for (i = 0; i < 10; i )
cin >> vector[i];
Vector b(vector);
Vector c;
c= a b;
cout << c;
c = a - b;
cout<< c;
return 0;
}