回 帖 发 新 帖 刷新版面

主题:[讨论]有没有办法判断〓两个数组〓→→→→→→→→是否相同?

先是这样[em15]
然后这样[em18]
然后这样[em10]
终于这样[em7]

求佛不如求你们,高手行行好,留下点笔墨吧~~~[em4]

回复列表 (共9个回复)

沙发

先顶下我自己,好让帖子醒目点,才能群雄竞至~奸笑ing~

板凳


if [em4]=[em5] then
begin
[em9]
end;

3 楼

老大~别玩在下好不好,我还年轻,受不起刺激。。。。

我那几个图象说的是我的思考过程而已,无他,不是给大家放幻灯- -!

4 楼

放出你的生成数组的代码,我才能回答哦,因为我不知你数组是点样生成的.

5 楼

恩人啊~我这就放,什么都放出来,您老看着:

......
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 楼

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 楼

呵呵,循环是下策。直接用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 楼

忽视了一个问题,改一下,把上面我代码里的 Length(A) 替换成 Length(A) * SizeOf(Integer)

为什么要这样改?你自己想一下就明白了。

呵呵,我的回贴是不是要给50分啊?  :)

9 楼

顺便说一下,把整型数组的每个元素转换为字符串,然后相接,再用相接后的字符串进行比较------这种方法并不严密。因为,例如:

Arr1 : array[0..3] of integer = (1,23,45,6);
Arr2 : array[0..3] of integer = (12,3,4,56);

这两个数组如果把元素转换为字符串再相接,结果都是 '123456'

我来回复

您尚未登录,请登录后再回复。点此登录或注册