首页
社区
课程
招聘
第二阶段◇第二题
2008-10-26 01:33 3433

第二阶段◇第二题

ccfer 活跃值
16
2008-10-26 01:33
3433
源代码+编译后的执行文件:
2_2_src.rar

原理比较简单,将中缀式转成后缀式,利用栈实现逆波兰表达式求值。

输出时加当nTimes参数多次调用时也都连续输出到output.txt了,因为可能输出效率也计算在考察范围内,所以没有加只输出一次的控制,如果为了方便检查结果的正确性可以将nTimes取1。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-10-26 01:43
2
0
还有表达式中的负数是要求加括号的,因为windows系统带的计算器也是需要有括号的
比如应该写成这样:
1*(-2)+3*(-4)
而不能写成这样:
1*-2+3*-4
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-10-26 07:21
3
0
睡醒起来,突然想到先前的版本运行结束以后忘了释放内存,
修正一下:
2_2_fix_src.rar
上传的附件:
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-10-27 14:32
4
0
发现空格过滤写错了,表达式不能支持有空格的了

内存释放也不完全,有内存泄漏问题
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-10-27 14:39
5
0
658行:
s[i] = ch;
应该为:
s[j] = ch;

evaluate里面只free了a,忘记把b也free掉

CalcExpression最后的
for (i=0;i<(numcount+opcount+8);i++)循环里面
把i丢掉了,只释放了第一项
应嘎把->换成[i].
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
bithaha 5 2008-11-13 13:05
6
0
test.txt 测试 程序运行出错
40分
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
bithaha 5 2008-11-13 13:15
7
0
test.txt 见附件
上传的附件:
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2008-11-13 13:32
8
0
你这个式子最后没等号啊
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
bithaha 5 2008-11-13 14:22
9
0
知道了,生成的test.txt都是不带=号的 刚
刚测试下你的没问题 sorry
我等下把分数重新修改下:)
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
bithaha 5 2008-11-13 14:36
10
0
100分 
换了个test.txt  
除了ccfer和odaliu之外 其它分数不变
如果有疑问 还可以继续给我联系  这个题目不太好评分 可能不会太公平

下图中odaliu的程序 由于原程序中printf太多 都被我注释了 release编译的.

ccer分数变为100
odaliu变为62.82
上传的附件:
游客
登录 | 注册 方可回帖
返回