C++案例——评委打分
黑马程序员
C++案例——评委打分
案列描述:五名选手ABCDE,10个评委分别对一选手打分,去除最高,最低分。取平均分
实现步骤
1.创建五名选手,放入vector
2遍历vector,取出每一名选手,执行for循环,可以把10个评分存入deque容器
3.sort算法对deque容器中分数排序,去除最高最低分
4.deque容器遍历一遍,累加总分。
5获取平均分
#include
#include
#include
#include
#include
using namespace std;
//选手类
class Person
{
public:Person(string name, int score){this->m_name = name;this->m_score = score;}string m_name; //姓名int m_score; //平均分
};
void creatPerson(vector<Person>& v)
{string nameSeed = "ABCDE";for (int i = 0; i < 5; i++){string name = "选手";name += nameSeed[i];int score = 0;Person p(name, score);//将创建的Person对象 放入到容器中v.push_back(p);}
}
//打分
void setScore(vector<Person>& v)
{//cout << "请三位评委打分" << endl;for (vector<Person>::iterator it = v.begin(); it != v.end(); it++){//将评委的分数 放入到deque容器中deque<int >d;for (int i = 0; i < 10; i++){int score = rand() % 41 + 60;//60~1000d.push_back(score);}//每一次的得分/*cout << "选手:" << it->m_name << "打分:" << endl;for (deque::iterator dit = d.begin(); dit != d.end(); dit++){cout <<" " << *dit;}*/ //cout << endl;//排序sort(d.begin(), d.end());//去掉最高分和最低分d.pop_back();d.pop_front();int sum = 0;for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++){sum += *dit;//累加评委分数}int avg = sum / d.size();//j将平均分 赋值给选手it->m_score = avg;}}
void showScore(vector<Person>&v)
{for (vector<Person>::iterator it = v.begin(); it != v.end(); it++){cout << "姓名:" << (*it).m_name << " 分数;" << (*it).m_score << endl;}
}
int main()
{//随机数种子srand((unsigned int)time(NULL));//1.创建五名选收手vector<Person> v;creatPerson(v);//2.给5名选手打分setScore(v);测试五个输出//for (vector::iterator it = v.begin(); it != v.end(); it++) //{// cout << "姓名:" << (*it).m_name << " 分数;" << (*it).m_score << endl;//}showScore(v);system("pause");return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
