使用C++编写程序:
题目描述
输入n和n个学生成绩(实数),输出不及格率。
输入
输入的第一行是一个整数n,第二行是n个实数,用空格隔开。
输出
输出一个实数,表示不及格率,结果保留2位小数,单独占一行。
样例输入 Copy
8
98 45 86 79 56 75 90 70
样例输出 Copy
0.25
提示
注意,不及格率为0时,输出0.00
程序代码如下:
#include<iostream>
#include<algorithm> //count_if()的头文件
#include<iomanip>
#include<vector>
#define ElemType_I int
#define ElemType_F float
using namespace std;
template<class ElemType_1,class ElemType_2> //类模板
class FailureRate
{
public:
FailureRate(ElemType_1 N);
FailureRate() {};
bool operator()(ElemType_2 Number);
void GetFailureRate(ElemType_1 N);
private:
vector<ElemType_2> Achievement;
};
template<class ElemType_1,class ElemType_2>
inline FailureRate<ElemType_1, ElemType_2>::FailureRate(ElemType_1 N)
{
for (int i = 0; i < N; i++)
{
ElemType_2 Num;
cin >> Num;
Achievement.push_back(Num);
}
}
template<class ElemType_1,class ElemType_2>
inline bool FailureRate<ElemType_1, ElemType_2>::operator()(ElemType_2 Number)
{
return Number < 60;
}
template<class ElemType_1,class ElemType_2>
inline void FailureRate<ElemType_1, ElemType_2>::GetFailureRate(ElemType_1 N)
{
cout << fixed << setprecision(2) << count_if(Achievement.begin(), Achievement.end(), FailureRate()) / (N*1.0);
}
int main()
{
ElemType_I N;
cin >> N;
FailureRate<ElemType_I,ElemType_F> AchieveFailRate(N);
AchieveFailRate.GetFailureRate(N);
return 0;
}