delphi计算问题,请假高手

ou630j 2009-04-09 09:05:25
假设我有
数据Tstrings
myTstrings:Tstrings;
现在共有14个数据
从0到13分别等于1,2,4,8.。。。。
后一个数据就是前一个数据的乘2,
现在我有数据假设为3,我如何得到是
myTstrings.Strings[0]
和myTstrings.Strings[1]
的相加,或者我是数据如22得到
myTstrings.Strings[1]
myTstrings.Strings[2]
myTstrings.Strings[4]

请问有什么好的方法,请高手指点


...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ou630j 2009-04-09
  • 打赏
  • 举报
回复
秀峰的方法解决了,分是你的,还有一件事情,就是为什么csdn发帖很容易发重复帖的,还有一个一样的贴子,去那里接分吧
xiaoxiao_8 2009-04-09
  • 打赏
  • 举报
回复
实际上就是把一个十进制数转换成二进制数。输出是1的位置
jadeluo 2009-04-09
  • 打赏
  • 举报
回复
有下面的这个函数:

function ValueToStrings(AStrings: TStrings; Value: Integer): String;
var
Index: Integer;
begin
Result := '';
Index := 0;
while Value > 0 do
begin
if odd(Value) then Result := Result + AStrings[Index];
Value := Value shr 1;
inc(Index);
end;
end;


调用的例子:

procedure TForm1.Button1Click(Sender: TObject);
var
MyStrings: TStrings;
begin
MyStrings := TStringList.Create;
try
MyStrings.Add('A');
MyStrings.Add('B');
MyStrings.Add('C');
MyStrings.Add('D');
MyStrings.Add('E');
MyStrings.Add('F');
MyStrings.Add('G');
MyStrings.Add('H');
MyStrings.Add('I');
MyStrings.Add('J');
ShowMessage (ValueToStrings(MyStrings, 22));
finally
MyStrings.Free;
end;
end;
new_fly 2009-04-09
  • 打赏
  • 举报
回复
做一个循环嵌套,第一次,只考虑一个数,找到结果就结束,否则,任意两个组,有结果结束,没有进行任意三个组和,以此类推
就14个数据,执行起来还是很快的,不用考虑效率,这个方法有点笨,但很简单。
lyguo 2009-04-09
  • 打赏
  • 举报
回复
还是没看太明白 。

或者我是数据如22得到
myTstrings.Strings[1]
myTstrings.Strings[2]
myTstrings.Strings[4]

这个。。。。


等有时间再来看吧。汗
lyguo 2009-04-09
  • 打赏
  • 举报
回复
哦,没看清 ,不好意思 ,我再补充一下,

3+1 不就是 2的2次方嘛,

所以,要取的 1 和 2 两个相加数中最大数, 也就是2进制的 第二位。

也就是
lyguo 2009-04-09
  • 打赏
  • 举报
回复
2 的多少次方么?

相当于2进制 有多少位 是一样的。

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