Accelerated C++ 笔记 第4章 组织程序和数据

本章关注如何有效地组织程序中的数据。内容包括使用数据结构来存储学生信息,如姓名、期中、期末成绩和家庭成绩。涉及到的文件有grade.h, grade.cpp, median.h, median.cpp, Student_info.h, Student_info.cpp以及主文件main.cpp。" 113311519,5679688,Ubuntu环境下Qt安装与linuxdeployqt打包技巧,"['Linux开发', 'Qt开发', '软件打包', 'Ubuntu']
摘要由CSDN通过智能技术生成

文章目录

# include <iostream>
#include <iomanip>
#include <string>
#include<vector>
# include <algorithm>
# include<stdexcept>//定义了异常类型 domain_error
using namespace std;

//查找中值
double median(vector <double> vec)
{
   
	typedef vector <double>::size_type vec_size;
	vec_size size = vec.size();
	//如果向量为空,抛出异常
	if (size == 0)
	{
   
		throw domain_error("empty");
	}
	sort(vec.begin(), vec.end());
	vec_size mid  = size / 2;
	
	return size % 2 == 0 ? (vec[mid] + vec[mid - 1]) / 2 : vec[mid];
}

//计算成绩

double grade(double midterm, double final, double homework)
{
   
	return 0.2 * midterm + 0.4 * final + 0.4 * homework;
}

//const vector<double>对参数类型为double的向量常量的引用
//引用是指 一个特定对象的另外一个名称
double grade(double midtern, double final, const vector<double>& hw)
{
   
	if (hw.size == 0)
	{
   
		throw domain_error("students have no hw");
	}
	return grade(midtern, final, median(hw));
}


//读一个输入流,把家庭作业成绩读进一个vector<double>类型的向量中

istream& read_hw(istream& in, vector<double>& hw)
{
   
	if (in)
	{
   
		//清除原先的内容
		hw.clear();
		//读家庭作业
		double x;
		while (in >> x)
		{
   
			hw.push_back(x);
		}
		in.clear();
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值