题目描述
为向量1题目中实现的CVector类增加成员函数float Average(),计算n维向量的平均值并返回。
定义CStudent类,私有数据成员为:
string name; // 姓名
CVector score; // n个成绩
(1)添加构造函数,用虚参name1、n1、数组a1初始化CStudent类对象。
(2)添加输出函数,按样例格式输出CStudent对象值。
主函数输入数据,测试CStudent对象。
输入
输入多行,每行格式为:学生姓名 科目n n个成绩
输出
对每行测试数据,生成学生对象,输出如下数据:
学生姓名 n个成绩 成绩的平均值(保留2位小数)
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class CStudent;//最好都声明一下,避免遇到其他的麻烦
class CVector
{
private:
int* data;//存储n维向量
int n; //向量维数。
//添加私有静态成员sum,在初始化对象的同时,统计所有对象的n维向量和sum。
static int sum;
public:
//(1)无参构造函数,设置n=5,data的数据分别为0,1,2,3,4;
CVector()
{
n = 5;
data = new int[5];
for (int i = 0; i < 5; i++)
{
data[i] = i;
}
}
//(2)构造函数,用虚参n1和数组a初始化n和data的数据;
CVector(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n; i++)
{
data[i] = a[i];
sum += a[i];
}
}
//(3)输出函数,按格式输出n维向量的值;
void print()
{
for (int i = 0; i < n-1; i++)
{
cout << data[i] << " ";
}
cout << data[n - 1];
}
//(4)析构函数。
~CVector()
{
delete[] data;
}
friend CVector add(const CVector v1, const CVector v2);
CVector(CVector& c)
{
this->n = c.n;
data = new int[n];
for (int i = 0; i < n; i++)
{
data[i] = c.data[i];
}
}
static int getsum();
static void setsum();
//增加成员函数float Average(),计算n维向量的平均值并返回。
float Average()
{
float av = 1.0 * sum / this->n;
return av;
}
void set(int n1, int* a)
{
n = n1;
data = new int[n];
for (int i = 0; i < n; i++)
{
data[i] = a[i];
sum += a[i];
}
}
};
int CVector::sum = 0;
int CVector::getsum()
{
return sum;
}
void CVector::setsum()
{
sum = 0;
}
CVector add(const CVector v1, const CVector v2)
{
int* a = new int[v1.n];
for (int i = 0; i < v1.n; i++)
{
a[i] = v1.data[i] + v2.data[i];
}
CVector v3(v1.n, a);
return v3;
}
//在题目向量1的代码上添加类CVector的友元函数add,计算两个向量的和(对应分量相加)。
//定义CStudent类,私有数据成员为:
class CStudent
{
private:
string name;
CVector score;
public:
CStudent() {};
CStudent(string name1, int n1, int* a)
{
name = name1;
score.set(n1, a);
}
void print()
{
cout << name << " ";
score.print();
cout << ' ' << fixed << setprecision(2) << score.Average() << endl;
score.setsum();
}
};
//string name; // 姓名
//CVector score; // n个成绩
int main()
{
string name;
while (cin >> name)
{
int n;
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
CStudent c(name, n, a);
c.print();
}
return 0;
}