作者IOP14759 (iop14759)
看板C_and_CPP
标题[问题] 请问我这个程式能用回圈做吗?
时间Fri Mar 27 14:01:38 2020
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1585288901.A.DA4.html
1F:推 a16450: 结构+switch就可以了 03/27 14:53
2F:→ IOP14759: 是switch...case吗? 03/27 15:10
3F:推 Schottky: 每个 ID?我只看到一个 ID 03/27 16:41
4F:→ Schottky: 麻烦你用白话文说明一下程式在干嘛,输入是啥输出该是啥 03/27 16:42
5F:→ Schottky: 不要叫人看着残缺不全的程式码自己猜 03/27 16:43
6F:推 k1400: pcs用作回圈次数如何 03/27 21:41
7F:推 k1400: 原po的意思应该是目前判断8-bit,未来可能16-bit,照目前 03/27 22:07
8F:→ k1400: 的写法会越写越长 03/27 22:07
10F:→ zoo868e: 这样 不需要for 有更好的写法 给原po参考 03/27 22:24
11F:推 k1400: while(pcs- -){display += bits ++} 03/27 22:43
12F:→ k1400: id 放到 bits 你设计一下 03/27 22:44
13F:→ Lipraxde: 查表法属於稀有技能了吗? 03/27 23:17
14F:→ joe820730: 看不懂你的程式要干嘛,但字串处理的部分我会这样写: 03/28 02:58
16F:→ easypro: bit 宣告成阵列,用回圈组就可以了,转字串部分只要先做 03/28 13:37
17F:→ easypro: >>再做&1+0x30即可得到该bit ASCII , 接下来用for. 做-- 03/28 13:37
18F:→ easypro: 取bit 阵列最大开始接续就能要你的组合了。 03/28 13:37
19F:推 krscent: 我记得BCB有IntToBin, 然後再做SubString就好了~ 03/28 14:16
20F:→ aiwhat: IntToStr(ID >> (8-i) & 0x1) 1 <= i <= pcs 03/28 18:05
23F:→ KevinR: 看起来怎麽那麽像 verilog 04/06 19:58