如何判断输入数值在哪个数值区域(30分)

  • 主题发起人 主题发起人 lonkers
  • 开始时间 开始时间
L

lonkers

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,求输入的某个数值是否介于某段数值区域之间
要求不用大于小于判断
类似用IN [10..100] 这样子
是根据输入,判断输入数是在哪个数值区域内
比如100分十个区域段,输入52,自动判断在第6个区域段内。
怎么写,谢谢。
 
for i :=0 to 9 do
if a in [i*10..i*10+9] then Break;
结果段就是i+1 即6
第二种方法
i := a / 10 +1;即是6
不过对楼主不能用大于小于判断感到十分奇怪,能否解析一下为什么不能用那个?
 
小虫你好,谢谢你的回复
不用大于小于判断的原因呢,是怕代码太乱
比如说我有20个区域段
那我输入某个数,岂不是得在代码里写判断20次?
另外,[0..255]只能判断小于256的数,超过就不能用 if a in [0..255]了
用MOD,DIV也不好控制
因为用户需要定义的区域段,可能是1-555;556-12358;12359-4545415;
类似这样无规律的
 
啊,用大于小于的话,也不会出现写判断20次的情况的,你用一下循环不就OK了?将用户定义的段放到一个list里,写个循环遍历list,那么该循环中显式代码比较只要两个就可以了。你可以将该功能作成一个函数,每次去调一下,这样整个程序中都只要写两个比较就可以了。
伪代码如下:
for i:=0 to rangelist.size do
begin
startnum:=rangelist.startnum;
endnum:=rangelist.endnum;
if (startnum<value) and (value<endnum) then//要不要加等号楼主自行判断
begin
result:=i+1;
exit;
end
end
 
接受答案了,谢谢
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
930
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部