程序設(shè)計(jì)報告對參賽結(jié)果分?jǐn)?shù)進(jìn)行管理方案計(jì)劃_第1頁
程序設(shè)計(jì)報告對參賽結(jié)果分?jǐn)?shù)進(jìn)行管理方案計(jì)劃_第2頁
程序設(shè)計(jì)報告對參賽結(jié)果分?jǐn)?shù)進(jìn)行管理方案計(jì)劃_第3頁
程序設(shè)計(jì)報告對參賽結(jié)果分?jǐn)?shù)進(jìn)行管理方案計(jì)劃_第4頁
程序設(shè)計(jì)報告對參賽結(jié)果分?jǐn)?shù)進(jìn)行管理方案計(jì)劃_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.(一)需求和規(guī)格說明對參賽結(jié)果分?jǐn)?shù)進(jìn)行處理:參賽選手n人(n>1),評委m人(m>2),評委給每一選手打一個分?jǐn)?shù)score (分?jǐn)?shù)score為小于等于10的一個正實(shí)數(shù))。選手的最后得分lastScore 計(jì)算方法為(1) m<9時,去掉一個最高分和一個最低分后另m-2個得分的平均值。(2) m>9時,去掉兩個最高分和兩個最低分后另m-4個得分的平均值。假設(shè)事先已經(jīng)建立了text型的數(shù)據(jù)文件f1.txt,其中依次記錄著 n個選手的編號(一個正整數(shù))、姓名(一個字符串)以及 m個評委給出的得分。請編制程序,依次從數(shù)據(jù)文件f1.txt中讀入n個選手的有關(guān)信息,而后按上述規(guī)定

2、方法計(jì)算出每一個選手的最后得分,而且往屏幕上以及另一個text型文件f2.txt中同時輸出如下形式的結(jié)果信息。假設(shè)參賽選手人數(shù)n=5,評委人數(shù)m=7,磁盤文件f1.txt中的初始數(shù)據(jù)為:1 zha ngjin 8.8 9.3 7.9 8.7 8.9 9.7 9.22 lin tao 8.9 8.2 8.6 8.8 8.5 9.1 9.33 guojia n 8.9 8.4 8.7 8.6 8.6 8.4 8.64 mali ng 7.9 8.3 8.5 8.6 8.5 8.9 8.35 liuyifa n 9.5 9.1 9.8 9.2 9.0 9.5 8.9那么,程序執(zhí)行后,屏幕顯示結(jié)果以及

3、磁盤文件f2.txt中的結(jié)果均應(yīng)該為:。亠Q 口 參賽號姓名最高分最低分累積分最后得分1zha ngji n9.77.944.98.982lin tao8.783guojia n8.98.442.98.584mali ng8.97.942.28.445liuyifa n9.88.946.39.26思考:可進(jìn)一步考慮找出比賽的第1至第k名,也在屏幕以及f2.txt中同時輸出相關(guān)的結(jié)果信息(k小于等于n,并規(guī)定若多個選手最后得分相同時,則有效分(即已刪除原來的最高 分后)中最高分高者名次優(yōu)先)。(二)設(shè)計(jì)根據(jù)題目,建立結(jié)構(gòu)體 player,其成員如下:類型成員名描述intnu

4、mber選手序號charn ame選手名字double *score選手得分然后建立函數(shù),如下表:類型函數(shù)名描述doublemax_score求最大分?jǐn)?shù)doublemin _score求最小分?jǐn)?shù)doublemax_score2求第二大分?jǐn)?shù)doublemin _score2求第二小分?jǐn)?shù)doubleget_totalscore求選手總分doubleget_tscore求選手累計(jì)得分doubleget_lastscore求選手最后得分(三)用戶手冊用戶只需將f1.txt 放入文件夾中,運(yùn)行程序,然后會在屏幕輸出文件f1.txt 和文件f2.txt中的內(nèi)容。文件 f2.txt保存在文件夾中。(四)調(diào)試

5、及測試打開文件程序,運(yùn)行計(jì)算各位選手的得分情況。(1)運(yùn)行實(shí)例:(2) 進(jìn)一步改進(jìn):無論評委幾人,程序都會找出第二高分和第二低分,可以改為只有在評委人數(shù)大 于9人時執(zhí)行。(3) 附錄 源程序#in elude <iostream>#i nclude <fstream>using n amespace std;struct player / 結(jié)構(gòu)體 playerint nu mber;char n ame40;double * score;/ 成員表列;double min_score(double s,int n);/ 求最低分?jǐn)?shù) double max_score(do

