c 實現 考試排名

2021-10-03 11:26:43 字數 2739 閱讀 9428

程式設計思維作業和實驗使用的實**測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?

我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將它ac之後,它便會和你算筆總賬,表明這題共錯誤提交了幾次。

在歲月的長河中,你通過的題數雖然越來越多,但通過每題時你所共花去的時間(從最開始算起,直至通過題目時的這段時間)都會被記錄下來,作為你曾經奮鬥的痕跡。特別的,對於你通過的題目,你曾經的關於這題的每次錯誤提交都會被算上一定的單位時間罰時,這樣一來,你在做出的題數上,可能領先別人很多,但是在做出同樣題數的人中,你可能會因為罰時過高而處於排名上的劣勢。

例如某次考試一共八道題(a,b,c,d,e,f,g,h),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上了一對括號,裡面有個正數b,則表示該學生ac了這道題,耗去了時間a,同時曾經錯誤提交了b次。例子可見下方的樣例輸入與輸出部分。

輸入資料報含多行,第一行是共有的題數n(1≤n≤12)以及單位罰時m(10≤m≤20),之後的每行資料描述乙個學生的資訊,首先是學生的使用者名稱(不多於10個字元的字串)其次是所有n道題的得分現狀,其描述採用問題描述中的數量標記的格式,見上面的**。

根據這些學生的得分現狀,輸出乙個實時排名。實時排名顯然先按ac題數的多少排,多的在前,再按時間分的多少排,少的在前,如果湊巧前兩者都相等,則按名字的字典序排,小的在前。每個學生佔一行,輸出名字(10個字元寬),做出的題數(2個字元寬,右對齊)和時間分(4個字元寬,右對齊)。名字、題數和時間分相互之間有乙個空格。資料保證可按要求的輸出格式進行輸出。

8

20gugudong 96-3

40(3)

001-

80hrz 10767-

30082

00tt 120(3

)3010(

1)-3

04721(

2)-2

omrailgun 0-99

-80-

666-

100860-

9999996

yjq -237

(2)13

-10113(2

)79(1

)-1zjm 0057

(5)0

099(3

)-70

tt          5

348yjq 4

342gugudong 3

197hrz 3

256zjm 2

316omrailgun 0

0

首先從輸入的資料中分離出name和得分情況。

然後判斷得分情況,對於第乙個字元不為'0'或者'-'的算最後的成績,並記入做出來的題數。

計算過程:將前面整數部分相加,括號裡面的數字乘罰時後在相加得出最後的總時間。

建立資料結構儲存每個人的姓名,成績,以及時間,為後面的排序輸出做準備。

分割讀取的一行字串,儲存成字串陣列,然後逐個判斷,第乙個為姓名,後面為做題情況,依次判斷第乙個字元,來確定是否加入計算最後的總時間以及做出的題數。

對於成功做出的題的時間分為兩部分,前面的時間,以後括號裡的罰時,需要相加。

#include

#include

#include

#include

#include

#include

using

namespace std;

string str[20]

;//讀取 每乙個人的得分情況 一行乙個

struct score};

score ans[

10000];

//儲存每個人的成績

void

cal_time

(string& t,

int& time,

int& m)

} time = time + a;

//加入總時間

a =0;

for(

int i = b +

1; i < t.

length()

-1; i++)}

time = time + a * m;

//罰時係數乘以罰時 加入總時間

}else

} time = time + a;}}

void

cal(string str,

int x,

int& m,

int& count)

} ans[count]

.num = c;

//做題數

}void

sort

(int

& count)

}int

main()

}sort

(count)

;return0;

}

這道題剛開始錯了好幾遍,以為是函式錯了,後來發現不是函式錯了,而是讀入錯誤,讀入資料如果用scanf()函式讀取,遇到乙個"空格" 時前面的算乙個字串,然後跳過這個"空格"繼續讀,發現每個資料之間不是空格,而且每個資料間的"空格"不是固定大小,所以採用cin讀入。(其實是我太菜了,scanf()用的不夠好!!!)。

1 3 6 考試排名 hdu

c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該題錯誤提交了幾回。雖然你在題數上,大步地...

基礎93 考試排名

93 考試排名 問題描述 c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該題錯誤提交了幾...

HDU 2093 考試排名

problem description c 程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?我們做好了題目的解答,提交之後,要麼 ac 要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 ac 後,就要與你算一算帳了,總共該...