请求各位大侠:数组处理问题,奉献100分(100分)

  • 主题发起人 主题发起人 pjxy
  • 开始时间 开始时间
P

pjxy

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有一数组a_array, 数组中有三项 a_array.xm_id,a_array.xmmc,
a_arrary.xmje ,如果数组中成员中遇到xm_id有一个相同的,则相同的成员xmje合并
同时数组的成员减一,i成为i-1,请问如何写出具体的算法。

 
用TList好象更容易处理
 
看看这样行不行?
////////////////////////////
type
TA=record
xm_id:integer;
xmmc,
xmje:string;
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
list:tlist;
a:TA;
pa:^TA;
i,j,id:integer;
s:string;
begin
list:=TList.Create;
//<这里把你的数据做一个循环读入
a.xm_id :=1;
a.xmmc :='aa';
a.xmje :='aaaaaa';
pa:=@a;
list.Add(pa);
//>以上代码变成从文件中读入数据。
//下面的代码是假设数据已经读入list中。
for i:=0 to list.Count -1 do
begin
id:=TA(list.Items^).xm_id;
s:=TA(list.Items^).xmmc;
for j:=i+1 to list.Count -1 do
if id=TA(list.Items[j]^).xm_id then
s:=s+TA(list.Items[j]^).xmmc ;
TA(list.Items^).xmmc:=s;
end;
end;
/////////////////////////////
 
谢谢savenight,关键是如何处理数组的成员数,如有一个相同,则i变为 i-1,两个
则i变为i-2, 重要是判断相同的数量,和产生新的成员的数组成员个数。


 
为什么要判断相同的数量?
遇到一个相同的用list.Delete(index);删除就行了,数组成员个数由tlist自动维护呀。
 
接受答案了.
 
后退
顶部