正文

论坛上一个题目的源码2006-04-16 13:48:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jay0518/12559.html

分享到:

很久没有到论坛上来了,也没有发布文章,最近在做个软件系统,没有什么时间,今天到了论坛上看到了第24次编程比赛之第1题的帖子,虽然已经结贴了,但是我很唱时间没有写dos界面的程序了,就写了一个也作为一篇文章发了,呵呵;题目是: http://www.programfan.com/club/showbbs.asp?id=157283 //header1.h #ifndef HEADER_Header1#define HEADER_Header1const int MaxNum=30;class Match{private: int scoreNode[MaxNum]; int Number[MaxNum]; int num;public: Match(){  for(int i=0;i<7;i++)  {  scoreNode[i]=0;  Number[i]=0;  }  num=0; } void SortScore(); void ScorePlace(int place[], const int score[], int numValue);};#endif   //Source1.cpp #include <iostream>#include "Header1.h"#include <assert.h>using namespace std;extern const int MaxNum;void Match::SortScore(){ if(!scoreNode){  cout<<"No athelete score exist!"<<endl;  return; } int k,j,temptNode; k=j=temptNode=0;    for(int i=0;i<num-1;i++) {  k=i;  for(j=i+1;j<num;j++)  {   if(scoreNode[k]>scoreNode[j])    k=j;     }  if(k!=i)  {   temptNode=scoreNode[i];   scoreNode[i]=scoreNode[k];   scoreNode[k]=temptNode;  } }}void Match::ScorePlace(int place[], const int score[], int numValue){ assert(scoreNode); num=numValue; int i=0; while(i<numValue) {  scoreNode[i]=score[i];  i++; } SortScore(); int j=0; bool flag; for(int i=0;i<numValue;i++) {  flag=false;  if(score[j]==scoreNode[i])  {   flag=true;   place[j]=i+1;  }  if(flag)  {   if(j<numValue-1)   {   i=-1;   j++;   }   else   break;  } } for(int i=0;i<numValue;i++)  scoreNode[i]=place[i];    SortScore(); int k,tempt,m; for(int i=0;i<numValue;i++) {  tempt=scoreNode[i];        k=i+1;    if(scoreNode[k]==tempt)   {    while(scoreNode[k]==tempt&&k<numValue)     k++;    for(m=k;m<numValue;m++)     scoreNode[m]-=1;   } } cout<<"The final athelete numbers are:"<<endl; int temptnum; for(int j=0;j<numValue;j++) {  temptnum=place[j]-1;   cout<<" "<<scoreNode[temptnum]; } }   //Main函数 #include <iostream>#include "Source1.cpp" using namespace std; extern const int MaxNum;int score[MaxNum]; int _tmain(int argc, _TCHAR* argv[]){  int number; cout<<endl<<"please input the number of the atheletes:"; cin>>number; while(number>MaxNum||number<=0){  cout<<"error happen!Either too many atheletes or the num is minus!"<<endl;  cout<<"Correct it and input the number:"; } cout<<"please input all atheletes' score:"; for(int i=0;i<number;i++)  cin>>score[i]; int* place=new int[number]; Match* CreateMath=new Match(); CreateMath->ScorePlace(place,score,number);   return 0;}

阅读(3154) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册