PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
artery
Senior Member
 
artery的大頭照
 

加入日期: Nov 2004
您的住址: Davy Jones' Locker
文章: 1,104
[求救]懂程式語言的前輩們!請教問題!

目前還在學習程式的階段.堪稱新手中的新手以下有幾個程式語言的問題想請教各位前輩們!
現在有一個表
例如
000000000000000
000010100110111
000101001101110
000111101011001
001000111101011

有這五個數值
現在如果我輸入是 000000000000011
要怎樣知道正確的答案其實是 000000000000000 這個數值呢?
請問是用if else 一個一個寫下去比對嗎? 還是有更好的辦法呢?
     
      
舊 2008-10-20, 07:30 PM #1
回應時引用此文章
artery離線中  
sibaken
*停權中*
 

加入日期: Dec 2001
文章: 800
看不懂你講什麼
000000000000011
怎麼變成
000000000000000
 
舊 2008-10-20, 07:40 PM #2
回應時引用此文章
sibaken離線中  
artery
Senior Member
 
artery的大頭照
 

加入日期: Nov 2004
您的住址: Davy Jones' Locker
文章: 1,104
引用:
作者sibaken
看不懂你講什麼
000000000000011
怎麼變成
000000000000000


抱歉沒說清楚
就是錯誤更正就對了..
因為來源碼000000000000000可能在傳輸途中因訊號減弱或者miss導致接收到的碼為000000000000011
但是必須把錯誤的000000000000011更正為000000000000000
舊 2008-10-20, 07:42 PM #3
回應時引用此文章
artery離線中  
sibaken
*停權中*
 

加入日期: Dec 2001
文章: 800

000010100110111
000101001101110
000111101011001
001000111101011
是幹啥用的
舊 2008-10-20, 07:44 PM #4
回應時引用此文章
sibaken離線中  
edjc
Junior Member
 
edjc的大頭照
 

加入日期: Jul 2004
您的住址: Verthandi的懷裡
文章: 766
記得不是有用查表的寫法嗎
記得是用[switch case]下去寫的


太久沒用C忘光光了 = =
舊 2008-10-20, 07:47 PM #5
回應時引用此文章
edjc離線中  
sibaken
*停權中*
 

加入日期: Dec 2001
文章: 800
這個不會是要用CRC32吧
舊 2008-10-20, 07:47 PM #6
回應時引用此文章
sibaken離線中  
artery
Senior Member
 
artery的大頭照
 

加入日期: Nov 2004
您的住址: Davy Jones' Locker
文章: 1,104
引用:
作者sibaken

000010100110111
000101001101110
000111101011001
001000111101011
是幹啥用的


那就是一張正確的表裡面的正確碼 共32碼
table1 = 000000000000000;
table2 = 000010100110111;
table3 = 000101001101110;
table4 = 000111101011001;
table5 = 001000111101011;
table6 = 001010011011100;
table7 = 001101110000101;
table8 = 001111010110010;
table9 = 010001111010110;
table10 = 010011011100001;
table11 = 010100110111000;
table12 = 010110010001111;
table13 = 011001000111101;
table14 = 011011100001010;
table15 = 011100001010011;
table16 = 011110101100100;
table17 = 100001010011011;
table18 = 100011110101100;
table19 = 100100011110101;
table20 = 100110111000010;
table21 = 101001101110000;
table22 = 101011001000111;
table23 = 101100100011110;
table24 = 101110000101001;
table25 = 110000101001101;
table26 = 110010001111010;
table27 = 110101100100011;
table28 = 110111000010100;
table29 = 111000010100110;
table30 = 111010110010001;
table31 = 111101011001000;
table32 = 111111111111111;

假設 我現在輸入000000000000011
然後一直跟表中數值比較比較到最後找到相似的000000000000000
就把正確數值輸出
大概就是這樣子吧~說真的 我只知道是這樣 但是不知道怎樣寫= ="
就是寫個具有錯誤更正的程式就對了~
舊 2008-10-20, 07:57 PM #7
回應時引用此文章
artery離線中  
sibaken
*停權中*
 

加入日期: Dec 2001
文章: 800
簡單講一下好了
這個應該是考你演算法
我不知道是不是最快的方式
A=000000000000011
B(0)~B(31)=table1~table32
用迴圈將A跟B(0)~b(31)相減得到C(0)~C(31)(大減小)
例如
000000000000011-000000000000000=000000000000011
000010100110111-000000000000011=000010100110100
000101001101110-000000000000011=000101001101011
...............
然後判別C當中有幾個0
最多0的就是答案
舊 2008-10-20, 08:34 PM #8
回應時引用此文章
sibaken離線中  
artery
Senior Member
 
artery的大頭照
 

加入日期: Nov 2004
您的住址: Davy Jones' Locker
文章: 1,104
引用:
作者sibaken
簡單講一下好了
這個應該是考你演算法
我不知道是不是最快的方式
A=000000000000011
B(0)~B(31)=table1~table32
用迴圈將A跟B(0)~b(31)相減得到C(0)~C(31)(大減小)
例如
000000000000011-000000000000000=000000000000011
000010100110111-000000000000011=000010100110100
000101001101110-000000000000011=000101001101011
...............
然後判別C當中有幾個0
最多0的就是答案


感謝前輩指導
好像就是這樣子~
我先寫寫看 非常感謝Orz"
舊 2008-10-20, 08:39 PM #9
回應時引用此文章
artery離線中  
wahahung
New Member
 

加入日期: Feb 2005
文章: 2
如果要快一點的話
用bitwise AND 運算, 再計算bit string中1 的次數
如果是用c++ 的話, 印象中STL 有Bitmap 的class可用,
應該很快就可以做出來


引用:
作者sibaken
簡單講一下好了
這個應該是考你演算法
我不知道是不是最快的方式
A=000000000000011
B(0)~B(31)=table1~table32
用迴圈將A跟B(0)~b(31)相減得到C(0)~C(31)(大減小)
例如
000000000000011-000000000000000=000000000000011
000010100110111-000000000000011=000010100110100
000101001101110-000000000000011=000101001101011
...............
然後判別C當中有幾個0
最多0的就是答案
舊 2008-10-20, 09:00 PM #10
回應時引用此文章
wahahung離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是07:20 AM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。