看板 C_and_CPP 關於我們 聯絡資訊
自問自答了... 分數排序的部分,應該找一下排序法就可以弄到~ 再來就是排序分數一樣的情形,所以我只寫出排學號的方法 (反正是幫忙寫的XD) ========================================================================== //一個字一個字抓 ASCII 碼出來比較大小 string ID[2]={"A00333322","A00333323"}; //不限定長度,但是每個長度都要一樣才可以用 strlen 取長度 int lenth = strlen(ID[0].c_str()); for(int i=0;i<lenth;i++) { //利用 (int) 將英文字母轉成 ASCII碼 cout << (int)ID[0][i] << " v.s " << (int)ID[1][i] << endl; //比較,一有勝負馬上就要決定大小,並跳出迴圈 if((int)ID[0][i] < (int)ID[1][i]) { cout << endl << "第一個較小" << endl; break; } else if((int)ID[0][i] == (int)ID[1][i]) { continue; } if((int)ID[0][i] > (int)ID[1][i]) { cout << endl << "第二個較小" << endl; break; } } 如果還有更好的方法,還可以提出來,上面那位大大寫的難度太高了看不懂... 不過還是謝謝了 :D ※ 引述《smallpig01 (http://0rz.tw/3BGhp)》之銘言: : 遇到一個學號比較的問題 : ex有五個學生,要比較分數高低,然後依序印出,假設分數一樣則比較學號 : 學號 分數 學號 分數 : A005 30 B003 50 : B003 50 E006 50 : A002 30 結果==> D001 40 : D001 40 A002 30 : E006 50 A005 30 : 分數的排序我會,但是遇到有英文字卡在前面的學號就不知道該怎麼比較了 : EX A002 B003 : A005 E006 : 這兩組的分數一樣,排序結果為 第一組002在005前面 第二組B在E前面 : 我目前只想到可以把前面的英文拆成 ASCII 碼 補在前方 : EX A005 = 63005 然後 存成 long int 的型態再去比 : 我的學號是存成String型態,不知道怎麼只取第一個英文字... : 還有其他更方便的方法可以比較這種類型的文字~ : 謝謝 -- Google smallpig01████████████████▕搜尋進階搜尋 | 使用偏好 ▇▇  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ 搜尋: ○所有網頁 ○中文網頁⊙繁體中文網頁 ○台灣的網頁 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.161.183
loveme00835:上面大大寫的運用到 string 內建照「字典順序」的比較 08/14 21:55
loveme00835:方法, string 物件直接抓來比就好了, 標準庫有重載比 08/14 21:56
loveme00835:較的運算子 08/14 21:56
x000032001:string.size()不用你用strlen= = 而且char應該也可以比 08/14 21:57
x000032001:吧? 不用再轉int的樣子 反正內部都用數字在存的 08/14 21:58
x000032001:而且相等那個elseif可以整個砍掉 你block裡沒其他code 08/14 21:59
x000032001:可以讓程式碼簡潔一點..orz 08/14 21:59
loveme00835:http://paste.plurk.com/show/293992/ 這是上一篇b 大 08/14 22:18
loveme00835:的概念, 只不過他把學號跟分數包在一起可以方便一起 08/14 22:19
loveme00835:換位置, 然後提供比較大小的函式, 排序的部份用標準庫 08/14 22:20
loveme00835:就好 08/14 22:20
rocmewtwo:如果排完分數再排字母OK嗎? 08/14 23:02
rocmewtwo:抱歉我耍白了,看起來應該要一起比較才OK / ˇ \ 08/14 23:06
smallpig01:原來字串可以直接比較...想了一個晚上zz 08/14 23:09
loveme00835:想要改變行為, 只要改一下char_traits, 一樣可以用其 08/14 23:14
loveme00835:他大部分的功能 08/14 23:15
loveme00835:這裡可以先對學號做排序, 再對分數作排序, 不過就要改 08/14 23:15
loveme00835:呼叫stable_sort, 個人習慣學號的寫一個, 分數寫一個 08/14 23:16
loveme00835:雖然排起來會比較慢, 不過需求臨時要改的話換一下順序 08/14 23:17
loveme00835:就解決 08/14 23:17
rocmewtwo:樓上大神一語敲醒夢中人呀!!!!!! 08/14 23:26
rocmewtwo:原來還有stable_sort這個東西,又學到一招^___^ 08/14 23:27
rocmewtwo:STL的東東沒學全,真是麻煩>_< 08/14 23:28
loveme00835:我不是大神... 08/14 23:34
rocmewtwo:還是很感謝啦,讓小弟學習到新東西 08/14 23:38
loveme00835:你對 char_traits 沒興趣嗎? 0.0 08/14 23:41
rocmewtwo:沒接觸過耶 >_< 08/14 23:44
loveme00835:string 實際上是typedef後的型別別名, 你可以研究一下 08/14 23:45
loveme00835:他真正的長相, 跟比大小時是怎麼運作的, 這還蠻好玩 08/14 23:46
yoco315:樓上大神一語敲醒夢中人呀!!!!!! 08/14 23:48
hilorrk:樓上和樓樓上都是大神 08/14 23:51
loveme00835:樓樓上才是真的大神 = = 08/14 23:51