我通过特定的方式生成一些随机数,如何用DELPHI实现统计每个随机数的出现次数?
比如:
生成的数是:123,567,214,890,940,123,890,123....
如何不通过数据库编程实现:123 ---> 2, 567-->1,214--->1,890--->2 ,谢谢DELPHI FANS
比如:
生成的数是:123,567,214,890,940,123,890,123....
如何不通过数据库编程实现:123 ---> 2, 567-->1,214--->1,890--->2 ,谢谢DELPHI FANS
解决方案 »
- fastreport 中预览打印后,如果用命令来关闭预览窗口
- 假如我一个TreeView 有多个项目 而每个项目都有子项目
- 周末两日游
- Delphi中将LiseView中的内容导入到Excel中的问题
- 大家帮我看看这个16进制数据校验和是怎么算出来的??
- 跪求:哇哇(痛苦!)adoquery问题!
- ======接口问题2======
- 有什么办法可以查到我的程序中开出来的所有定时器及设定值???
- delphi5用ado连接oracle8的问题。
- delphi 调用 C# web services 出现异常:The operation timed out....
- 关于DLL的调试问题
- 求助。被按日期排序卡主了。。
i,count:integer;
sl:TStringList;
begin
sl:=TStringList.Create; //产生100个十以内的随机数:
Randomize;//初始化
for i:=0 to 99 do sl.Append(inttostr(random(10))); //将产生的随机数及其重复次数在memo显示:
sl.Sorted:=True;
s:='';
count:=1;
for i:=0 to 99 do begin
if s<>sl.Strings[i] then begin
if s<>'' then
memo1.Lines.Append(s+' 出现 '+inttostr(count)+' 次');
s:=sl.Strings[i];
count:=1;
end
else inc(count);
end;
if s<>sl.Strings[99] then
memo1.Lines.Append(sl.Strings[99]+' 出现 1 次')
else
memo1.Lines.Append(s+' 出现 '+inttostr(count)+' 次'); sl.Free;
end;
其实,通过数据库编程也不是什么难事呀,用 TClientDataSet 来实现就不需安装数据库了。
PRec = ^TRec;
TRec = record
Number, Count: Integer;
Next: PRec;
end;function GetCount(const IntegerArr: array of Integer): PRec;
var
I: Integer;
P, Tail: PRec;
begin
Result := nil;
for I := Low(IntegerArr) to High(IntegerArr) do
begin
P := Result;
while P <> nil do
if P^.Number = IntegerArr[I] then
begin
Inc(P^.Count);
Break
end else
P := P^.Next; if P = nil then
begin
New(P);
P^.Number := IntegerArr[I];
P^.Count := 1;
P^.Next := nil;
if Result = nil then
Result := P
else
Tail^.Next := P;
Tail := P
end;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
P, L, T: PRec;
I: Integer;
begin
L := GetCount([123,567,214,890,940,123,890,123]);
P := L;
while P <> nil do
begin
ShowMessageFmt('%d ---> %d', [P^.Number, P^.Count]);
P := P^.Next;
end; {释放}
P := L;
while P <> nil do
begin
T := P^.Next;
Dispose(P);
P := T;
end;
end;