找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 2085|回复: 13
打印 上一主题 下一主题

Skill中的数据比较问题(二)(高手来呀!~)

[复制链接]

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
跳转到指定楼层
1#
发表于 2008-10-23 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

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

x
原帖由 y175813652 于 2008-10-16 16:54 发表
如题,在Skill中,比如有一程序在读取一文件中的数据,假设这些数据有很多,我们提取的有效数据是:1, 2,3,4,5,6,- - - - - 100,且这些数据是一个一个得到的,也就是说,假设有一变量a,所得到的数据依次赋予a,请问,如何让a自 ...

现在这个文件的数据不是数,而是一组string,假设是:aas   aas  bbs  ccs    abcd..........,且这些数据是一个一个得到的,也就是说,假设有一变量a,所得到的数据依次赋予net_name ,请问,如何让net_name 自身相比较,把其中相同的数据给滤除掉?本人的做法是:

                                                                                 temp_netname = nil      `
                                                                                 if(   net_name != temp_netname
                 
                                                                                 then  temp_netname =
net_name
其具体思路是,让net_nametemp_netname 比较,如果他们不相等,那么把net_name 的值赋予temp_netname 然后让net_name 继续与temp_netname  比较?我调试时,发现的问题是:
在刚调试时,它所完成的是:net_name 与temp_netname 的初值nil 想比较,所以他把aas   aas  bbs  ccs    abcd..........,完整的输出了,但是在不关闭allegro的情况下,把 temp_netname = nil 去掉,在调试,得到了我想要的结果, 再关闭    allegro ,重新打开调试,提示 temp_netname 为未定义变量,不明白为什么,高手指教啊,郁闷中!~

                 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

2#
发表于 2008-10-23 20:12 | 只看该作者
关掉ALLEGRO后,temp_netname变量就消失了。所以再打开时就是未定义。

评分

参与人数 1贡献 +1 收起 理由
y175813652 + 1 又来2个 1人1个

查看全部评分

谁画出这天地 又画下我和你

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
3#
 楼主| 发表于 2008-10-24 09:20 | 只看该作者
版主,你没解答前面的问题啊?后面的我知道是怎么回事,为什么在刚调试时,它所完成的是:net_name 与temp_netname 的初值nil 相比较,所以他把aas   aas  bbs  ccs    abcd..........,完整的输出了,但是在不关闭allegro的情况下,在程序中把 temp_netname = nil 去掉,在调试,就得到了我想要的结果

0

主题

16

帖子

-2万

积分

未知游客(0)

积分
-22007
4#
发表于 2008-10-24 09:57 | 只看该作者
这样写看看

1 , 定义 tempname = netname

2 , 更新 netname

3 , 用if来做判断

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
5#
 楼主| 发表于 2008-10-24 10:13 | 只看该作者
原帖由 9wuliao9 于 2008-10-24 09:57 发表
这样写看看

1 , 定义 tempname = netname

2 , 更新 netname

3 , 用if来做判断
兄弟,你定义1 , 定义 temp_netname = netname,那不和下面 的temp_netname != netname冲突了呀,你的第2点我没明白,怎么去更新呢?
能写的详细点吗?

0

主题

16

帖子

-2万

积分

未知游客(0)

积分
-22007
6#
发表于 2008-10-24 10:23 | 只看该作者
原帖由 y175813652 于 2008-10-24 10:13 发表
兄弟,你定义1 , 定义 temp_netname = netname,那不和下面 的temp_netname != netname冲突了呀,你的第2点我没明白,怎么去更新呢?
能写的详细点吗?


可能使我没看懂你的语句吧。
我的想法是。

首先 取得一个 netname(取得值为aas)[最开始你肯定要定义一个netname得]

定义 tempname = netname(tempname值为aas)[这样就不会出现未定义得情况]

更新得意思就是让netname取得表中的下一个值 ( 还是aas)

if语句判断 temp != netmane 是假

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
7#
 楼主| 发表于 2008-10-24 10:32 | 只看该作者
你的这种方法我试过,按不知怎么去实现,我的原程序是这样的
foreach(temp_text  netpin_taxis
                       net_name = car(temp_text)
                       
                       temp_netname = nil      `
              if(   net_name != temp_netname
                 
           then  temp_netname = net_name
               
                    fprintf(outport "%s\n",temp_netname)  
           );end-if
);end-foreach
你看哪儿出的毛病啊?按照你的那种,应当怎么去修改?

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

