什么函数可以检测一个数字在几个数字中排地第几?

sunaldo 2003-10-19 06:51:29
比如有20个数字,有没有什么函数或者方法获得其中一个数字在这20个数字中由大到小排在第几位呢?
...全文
342 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
dotnba 2003-10-20
  • 打赏
  • 举报
回复
利用DataStore,Sort,然后Find
fulongbiao 2003-10-20
  • 打赏
  • 举报
回复
把数字当成字符串来处理,主要就是mid这个函数
yewenlin 2003-10-20
  • 打赏
  • 举报
回复
小弟刚处理完这类问题,和各们一样自已写一个函数来解决。
具体问题是:有一十选手的分数,和编号等信息存入数据表(zf)中,要求将各名选手的成绩名次排 出来,也存入表中,便于经后输出。
1.处理之前先定义一个结构体:str_mysort{
integer sort
integer id
real score
}
2.定义排名函数,在程序中调用它:
f_sort()
{
nt i,j
str_mysort a[10],t
//从数据库中提取总分,并给结构体赋初值
for i=1 to 10
select zf
into :a[i].score
from zf
where id=:i;
a[i].sort=0
a[i].id=i
next
//用冒泡法给数组a排序
for i=1 to 10
for j=2 to (11 - i)
if (a[j - 1].score<a[j].score) then
t.id=a[j - 1].id
t.score=a[j - 1].score
a[j - 1].id=a[j].id
a[j - 1].score=a[j].score
a[j].id=t.id
a[j].score=t.score
end if
next
next
//设置数组序号分量的值
a[1].sort=1
for i=2 to 10
if(a[i].score = a[i - 1].score) then
a[i].sort=a[i - 1].sort
else
a[i].sort=a[i - 1].sort + 1
end if
next
//更新数据表中名次的值
for i=1 to 10
update zf
set mc =:a[i].sort
where id =:a[i].id;
next
}
eminena 2003-10-20
  • 打赏
  • 举报
回复
因为只涉及数字,所以,可以用特殊方法:
1.求出字符串中有哪些数字
2.求出字符串中的数字的排位(如字符串为'4819',则'1'排第一,'4'排第二,.....),用新字符串记录,此处为 '1489'
3.要查找的字符在新字符串中的位置即是该字符在指定字符串中的排位


string ls_nu='0123456789'
string ls_temp='' //即指定的字符串(20个字符)
string ls_fi='4' //指定要查找的字符
long i,lo_nu[0 to 9]
long j //记录要找的字符在指定的字符串中排位

for i=0 to 9
if pos(ls_temp,string(i))=0 then
ls_nu=replace(ls_nu,pos(ls_nu,string(i)),1,'')
end if
end for
j=pos(ls_nu,ls_fi)


jdsnhan 2003-10-20
  • 打赏
  • 举报
回复
八仙过海。
liliang800207 2003-10-19
  • 打赏
  • 举报
回复
自己写吧
先把数字按大小排队
在按折半查找法
liujiaqiang 2003-10-19
  • 打赏
  • 举报
回复
首先对那串数字进行由大到小排序,然后查找那个数字在排序数字串中是第多少位就可以了。
wooaoo 2003-10-19
  • 打赏
  • 举报
回复
建议自己写函数,然后免费给大家使用,,呵呵

szpqq 2003-10-19
  • 打赏
  • 举报
回复
上面的方法和我不谋而遇哦
另外可以用数组啊
循环把所有值赋在一数组中
然后再根据个数循环一次在循环中
拿出每个值与某一值比,大于的话设定一变量加一
最后把那变量加一就是它的位数,不如果有和它一样大的,就另外处理了
xyhu 2003-10-19
  • 打赏
  • 举报
回复
把数字当成字符串来处理,从左至右,每次取一个字符,比较是否与你要的数字相同;应该简单吧!
主要就是mid这个函数。
YewPu 2003-10-19
  • 打赏
  • 举报
回复
同意楼上。自己写个函数,以后可以用。

也可以搞个数据窗口,将数据导入去,再排序,然后用FIND,找出他的行数,这样也行,不过这样和写函数没什么分别,写起来好写吧!适合入门者,不过速度呢!大量计算的话就不建议使用,小批量呢!还可以!

sunaldo 2003-10-19
  • 打赏
  • 举报
回复
哦,MY GOD
klbt 2003-10-19
  • 打赏
  • 举报
回复
没有现成的函数,自己编码实现吧

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