题目描述
为向量1题目中实现的CVector类增加成员函数float Average(),计算n维向量的平均值并返回。
定义CStudent类,私有数据成员为:
string name; // 姓名
CVector score; // n个成绩
(1)添加构造函数,用虚参name1、n1、数组a1初始化CStudent类对象。
(2)添加输出函数,按样例格式输出CStudent对象值。
主函数输入数据,测试CStudent对象。
输入
输入多行,每行格式为:学生姓名 科目n n个成绩
输出
对每行测试数据,生成学生对象,输出如下数据:
学生姓名 n个成绩 成绩的平均值(保留2位小数)
#include <iostream>
#include <iomanip>
using namespace std;
class cetor
{
int* data;
int n;
//static int sum;
public:
friend cetor add(const cetor v1, const cetor v2);
cetor(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n1; i++)
{
data[i] = a[i];
//sum += a[i];
}
}
void print()
{
for (int i = 0; i < n; i++)
{
cout << data[i] << " ";
}
}
// static void getsum()
//{
// sum = 0;
// }
// static int gsum()
// {
// return sum;
// }
float average()
{
float s = 0;
for (int i = 0; i < n; i++)
{
s += data[i];
}
return s / n;
}
};
class student
{
string name;
cetor score;
public:
student(string name1, int n1, int* a) :score(n1, a)
{
name = name1;
}
void printd()
{
cout << name << " ";
score.print();
cout << fixed << setprecision(2) << score.average();
cout << endl;
}
};
//int cetor::sum = 0;
cetor add(const cetor v1, const cetor v2)
{
cetor r(v1.n, new int[v1.n]);
for (int i = 0; i < v1.n; i++)
{
r.data[i] = v1.data[i] + v2.data[i];
}
return r;
}
int main()
{
string name1;
while (cin >> name1)
{
int n1;
cin >> n1;
int* a = new int[n1];
for (int i = 0; i < n1; i++)
{
cin >> a[i];
}
student s1(name1, n1, a);
s1.printd();
}
return 0;
}