a1999zqw 发表于 2010-9-5 11:45

变量名排序

s1=15.60
s2=2.50
s3=6.60
s4=2.51
s5=13.55
s6=0.21
s7=8.11
s8=0
s9=0
s10=0
s11=5.09
共11个变量,按变量值要从小到大排列,但要得到是变量ss:
ss="s8,s9,s10,s6,s2,s4,s11,s3,s7,s5,s1"
这11个变量只是举例,实际应用中会变化,需要通用并且快捷方法,谢谢

茵梦湖 发表于 2010-9-5 14:35


弄个通用子程序, 利用 数组和asor(数组)函数, 约14句代码, 即可满足你的要求~

也可以用冒泡算法, 代码要长些~

a1999zqw 发表于 2010-9-5 15:58

版主,有源码吗?急.............

啸凡 发表于 2010-9-5 17:11

也可以搞一个两个字段的表,一个字段为变量名,另一字段为变更值,SORT一下,然后
GOTOP
SS=ALLTRIM(变量名字段)-','
SKIP
SCAN FOR ! EOF()
  SS=SS-','-ALLTRIM(变量名字段)
ENDSCAN
?? SS

Tiger5392 发表于 2010-9-5 17:25

也来一段
clear
s1=15.60
s2=2.50
s3=6.60
s4=2.51
s5=13.55
s6=0.21
s7=8.11
s8=0
s9=0
s10=0
s11=5.09
CREATE CURSOR tm (fn n(6,2))
INSERT INTO tm VALUES (s1)
INSERT INTO tm VALUES (s2)
INSERT INTO tm VALUES (s3)
INSERT INTO tm VALUES (s4)
INSERT INTO tm VALUES (s5)
INSERT INTO tm VALUES (s6)
INSERT INTO tm VALUES (s7)
INSERT INTO tm VALUES (s8)
INSERT INTO tm VALUES (s9)
INSERT INTO tm VALUES (s10)
INSERT INTO tm VALUES (s11)
INDEX on fn TAG fn
ss=''
SCAN
  ss=ss+'s'+ALLTRIM(STR(RECNO()))+','
ENDSCAN
?LEFT(ss,LEN(ss)-1)

pmc1234 发表于 2010-9-6 09:09

回复 4楼 啸凡

后面画这个“—”什么意思啊

啸凡 发表于 2010-9-6 20:50

要知道什么意思,请您在命令窗口试试以下命令(逐条输入运行),看看结果:
cLSTRA='AAA  '&&(注意,这里有若干个空格)
cLSTRB='BBB'
?cLSTRA+cLSTRB
?cLSTRA-cLSTRB

pmc1234 发表于 2010-9-7 09:35

谢谢楼上

页: [1]

编程论坛