8#
发表于 2008-10-24 12:13 | 只看该作者
b_list = nil
foreach(a a_list
        when( !member(a b_list)
                b_list = append1(b_list a)
        )
)
b_list就是没有重复的了。

评分

参与人数 1贡献 +1 收起 理由
y175813652 + 1 今天就2个分,一个给你 一个给9wuliao9,谢谢 ...

查看全部评分

谁画出这天地 又画下我和你

0

主题

16

帖子

-2万

积分

未知游客(0)

积分
-22007
9#
发表于 2008-10-24 12:52 | 只看该作者
原帖由 y175813652 于 2008-10-24 10:32 发表
你的这种方法我试过,按不知怎么去实现,我的原程序是这样的
foreach(temp_text  netpin_taxis
                       net_name = car(temp_text)
                       
                       temp_netname ...



能力有限全部解答还需要多学习。
但是看了你的语句我怎么感觉有问题呢。
foreach(temp_text  netpin_taxis
                       net_name = car(temp_text)
这两行中,temp_text是什么类型?如果是字符串的话,car得命令就有问题。如果是表的话,那foreach得命令组成就有问题。
能说说你的思路吗?各参数的定义类型?

然后照我的理解写个给你,相互学习一下。
例2得表里面不相邻位置的重复是不能被排除的,不知道你是否需要全表排除。

例1
temp_netname = nil
foreach( net_name '( aas aas bbs ccs abcd )
if(net_name != temp_netname println(net_name))
temp_netname = net_name
);end-foreach

例2
temp_netname = nil
foreach( net_name '( aas aas bbs ccs aas aas abcd )
if(net_name != temp_netname println(net_name))
temp_netname = net_name
);end-foreach

评分

参与人数 1贡献 +1 收起 理由
y175813652 + 1 今天就2个分,一个给你,一个给deargds 谢谢 ...

查看全部评分

0

主题

16

帖子

-2万

积分

未知游客(0)

积分
-22007
10#
发表于 2008-10-24 13:19 | 只看该作者
原帖由 deargds 于 2008-10-24 12:13 发表
b_list = nil
foreach(a a_list
        when( !member(a b_list)
                b_list = append1(b_list a)
        )
)
b_list就是没有重复的了。



佩服!
高手出马果然。。。!

再跟个问题!
如果用sort 排序并去除重复有什么特别的问题吗?

[ 本帖最后由 9wuliao9 于 2008-10-24 14:08 编辑 ]

评分

参与人数 1贡献 +1 收起 理由
y175813652 + 1 又来2个 1人1个

查看全部评分

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
11#
 楼主| 发表于 2008-10-24 14:58 | 只看该作者

回9#楼

下面我把程序中的思路和各参数的定义类型解释一下:
思路:foreach(temp_text  netpin_taxis

                     net_name = car(temp_text)EDA365论坛网站|PCB论坛|PCB layout论坛|SI仿真技术论坛4 p+ W& F2 x9 T6 a* W% n
                       ' D9 W0 s7 W: ?; H* Z
意思是 把 netpin_taxis 的内容  暂时放到 temp_text  的这个临时变量里, 这个   它的数据类型是表list, aas aas bbs ccs abcd 这些数据是通过这句net_name = car(temp_text)来提取的,你所举的例子是把提取的数据又组成了一个list,那么我现在想只要这些提取到的数据重新组成一个list,问题就应当解决了,兄弟你说对吗?

再说一下我需要的是全表排除.

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
12#
 楼主| 发表于 2008-10-24 15:30 | 只看该作者

回复 8# 的帖子

没注意看版主的帖子,原来都搞定了,高手啊

93

主题

439

帖子

1765

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1765
13#
 楼主| 发表于 2008-10-24 17:42 | 只看该作者

回复 9# 的帖子

你的 程序里if语句少了then.

0

主题

161

帖子

419

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
419
14#
发表于 2017-7-7 22:59 | 只看该作者
看不了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-23 11:12 , Processed in 0.066310 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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