[問題] 請問我這個程式能用迴圈做嗎?

看板C_and_CPP作者 (iop14759)時間4年前 (2020/03/27 14:01), 編輯推噓7(7016)
留言23則, 12人參與, 4年前最新討論串1/5 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...) WIN8 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) c++builder 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 想請教此程式如果想寫成迴圈該怎麼寫? 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) int pcs,ID,count; AnsiString bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7,ID_display; //將ID轉為2進制的字串 bit1=(ID&0x02)>>1; bit2=(ID&0x04)>>2; bit3=(ID&0x08)>>3; bit4=(ID&0x10)>>4; bit5=(ID&0x20)>>5; bit6=(ID&0x40)>>6; bit7=(ID&0x80)>>7; ////////////////////////////////////////////////////////////////// if(pcs==1)ID_display=bit7; if(pcs==2)ID_display=bit7+bit6; if(pcs==3)ID_display=bit7+bit6+bit5; if(pcs==4)ID_display=bit7+bit6+bit5+bit4; if(pcs==5)ID_display=bit7+bit6+bit5+bit4+bit3; if(pcs==6)ID_display=bit7+bit6+bit5+bit4+bit3+bit2; if(pcs==7)ID_display=bit7+bit6+bit5+bit4+bit3+bit2+bit1; //最多7個 ///////////////////////////////////////////////////////////////// if(count==3){Form1->Label31->Caption=ID_display;} //第三欄id if(count==2){Form1->Label19->Caption=ID_display;} //第二欄 id if(count==1){Form1->Label1->Caption=ID_display;} //第一欄id ////////////////////////////////////////////////////////////////// 補充說明(Supplement): 這是小弟的最近寫的,每次讀1~7個ID,每個ID隨機為1或0 我是用字串+字串的方式來顯示每個ID分別是1或0 因為暫時沒有需要太多次迴圈所以用笨方法一個個判斷 但是自己知道這方法很笨,如果以後要讀更多ID我就無解了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.158.217 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1585288901.A.DA4.html

03/27 14:53, 4年前 , 1F
結構+switch就可以了
03/27 14:53, 1F

03/27 15:10, 4年前 , 2F
是switch...case嗎?
03/27 15:10, 2F

03/27 16:41, 4年前 , 3F
每個 ID?我只看到一個 ID
03/27 16:41, 3F

03/27 16:42, 4年前 , 4F
麻煩你用白話文說明一下程式在幹嘛,輸入是啥輸出該是啥
03/27 16:42, 4F

03/27 16:43, 4年前 , 5F
不要叫人看著殘缺不全的程式碼自己猜
03/27 16:43, 5F

03/27 21:41, 4年前 , 6F
pcs用作迴圈次數如何
03/27 21:41, 6F

03/27 22:07, 4年前 , 7F
原po的意思應該是目前判斷8-bit,未來可能16-bit,照目前
03/27 22:07, 7F

03/27 22:07, 4年前 , 8F
的寫法會越寫越長
03/27 22:07, 8F

03/27 22:24, 4年前 , 9F

03/27 22:24, 4年前 , 10F
這樣 不需要for 有更好的寫法 給原po參考
03/27 22:24, 10F

03/27 22:43, 4年前 , 11F
while(pcs- -){display += bits ++}
03/27 22:43, 11F

03/27 22:44, 4年前 , 12F
id 放到 bits 你設計一下
03/27 22:44, 12F

03/27 23:17, 4年前 , 13F
查表法屬於稀有技能了嗎?
03/27 23:17, 13F

03/28 02:58, 4年前 , 14F
看不懂你的程式要幹嘛,但字串處理的部分我會這樣寫:
03/28 02:58, 14F

03/28 02:58, 4年前 , 15F

03/28 13:37, 4年前 , 16F
bit 宣告成陣列,用迴圈組就可以了,轉字串部分只要先做
03/28 13:37, 16F

03/28 13:37, 4年前 , 17F
>>再做&1+0x30即可得到該bit ASCII , 接下來用for. 做--
03/28 13:37, 17F

03/28 13:37, 4年前 , 18F
取bit 陣列最大開始接續就能要你的組合了。
03/28 13:37, 18F

03/28 14:16, 4年前 , 19F
我記得BCB有IntToBin, 然後再做SubString就好了~
03/28 14:16, 19F

03/28 18:05, 4年前 , 20F
IntToStr(ID >> (8-i) & 0x1) 1 <= i <= pcs
03/28 18:05, 20F

03/29 05:53, 4年前 , 21F
std::bitset 可以做到你要的功能 https://bit.ly/2UMnn2z
03/29 05:53, 21F

03/29 06:00, 4年前 , 22F
indexing 寫錯 :p https://bit.ly/2wNhGJJ (C++17)
03/29 06:00, 22F

04/06 19:58, 4年前 , 23F
看起來怎麼那麼像 verilog
04/06 19:58, 23F
文章代碼(AID): #1UVPR5sa (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1UVPR5sa (C_and_CPP)