看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C++ 問題(Question): 程式一 predict(InputArray _src, int &minClass, double &minDist) 會將int值1~1000做一個隨機排序,之後取五個int 但這個程式只能回傳一個int及一個double 不可以回傳陣列 程式二 接收程式一得到的int以及double,想辦法變成五個int,做一個有序(原本隨機取得的順序)排列 請問我該如何達成這件事 有想說轉成字串用9999之類的來隔開,但是int長度有限制沒辦法這麼做 請問有人有遇過類似的事情,有什麼辦法可以做到嗎? 謝謝各位的解答! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.112.60 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1433486987.A.9F8.html
MOONRAKER: 轉成字串跟int長度有限制有什麼關係 看不懂 06/05 15:00
抱歉表達的不清楚 我試想,原本得到的是5、88、974、143、52的話 就回傳5999988999997499991439999529999 再由程式二去做分隔得到答案
ctrlbreak: double返回58897414352, int返回12332, 就知道怎麼切了 06/05 15:45
ctrlbreak: 不考慮double會不會失真 XD 06/05 15:46
ctrlbreak: 返回5.8897414352, 再從int的資料算有幾位數是需要的.. 06/05 15:48
ctrlbreak: 細節自己再想想 XD 06/05 15:48
ctrlbreak: 另一個方法1000最多占10bits, double可以存64bits, 06/05 15:57
ctrlbreak: 所以囉做一下位元運算也是很容易辦到的 06/05 15:58
MOONRAKER: 為什麼不可以回傳陣列 06/05 16:00
ctrlbreak: 作業要求的吧XD 06/05 16:03
azureblaze: 數值應該有範圍限制? 06/05 16:05
MOONRAKER: 要求排序還不可以傳出陣列 什麼垃圾作業 拒交 06/05 16:05
fireslayer: 同意拒交 垃圾作業 06/05 17:18
MOONRAKER: 怕記憶體會漏就傳個陣列進去給他寫阿 06/05 17:29
ctrlbreak: 技巧練習, 多媒體業滿常用的XD 06/05 18:08
prismwu: 位元運算塞在double似乎比較簡單 06/05 19:33
suhorng: 呃...接收程式一得到的 int, 那 double 呢? 收不到? 06/05 19:43
謝謝大家的討論,我用ctrl大大的方法已經完成了,謝謝! 不過總覺得有點怪怪der 像是硬幹出來的QQ int跟double都接的到,我沒講清楚抱歉! 其實是想要改opencv的source code,但是方法類別改成陣列變不太出來 他宣告瓜葛的東西太多了不好弄 於是想說就回傳個整數我再來切會不會比較快~ ※ 編輯: jiqian (140.123.112.60), 06/05/2015 20:35:29
overhead: 滿好奇為何多媒體業要用這種怪異寫法?超難看不合理 06/05 20:38
ctrlbreak: 主要還是壓縮, 省空間... 06/05 20:51
ctrlbreak: intel CPU SSE指令集都是這類的運算 XD 06/05 20:56
cismjmgoshr: double的尾數(mantissa)有51+1bit,5個1~1000的數字 06/05 21:37
cismjmgoshr: 需要5*10 bit,塞進double很夠用了 06/05 21:38
cismjmgoshr: 1~1000改成0~999,例如選到5、88、974、143、52的話 06/05 21:42
cismjmgoshr: minDist = 408797314251. int就放著不管好了... 06/05 21:44
cismjmgoshr: minDist = 4,087,973,142,051 上面那行打錯了 06/05 21:46
anyoiuo: 好奇怪,這樣搞那那個命名是怎回事 06/05 21:50