这是一个学生模块标记计算器,我被要求为第二年的大学复习课程编写。
这是现代C++代码的一个好例子吗?有什么是我可以改进或需要改变成为一个更好的程序员吗?
#include <iostream>
#include <cstdlib>
float student_results[5][2];
unsigned int input_student_result(unsigned int);
float input_student_weighting(unsigned int);
unsigned int input_exam_result();
float calculate_exam_weighting();
float calculate_module_mark();
int main() {
// Coursework 1
for (unsigned int i = 0; i < 4; ++i) {
student_results[i][0] = input_student_result(i);
student_results[i][1] = input_student_weighting(i);
}
student_results[4][0] = input_exam_result();
student_results[4][1] = calculate_exam_weighting();
std::cout << "Module mark = " << calculate_module_mark() << '\n';
std::cout << '\n';
system("pause");
return 0;
}
unsigned int input_student_result(unsigned int n) {
unsigned int input_validation = 0;
do {
std::cout << "Enter coursework " << (n + 1) << " result <0 - 100> = ";
std::cin >> input_validation;
} while (!(input_validation >= 1 && input_validation <= 100));
return input_validation;
}
float input_student_weighting(unsigned int n) {
float input_validation = 0;
do {
std::cout << "Enter coursework " << (n + 1) << " weighting 0.1 or 0.2 = ";
std::cin >> input_validation;
} while (!(input_validation == 0.1f || input_validation == 0.2f));
return input_validation;
}
unsigned int input_exam_result() {
unsigned int input_validation = 0;
do {
std::cout << "Enter exam result <0-100> = ";
std::cin >> input_validation;
} while (!(input_validation >= 1 && input_validation <= 100));
return input_validation;
}
float calculate_exam_weighting() {
float exam_weighting = (1 - (student_results[0][1] + student_results[1][1] + student_results[2][1] + student_results[3][1]));
std::cout << "Exam weighting = " << exam_weighting << '\n';
return exam_weighting;
}
float calculate_module_mark() {
float module_mark{
(student_results[0][0] * student_results[0][1]) +
(student_results[1][0] * student_results[1][1]) +
(student_results[2][0] * student_results[2][1]) +
(student_results[3][0] * student_results[3][1]) +
(student_results[4][0] * student_results[4][1])
};
return module_mark;
}发布于 2016-10-13 23:49:02
下面是如何改进代码:
std::vector而不是固定大小的数组double而不是float,因为它具有更高的精度std::cin >> var所有调用的错误检查顺便说一下,你看上去不像个初学者
std命名空间\n而不是std::endl这已经相当不错了。
https://codereview.stackexchange.com/questions/144180
复制相似问题