6、uble s,int n);/ 求最高分?jǐn)?shù) double get_totalscore(double s,int n);/ 求總分 double min_score2(double s,int n);/ 求第二低分?jǐn)?shù) double max_score2(double s,int n);/ 求第二高分?jǐn)?shù) double get_tscore(double s,int n);/ 求累計(jì)分?jǐn)?shù) double get_lastscore(double s,int n);/ 求最后得分 double min_score(double s,int n) 最低分double min_score=s0;for(i

7、nt i=0;i<n;i+)if(min_score>=si) min_score=si;return min_score;double max_score(double s,int n)/ 最高分double max_score=s0;for(int i=0;i<n;i+)if(max_score<=si)max_score=si;return max_score;double get_totalscore(double s,int n) / 獲取總分 , 所有分?jǐn)?shù)的和double totalscore=0;for(int i=0;i<n;i+)totalsco

8、re+=si;return totalscore;double min_score2(double s,int n)/ 求出第二低的分?jǐn)?shù) min_score2int a;double min_score2;for(int i=0;i<n;i+)if(si=min_score( s, n)a=i;for( i=0,sa=20.0;i<n;i+)if(min_score2>=si)min_score2=si;sa=min_score(s,n);return min_score2;double max_score2( double s,int n) / 求出第二高的分?jǐn)?shù)double

9、 max_score2;int b;for( int i=0;i<n;i+) if(si=max_score(s, n) b=i;for( i=0,sb=1.0;i<n;i+)if(max_score2<=si) max_score2=si; sb=max_score(s,n); return max_score2;double get_tscore(double s,int n)/ 求累計(jì)得分double tscore;if(n<9)/ 裁判小于 9 時 tscore=get_totalscore(s, n)-max_score(s,n)-min_score(s,n)

10、;else if(n>=9)/ 裁判大于 9 時tscore=get_totalscore(s, n)-max_score( s,n)-min_score( s,n)-max_score2(s, n)-min_score2(s, n);return tscore;double get_lastscore(double s,int n) / 求最后得分double lastscore;if(n<9)/ 裁判小于 9 時 lastscore=get_tscore( s,n)/(n-2);else if(n>=9)/ 裁判大于 9 時 lastscore=get_tscore( s

11、, n)/(n-4);return lastscore;/ 返回最后得分void main()ifstream fin;fin.open("f1.txt");/ 打開文本 f1.txtif (fin.fail()cout << " 文件讀取失敗 ." << endl; exit(0);int rows = 0;int cols = 0; char temp;while (!fin.eof()temp = fin.get(); if (temp = 'n') rows+;else if (temp = '.&

12、#39;) cols+;cols /= rows; / 根據(jù)文本中回車鍵和 "." 的多少判斷隊(duì)員和評委的人數(shù)player * list = new playerrows; for (int i = 0; i < rows; +i)listi.score = new doublecols; fin.clear();fin.close(); fin.open("f1.txt");if (fin.fail()cout << " 文件讀取失敗 ." << endl; exit(0);cout<<&q

13、uot; 選手得分 :"<<endl;for (int m = 0; m < rows; +m)fin >> listm.number; cout<<listm.number<<" "fin >> ; cout<< <<""for (int j = 0; j < cols; +j) fin >> listm.scorej;cout<<listm.scorej<<"

14、" cout<<endl;fin.get(); / 依次讀取文本中的數(shù)據(jù)fin.close();ofstream fout;fout.open("f2.txt"); / 建立 f2.txt 文件 if(fout.fail()cout << " 文件建立失敗 ." exit(0);累計(jì)分 最后得分 n" 向 f2.txt 中輸出表頭累計(jì)分 最后得分 n"fout << "n"fout << " 參賽號姓 名最低分最高分fout << &q

15、uot;n" /cout << "n"cout << " 參賽號姓 名最低分最高分cout << "n"fout.setf(ios_base:fixed);for (int h = 0;h < rows; +h) fout.precision(1); fout.width(4); fout << listh.number;/ 輸出隊(duì)員編號 fout.width(12);fout << ; / 輸出隊(duì)員名字 fout.width(8);fout <

16、;< min_score(listh.score,cols);/ 輸出最小分?jǐn)?shù) fout.width(10);fout << max_score(listh.score,cols); / 輸出最大分?jǐn)?shù) fout.width(11);fout << get_tscore(listh.score, cols); / 輸出累計(jì)分?jǐn)?shù) fout.width(11);fout.precision(2);fout << get_lastscore(listh.score, cols); / 輸出最后得分 fout << endl;cout.width(4);cout << listh.number;/ 輸出隊(duì)員編號 cout.width(12);cout << ; / 輸出隊(duì)員名字 cout.width(8);cout << min_score(listh.score,cols);/ 輸出最小分?jǐn)?shù) cout.width(10);cout << max_score(listh.score,co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論