C++程序,接受N个评委输入选手得分 (0-100分),去掉一个最高分和最低分,求 出某选手的最后

2024-11-09 00:32:34
推荐回答(4个)
回答(1):

只是在学,就帮你做一下啦
#include "stdafx.h"
#include
#include
using namespace std;
void order(vector &Int_v);
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"请输入至少三个分数,中间用空格隔开(输入101确认输入完成):";
bool quit=false;//确定输入完毕
vector score_v;
while(!quit)
{
int score=0;
cin>>score;
if(score<0||score>101)
cout<<"分数有误,请检查后重新输入!"< else if(score==101)
break;
else
score_v.push_back(score);
}
order(score_v);
double sum=0;//求和
for(auto it=score_v.begin()+1;it!=score_v.end()-1;it++)
{
sum=sum+(*it);
}
double avg=sum/(score_v.size()-2);
cout<<"去掉一个最高分一个最低分,选手的得分是:"< return 0;
}
/*冒泡排序*/
void order(vector &Int_v)
{
int temp=0;
for(int i=0;i!=Int_v.size()-1;i++)
{
for(int j=i+1;j!=Int_v.size();j++)
if(Int_v[i]{
temp=Int_v[i];
Int_v[i]=Int_v[j];
Int_v[j]=temp;
}
}
}

回答(2):

你把这N个评委的给分写入一个数组 score[n]里面
然后写个getMax()和getMin(),
最后求数组的和, 减去getMax()和getMin()的值,
最后这个值除以n-2 不就完了?

回答(3):

#include
using namespace std;
int main(){
int score[100];
int N;
cin>>N;
int count=N;
int i=0;
while(N--){
cin>>a[i];
i++;
}
float sum=0;
for(int j=0;jsum+=a[j];
}
float averge=0;
average=sum/count;
cout<return 0;
}

回答(4):

我这个是C++的代码 里面含有标准库。
#include
#include
#include
#include
#include
#include
using namespace std;

class Person
{
public:
Person(){};
Person(string name, double score)
{
this->m_Name = name;
this->m_Score = score;
}

string m_Name;
double m_Score; //平均分

};

void creatPerson(vector&v,int n)
{

int score = 0;
for (int i = 0; i < n; ++i)
{
string name1 = to_string(i+1); //int类型转化为string类型
string name2 = "号选手";
name1 += name2;
Person p(name1, score);
v.push_back(p);
}

}

void printVector(vector&v)
{
for (vector::iterator it = v.begin(); it != v.end(); ++it)
{
cout << it->m_Name << "最终平均分数为:" << it->m_Score << endl;

}

}

void printVector2(vector&v)
{
for (vector::iterator it = v.begin(); it != v.end(); ++it)
{
cout << it->m_Name << " ";
}
cout << endl;
}

void setVector(vector&v,int m)
{
for (vector::iterator it = v.begin(); it != v.end(); ++it)
{
dequed;
cout << "已为" << it->m_Name <<"打了"<for (int i = 0; i < m; ++i)
{
int score = rand() % 41 + 60; // 打分区间60~100
d.push_back(score);
}

for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)
{
cout << *dit << " ";
}
cout << endl;

sort(d.begin(), d.end());

d.pop_front();
d.pop_back();

/*for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)
{
cout << *dit << " ";
}
cout << endl;*/

int sum = 0;
for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)
{
sum += *dit;
}
//cout << "sum=" << sum << "数量" << d.size() << endl;

double avg = sum*1.0 / d.size();

it->m_Score = avg;

}
cout << endl;
}

void sortScore(vector&v)
{
vector::iterator it = v.begin();

Person t;
for (unsigned int i = 0; i < v.size(); ++i)
{
for (unsigned int j = 0; j < v.size() - i - 1; ++j)
{
if (it[j].m_Score>it[j + 1].m_Score) //比较分数
{
t = it[j]; //更换整体
it[j] = it[j + 1];
it[j + 1] = t;
}
}
}

}

int main(void)
{
cout << "软件说明:" << endl;
cout << "该软件为N个评委为M个选手打分,这样每一个选手就收到N次打分,去掉一个最低分和一个最高分,算出选手的平均分,并为这些选手按平均分从低到高排序。" << endl;
cout << endl;
cout << "请输入选手的个数N=";
int n;
while (true)
{
char c = cin.peek();
if (c > '0'&& c <= '9')
{
cin >> n;
cout << "你设置的选手人数为:" << n << endl;
break;
}
cin.clear(); //重置标志位
cin.sync(); //清空缓冲区
cout << "你输入不正确,请重新输入" << endl;
}
getchar();
cout << endl;
cout << "请输入评委的个数M=";
int m;
while (true)
{
char c = cin.peek();
if (c > '0'&& c <= '9')
{
cin >> m;
cout << "你设置的评委人数为:" << m << endl;
break;
}
cin.clear(); //重置标志位
cin.sync(); //清空缓冲区
cout << "你输入不正确,请重新输入" << endl;
}
cout << endl;
cout << "请这"<cout << "(为了避免手动输入分数浪费时间,下面让计算机随机为选手打"<cout << endl;
srand((unsigned int)time(NULL)); //随机数种子
vectorv;
creatPerson(v,n);

//printVector(v);
setVector(v,m);

cout << endl;
cout << "去掉一个最低分,去掉一个最高分:"<printVector(v);

cout << endl;
cout << "选手成绩由低到高排序如下:" << endl;
sortScore(v);
printVector2(v);

system("pause");
return 0;
}