Accelerated C++之计算学生成绩3
来源:互联网 发布:java工程师学什么专业 编辑:程序博客网 时间:2024/05/16 06:49
层层深入,由浅及深
一个例子,包含多少知识点,自己看哦
第三部分
- median.h
#ifndef GUARD_median_h//检查头文件GUARD_median_h是否被定义,//如果未定义,就会请求预处理程序对在他和#endif之间的所有内容作出适当的处理动作//名称要唯一#define GUARD_median_h//.h中不能包含using声明#include <vector>double median(std::vector<double>);#endif
- median.cc
#include <algorithm>#include <iostream>#include <stdexcept>#include <vector>#include "median.h"using namespace std;double median(vector<double> vec){ typedef vector<double>::size_type vec_sz; vec_sz size = vec.size(); if (size == 0) throw domain_error("median of an empty vector"); sort(vec.begin(), vec.end()); vec_sz mid = size / 2; return size % 2 == 0 ? (vec[mid] + vec[mid - 1]) / 2 : vec[mid];}
- Student_info.h
#ifndef GUARD_Student_info#define GUARD_Student_info#include <string>#include <vector>struct Student_info{ std::string name; double midterm, final; std::vector<double> homework;};bool compare(const Student_info& , const Student_info&);std::istream& read(std::istream&, Student_info&);std::istream& read_hw(istream&, std::vector<double>&);#endif
- Student_info.cc
#include "Student_info.h"#include <iostream>using namespace std;bool compare(const Student_info& x, const Student_info& y){ return x.name < y.name;}istream& read(istream& is, Student_info &s){ double midterm, final; is >> s.name >> midterm >> final; read_hw(is, s.homework); return is;}istream& read_hw(istream& in, vector<double>& hw){ if (in) { hw.clear(); double x; while (in >> x) hw.push_back(x); in.clear(); } return in;}
- grade.h
#ifndef GUARD_grade_h#define GUARD_grade_h#include <vector>#include "Student_info.h"double grade(double, double, double);double grade(double, double, const std::vector<double>&);double grade(const Student_info&);#endif
- grade.cc
#include <iostream>#include <stdexcept>#include <vector>#include "grade.h"#include "median.h"#include "Student_info.h"using namespace std;double grade(double midterm, double final, double homework){ return 0.2 * midterm + 0.4 * final + 0.4 * homework;}double grade(double midterm, double final, const vector<double>& hw){ if (hw.size() == 0) throw domain_error("student has done no homework"); return grade(midterm, final, median(hw));}double grade(const Student_info& s){ return grade(s.midterm, s.final, s.homework);}
- main.cc
#include <algorithm>#include <iomanip>#include <vector>#include <iostream>#include <stdexcept>#include <string>#include "grade.h"#include "Student_info.h"using namespace std;int main(){ vector<Student_info> students; Student_info record; string::size_type maxlen = 0; while (read(cin, record)) { maxlen = max(maxlen, record.name.size()); students.push_back(record); } // 按照顺序排列学生记录 sort(students.begin(), students.end(), compare); for (vector<Student_info>::size_type i = 0; i != students.size(); ++i) { // 输出姓名,把姓名填充至maxlen+1个字符长度 cout << students[i].name<< string(maxlen + 1 - students[i].name.size(), ' '); try { double final_grade = grade(students[i]); streamsize prec = cout.precision(); cout << setprecision(3) << final_grade << setprecision(prec); } catch (domain_error e) { cout << e.what(); } cout << endl; } return 0;}
未完待续
阅读全文
0 0
- Accelerated C++之计算学生成绩3
- Accelerated C++之计算学生成绩1
- Accelerated C++之计算学生成绩2
- 计算学生平均成绩
- 学生成绩计算修订
- C语言之排学生成绩
- HTML网页之学生成绩绩点计算代码
- Io排序计算学生成绩
- Accelerated C++<3-2>
- Accelerated C++<4-3>
- c 实现学生成绩管理
- [C语言]学生成绩管理
- 学生成绩信息管理系统(c++)
- 学生成绩管理C实现
- C实现输入学生数学成绩计算平均分及及格率
- C实现输入学生数学成绩计算平均分及及格率
- 用类输入学生信息计算成绩
- 完善的学生成绩计算统计
- HDU-4476 Cut the rope (枚举、前缀和)
- 前端考试知识点归纳总结
- IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404
- IP地址与Long型整数的相互转换
- HDU
- Accelerated C++之计算学生成绩3
- JAVA学习笔记
- mysql 更改数据库字符编码的方法
- 开源分享-桌面版坦克大战
- ubuntu下安装pdo和pdo_mysql扩展
- [agc019c]Fountain Walk
- 第三单元man命令
- OpenGL国民党党徽、共青团团徽、花型的绘制
- 有关Response&Request知识点分析