统计投票数 谢谢 有运行速度要求(20分)

  • 主题发起人 主题发起人 yahoo123
  • 开始时间 开始时间
Y

yahoo123

Unregistered / Unconfirmed
GUEST, unregistred user!
例如有一组数据列表如下:(统计投票数)
张文
李平
颜身爱
王小军
张文
陈三豪
张文
颜身爱
李平
江永家
。。。。数据量大,有速度要求
如何快速将以上数据整理成以下形式:
张文(3)
李平(2)
颜身爱(2)
王小军(1)
陈三豪(1)
江永家(1)
 
曾有这里的一位朋友给出如下代码,当时使用还可以,但是现在发现依然有一个问题
由于QQ现在没有联系到他,所以请各路高人帮忙看一下,谢谢
我假设你放在list,代码未必对。
var c,no:integer;
c:=0;
no:=0;
for i:=0 to list.count-2 do
begin
if list.items=list.items[i+1]then
begin
inc(no);
end
else
begin
//相邻已经不一致,你可以加入到另外的list2
list2.add(list.imtems[c]+inttostr(no))
c:=i;
no:=1;
end;
end;
 
刚注册的新用户,不能提问,借宝地一用。
怎么读取这样的文件的数据?
数据格式说明:该文件依次交替存放2个波形的数据,每个波形用10位(bit)来存储。具体方式为第1/2/3/4字节依次为:波形1的低2位,波形1的高8位;波形2的低2位,波形2的高8位;如此循环。
我现在的做法是先把这个文件读到一个byte数组里,然后将第2字节*4+第1字节作为波形1的数据,将第4字节*4+第3字节作为波形2的数据。但是感觉做出来的图形不太对劲。不知道那位同志能指点一二,谢谢了先。如果需要文件,可以加我的QQ:315331647(不知道事后能不能给分,望高手不吝赐教[:)])
 
通过以上代码后,得到的结果如下:
陈三豪1
江永家1
李平1
王小军1
颜身爱1
江永家2
王小军2
颜身爱2
颜身爱3
没有达到题目所需要的结果(就是相同的字符串只需要出现一次,后面显示数字即可)
张文(3)
李平(2)
颜身爱(2)
王小军(1)
陈三豪(1)
江永家(1)
 
你的那个计数的循环有问题,那个程序确实应该得到那样的结果。
我觉得,你的程序可以做两次循环,第一次将互不相同的数据放到一个数组里面,第二次再统计不重复数组里面每个元素出现的个数。
 
谢谢溺水三千,能给一段你的代码出来吗,谢谢
 
有高手直接给出代码吗,这个问题是不是太简单了,没人理会啊,哎...
 
着急要用的...我不是专业搞编程的,所以大家帮忙啊
 
大家帮忙啊
 
s[0]:=list.items[0];
j:=0;
for i:=0 to list.count-1 do
begin
k:=j;
stemp:=list.items;
repeat
if stemp=s[j] then
break
else begin
j:=j+1;
s[j]:=stemp;
end;
k:=k-1;
until (k<0)
end;// 将列表中不重复的元素组成一个数组
//下面统计每个元素出现的个数
for i:=0 to j do
for k:=0 to list.count-1 do
if s=list.items[k] then
Nums:=Nums[i+1
end;
 
第2个循环能达到目的,好像有重复数据的比较,一时想不到好办法,就这样吧,睡觉了。如果你能帮忙宣传一下我的问题那就谢谢了!
刚注册的新用户,不能提问,借宝地一用。
怎么读取这样的文件的数据?
数据格式说明:该文件依次交替存放2个波形的数据,每个波形用10位(bit)来存储。具体方式为第1/2/3/4字节依次为:波形1的低2位,波形1的高8位;波形2的低2位,波形2的高8位;如此循环。
我现在的做法是先把这个文件读到一个byte数组里,然后将第2字节*4+第1字节作为波形1的数据,将第4字节*4+第3字节作为波形2的数据。但是感觉做出来的图形不太对劲。不知道那位同志能指点一二,谢谢了先。如果需要文件,可以加我的QQ:315331647(不知道事后能不能给分,望高手不吝赐教[:D])
 
select *,count(name) as 投票数 from 表
group by name
这是最好的方法了,这么大的数据量,用数据库比较合适
 
select name,count(name) as 投票数 from 表
group by name
这是最好的方法了,这么大的数据量,用数据库比较合适
真不明白,为什么没有人给出数据库的解决方案
 
取结果时可以用select name+'('+投票数+')' from 结果表
把结果表用上面的SQL代入就可以了
 
对,强烈支持用数据库实现。
 
以我估计,你现在情况是有一个文本文件,每一行记着一个人名,想统计一下投票数
那么你只要导入到access或sql server中,照着上面我所说的,问题就很简单了
 
如果是数据量大而且要求速度的话,用数据库实现是最好的选择。即先把那些数据读到数据库中,然后用数据库的统计功能很方便就能实现了。以下广告:[:(]
------------
第2个循环能达到目的,好像有重复数据的比较,一时想不到好办法,就这样吧,睡觉了。如果你能帮忙宣传一下我的问题那就谢谢了!
刚注册的新用户,不能提问,借宝地一用。
怎么读取这样的文件的数据?
数据格式说明:该文件依次交替存放2个波形的数据,每个波形用10位(bit)来存储。具体方式为第1/2/3/4字节依次为:波形1的低2位,波形1的高8位;波形2的低2位,波形2的高8位;如此循环。
我现在的做法是先把这个文件读到一个byte数组里,然后将第2字节*4+第1字节作为波形1的数据,将第4字节*4+第3字节作为波形2的数据。但是感觉做出来的图形不太对劲。不知道那位同志能指点一二,谢谢了先。如果需要文件,可以加我的QQ:315331647(不知道事后能不能给分,望高手不吝赐教[:D])
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部