主题:[讨论]有没有办法判断〓两个数组〓→→→→→→→→是否相同?
xiaotian9
[专家分:60] 发布于 2007-09-04 15:52:00
先是这样[em15]
然后这样[em18]
然后这样[em10]
终于这样[em7]
求佛不如求你们,高手行行好,留下点笔墨吧~~~[em4]
回复列表 (共9个回复)
沙发
xiaotian9 [专家分:60] 发布于 2007-09-04 15:55:00
先顶下我自己,好让帖子醒目点,才能群雄竞至~奸笑ing~
板凳
wealthy [专家分:1840] 发布于 2007-09-04 16:33:00
if [em4]=[em5] then
begin
[em9]
end;
3 楼
xiaotian9 [专家分:60] 发布于 2007-09-04 16:41:00
老大~别玩在下好不好,我还年轻,受不起刺激。。。。
我那几个图象说的是我的思考过程而已,无他,不是给大家放幻灯- -!
4 楼
wealthy [专家分:1840] 发布于 2007-09-04 17:09:00
放出你的生成数组的代码,我才能回答哦,因为我不知你数组是点样生成的.
5 楼
xiaotian9 [专家分:60] 发布于 2007-09-04 17:29:00
恩人啊~我这就放,什么都放出来,您老看着:
......
var
a,b,c: array[0..7] of integer;
i:integer;
......
begin
for i:=0 to 7 do
begin
a[i]:=i;
b[i]:=i;
c[i]:=0;
end;
end
老人家,您请看,这样三个数组就生成了,明显a和b是一样的,c就不同了.
可我想以程序代码运行判断得知结果,而不是凭主观判断.您老看,能解决吗?
6 楼
wealthy [专家分:1840] 发布于 2007-09-05 13:42:00
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c: array[0..7] of integer;
i:integer;
begin
for i:=0 to 7 do
begin
a[i]:=i;
Edit1.Text:=inttostr(a[i]);//只用于显示A的结果
b[i]:=i;
Edit2.Text:=inttostr(b[i]);//只用于显示B的结果
c[i]:=0;
Edit3.Text:=inttostr(c[i]);//只用于显示C的结果
begin
if a[i]<>b[i] then
Application.MessageBox('a和B不相同','警告',MB_YesNo+MB_ICONINFORMATION)
else begin
Application.MessageBox('a和B相同','警告',MB_YesNo+MB_ICONINFORMATION) ;
end;
end;
end;
end;
7 楼
长尾兔 [专家分:3630] 发布于 2007-09-06 10:18:00
呵呵,循环是下策。直接用CompareMem函数比较内存块就可以了:
var
A,B,C : array[0..7] of integer;
procedure TForm1.Button1Click(Sender: TObject);////这是照抄你的赋值语句
var
I : integer;
begin
for I := 0 to 7 do begin
A[I] := I;
B[I] := I;
C[I] := 0;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);////这是进行比较的部分
begin
if CompareMem(@A[Low(A)], @B[Low(B)], Length(A)) then
Showmessage('AB相同') else Showmessage('AB不同');
if CompareMem(@A[Low(A)], @C[Low(C)], Length(A)) then
Showmessage('AC相同') else Showmessage('AC不同');
end;
8 楼
长尾兔 [专家分:3630] 发布于 2007-09-06 10:20:00
忽视了一个问题,改一下,把上面我代码里的 Length(A) 替换成 Length(A) * SizeOf(Integer)
为什么要这样改?你自己想一下就明白了。
呵呵,我的回贴是不是要给50分啊? :)
9 楼
长尾兔 [专家分:3630] 发布于 2007-09-06 11:00:00
顺便说一下,把整型数组的每个元素转换为字符串,然后相接,再用相接后的字符串进行比较------这种方法并不严密。因为,例如:
Arr1 : array[0..3] of integer = (1,23,45,6);
Arr2 : array[0..3] of integer = (12,3,4,56);
这两个数组如果把元素转换为字符串再相接,结果都是 '123456'
我来回复