题目描述
为向量1题目实现的CVector类添加私有静态成员sum,在初始化对象的同时,统计所有对象的n维向量和sum。
主函数生成多个对象,测试向量和。
可根据需要自行添加需要的静态成员函数,添加非静态成员函数不得分。
输入
测试次数t
每组测试数据格式如下:
输入m,表示n维向量的数目
后跟m行,每行格式:向量维数n n维向量值
输出
对每组测试数据的m个向量,输出所有向量的分量和sum
输入样例1
2
2
5 1 2 3 4 5
3 4 5 6
3
2 1 2
3 10 20 30
2 11 22
输出样例1
1 2 3 4 5
4 5 6
30
1 2
10 20 30
11 22
96
该题主要考察静态变量的使用(记得初始化)
#include<iostream>
using namespace std;
class cvector
{
private:
static int sum;
int* data;
int n;
public:
friend cvector add(const cvector v1, const cvector v2);
cvector() { ; }
cvector(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n1; i++)
{
data[i] = a[i];
}
}
//~cvector() { delete[]data; }
void print();
void init(int n1, int* a);
void init2()
{
sum = 0;
}
static int pr_sum()
{
return sum;
}
};
int cvector::sum = 0;
void cvector::init(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n1; i++)
{
data[i] = a[i];
sum += data[i];
}
}
cvector add(const cvector v1, const cvector v2)
{
int sum=v1.n;
int num[100];
for (int i = 0; i < sum; i++)
{
num[i] = v1.data[i] + v2.data[i];
}
cvector c(sum, num);
return c;
}
void cvector::print()
{
cout << data[0];
for (int i = 1; i < n; i++)
{
cout << ' ' << data[i];
}
cout << endl;
}
int main()
{
int t, n, m;
cin >> t;
while (t--)
{
cin >> m;
cvector* ev =new cvector[m];
ev[0].init2();
for (int i = 0; i < m; i++)
{
cin >> n;
int* num = new int[n];
for (int i = 0; i < n; i++)
{
cin >> num[i];
}
ev[i].init(n, num);
}
for (int i = 0; i < m; i++)
{
ev[i].print();
}
cout << ev[m - 1].pr_sum() << endl;
}
return 0;
}
|