[問題] int將資訊相加後如何切割

看板C_and_CPP作者 (JIM)時間9年前 (2015/06/05 14:49), 9年前編輯推噓8(8017)
留言25則, 9人參與, 最新討論串1/1
開發平台(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

06/05 15:00, , 1F
轉成字串跟int長度有限制有什麼關係 看不懂
06/05 15:00, 1F
抱歉表達的不清楚 我試想,原本得到的是5、88、974、143、52的話 就回傳5999988999997499991439999529999 再由程式二去做分隔得到答案

06/05 15:45, , 2F
double返回58897414352, int返回12332, 就知道怎麼切了
06/05 15:45, 2F

06/05 15:46, , 3F
不考慮double會不會失真 XD
06/05 15:46, 3F

06/05 15:48, , 4F
返回5.8897414352, 再從int的資料算有幾位數是需要的..
06/05 15:48, 4F

06/05 15:48, , 5F
細節自己再想想 XD
06/05 15:48, 5F

06/05 15:57, , 6F
另一個方法1000最多占10bits, double可以存64bits,
06/05 15:57, 6F

06/05 15:58, , 7F
所以囉做一下位元運算也是很容易辦到的
06/05 15:58, 7F

06/05 16:00, , 8F
為什麼不可以回傳陣列
06/05 16:00, 8F

06/05 16:03, , 9F
作業要求的吧XD
06/05 16:03, 9F

06/05 16:05, , 10F
數值應該有範圍限制?
06/05 16:05, 10F

06/05 16:05, , 11F
要求排序還不可以傳出陣列 什麼垃圾作業 拒交
06/05 16:05, 11F

06/05 17:18, , 12F
同意拒交 垃圾作業
06/05 17:18, 12F

06/05 17:29, , 13F
怕記憶體會漏就傳個陣列進去給他寫阿
06/05 17:29, 13F

06/05 18:08, , 14F
技巧練習, 多媒體業滿常用的XD
06/05 18:08, 14F

06/05 19:33, , 15F
位元運算塞在double似乎比較簡單
06/05 19:33, 15F

06/05 19:43, , 16F
呃...接收程式一得到的 int, 那 double 呢? 收不到?
06/05 19:43, 16F
謝謝大家的討論,我用ctrl大大的方法已經完成了,謝謝! 不過總覺得有點怪怪der 像是硬幹出來的QQ int跟double都接的到,我沒講清楚抱歉! 其實是想要改opencv的source code,但是方法類別改成陣列變不太出來 他宣告瓜葛的東西太多了不好弄 於是想說就回傳個整數我再來切會不會比較快~ ※ 編輯: jiqian (140.123.112.60), 06/05/2015 20:35:29

06/05 20:38, , 17F
滿好奇為何多媒體業要用這種怪異寫法?超難看不合理
06/05 20:38, 17F

06/05 20:51, , 18F
主要還是壓縮, 省空間...
06/05 20:51, 18F

06/05 20:56, , 19F
intel CPU SSE指令集都是這類的運算 XD
06/05 20:56, 19F

06/05 21:37, , 20F
double的尾數(mantissa)有51+1bit,5個1~1000的數字
06/05 21:37, 20F

06/05 21:38, , 21F
需要5*10 bit,塞進double很夠用了
06/05 21:38, 21F

06/05 21:42, , 22F
1~1000改成0~999,例如選到5、88、974、143、52的話
06/05 21:42, 22F

06/05 21:44, , 23F
minDist = 408797314251. int就放著不管好了...
06/05 21:44, 23F

06/05 21:46, , 24F
minDist = 4,087,973,142,051 上面那行打錯了
06/05 21:46, 24F

06/05 21:50, , 25F
好奇怪,這樣搞那那個命名是怎回事
06/05 21:50, 25F
文章代碼(AID): #1LSKQBdu (C_and_CPP)