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

第二阶段◇第二题

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

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

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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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

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

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

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

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

ccer分数变为100
odaliu变为62.82
上传的附件:
2008-11-13 14:36
0
游客
登录 | 注册 方可回帖
返回
//