明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1660|回复: 3

[基础] (已解决)再请教斑竹一个表排序问题!

[复制链接]
发表于 2009-12-30 21:35 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2010-1-4 19:12:05 编辑

(如下的文本文件:

A     B     C   D      E        F
A1   1     1    2      55      2.58
A2   2     2    3     55       2.58
A3   3     3    5     41.8    1.96
A4   13   5    6    16.45   0.87
A5   11   6   24    40.1    3.13
A6   29  24  25   19.65   1.17


将其转成表为:

( (A1 1 1 2 55 2.58) ( A2 2 2 3 55 2.58) ( A3 3 3 5 41.8 1.96) (A4 13 5 6 16.45 0.87 ) (A5 11 6 24 40.1 3.13 ) (A6 29 24 25 19.65 1.17 )----这个转换我已经成功,只是顺序不是如此。要排列的顺序是这样的。

当然,实际的顺序是相当乱的,并且有上千行,只是文本文件中的c列d列存在交叉一一对应关系,如果将一行中的C、D列看成一行的首末端的话,可以看出如下规律:1-2  2-3  3-5  5-6 6-24 24-25

问题是:实际排列中不是我上边文本的顺序,A列的名称也无规律,如何排序才能达到我上边所列的结果呢?

研究了一个星期了,想学会,但还是不成,还望帮助。

再次致谢!!!

 

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2010-1-4 18:48 | 显示全部楼层

或许到底要排成什么样子连你本人也不清楚,或者是你没有表达出来,这种情况下没人会排

 楼主| 发表于 2010-1-4 19:10 | 显示全部楼层
;;从文本数据中,提取有用的数据,组合成表ss
    ;;对主要风路按末点号从小到大排列,目的找出最小末端号的风路,即起始点(风路)
   (setq ssn_fl (vl-sort ssn (function (lambda (pt1 pt2) (< (nth 3 pt1) (nth 3 pt2)))))) ;;对主要风路按末点号从小到大排列,目的找出最小末端号
   (prin1  "ssn_fl=") (prin1 ssn_fl)  ;;此处已经按照末点号由小到大排列,基本满足使用要求
    (setq ssn_new '())     ;;建立1个将主要风路从start开始按始末号衔接进入的新表ssn_new
    (setq ssn_new (cons (nth 0 ssn_fl) ssn_new))  ;;将start即第1条风路放到ssn_new表中
;    (prin1  "ssn_new=") (prin1 ssn_new)
  (setq n 0)
   (while  (< n (- (vl-list-length ssn) 1))
    (setq hao_end (cadddr (nth 0 ssn_new)));;从ssn_new中得到最后加入的元素的末点号
 ;   (prin1  "hao_end=") (prin1 hao_end)
    (setq sx_start (car (vl-member-if '(lambda (x) (if (= (caddr x) hao_end) (princ  x))) ssn)));;从原始表中ssn中找出起点号hao_start与ssn_new中最后边加入(位于最前边即0位置的风路)的末点号hao_end相等的风路
 ;   (prin1 "sx_start=")(prin1 sx_start)
    (setq ssn_new (cons sx_start ssn_new))
 ;   (prin1 "ssn_new_end=")(prin1 ssn_new)
   (setq n (+ n 1))
   );;end while
   (setq ssn (reverse ssn_new));;这是将ssn按风路的始末号顺序按从小到大(从前到后)排列好的表
 ;   (prin1 "ssn_排列好的=")(prin1 ssn)
发表于 2010-1-5 02:54 | 显示全部楼层

似乎是按某梯级来排序,比如先排第c列,如c列相同再排第d列。。。。没说清楚。

标题说已解决,何意??

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-6-3 18:12 , Processed in 0.136536 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表