文章目录
- 一、题目描述
- 二、输入与输出
- 1.输入
- 2.输出
- 三、参考代码
- 四、题解思路
一、题目描述
为向量1题目中实现的CVector类增加成员函数float Average(),计算n维向量的平均值并返回。
定义CStudent类,私有数据成员为:
string name; // 姓名
CVector score; // n个成绩
(1)添加构造函数,用虚参name1、n1、数组a1初始化CStudent类对象。
(2)添加输出函数,按样例格式输出CStudent对象值。
主函数输入数据,测试CStudent对象。
二、输入与输出
1.输入
输入多行,每行格式为:学生姓名 科目n n个成绩
wangwu 5 90 80 70 100 90
lisi 3 100 90 100
2.输出
对每行测试数据,生成学生对象,输出如下数据:
学生姓名 n个成绩 成绩的平均值(保留2位小数)
wangwu 90 80 70 100 90 86.00
lisi 100 90 100 96.67
三、参考代码
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
class cv
{
friend class stu;
private:int num;float *data;
public:cv(){};cv(int num1,float*data1 ){num=num1;int i=0;data=new float[num];for(i=0;i<num;i++){data[i]=data1[i];}};void set(int num1,float*data1){num=num1;int i=0;data=new float[num];for(i=0;i<num;i++){data[i]=data1[i];}}cv(cv&b){num=b.num;for(int i=0;i<b.num;i++){data[i]=b.data[i];}};friend float ave(cv&a){float sum=0;for(int i=0;i<a.num;i++){sum+=a.data[i];}return sum/a.num;};
};class stu
{
private:string name;cv sco;
public:stu(string name1,int n1,float*data1){name=name1;sco.set(n1,data1);}void pri(){cout<<name<<" ";for(int i=0;i<sco.num;i++){cout<<fixed<< setprecision(0)<<sco.data[i]<<" ";}float ave1=ave(sco);cout<<fixed<< setprecision(2)<<ave1<<endl;}
};int main() {string name;int num;while(cin>>name){cin>>num;float *data=new float[num];for(int i=0;i<num;i++){cin>>data[i];}stu stu1(name,num,data);stu1.pri();delete []data;}return 0;
}
四、题解思路
while(cin>>name)是可以保证只要还要名字这个循环就不会停止。
注意各个函数的书写!!!