作者alan773421 (白滥)
看板C_and_CPP
标题[问题] 有关postfix的运算...
时间Mon Nov 23 02:33:13 2009
遇到的问题:
是写将一个输入的算式
每一个输入的
都当成是字串
然後转换成postfix
最後印出转换後的答案~并计算出答案(数字)
这是我的部分程式码
不过下面红色那一段
不知道要怎麽写
才能写出会去计算原本读入的算式
并印出来
我的想法是把输入的那些算式(字串)
先存到阵列a中
然後再让b=a这个阵列
因为b是设定为一个整数
所以我认为应该是会计算a这个算式
然後最後印出答案b
可是好像跑出来的东西怪怪的
所以应该是我的想法有问题
但我又不知道要如何在去改了
可以请高手帮忙解答一下嘛??
例如输入了:2*3^2+8/4
希望得到的正确结果:
20 <<<(答案)
232^*84/+ <<<(转换後)
程式跑出来的错误结果:
1580411442 <<<这个有问题而已
232^*84/+
开发平台:
Dev-C++
有问题的code: (请善用置底文标色功能)
以下是部分CODE(有问题为红色的)
int postfix(char*); //转成postfix
int priority(char); //决定符号优先顺序
int main(int argc, char *argv[])
{
char input[80];
int a[80],b;
printf("输入运算式:");
scanf("%s", input);
scanf(input,"%100s",&a[80]); //先把原本输入的丢到a这个阵列中
b = a[80] ; //然後设定b去计算a
printf("%d\n",b); //把答案印出来
postfix(input);
system("PAUSE");
return 0;
}
补充说明:
因为最後出来的答案
很显然不是我所想要的
请问需要怎麽修改??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.44.104.197
1F:推 bottless:你的b并不会帮你计算,他只是印出你a[80]的位址 11/23 04:00
2F:推 bottless:说错,因该是印到a[80]的值...而溢位 11/23 04:06
3F:→ alan773421:那..请问要如何去计算那些字串的答案?? 11/23 05:42
4F:推 LPH66:你先不要在postfix里印出答案 先存进阵列里 11/23 05:49
5F:→ LPH66:再写另一个函式计算postfix的值 (这个你应该会) 11/23 05:49
6F:→ LPH66:最後把这两者输出即可 11/23 05:49
7F:→ alan773421:那原先存进阵列里的东西呢...? 11/23 05:52
8F:→ alan773421:意思是先存进阵列里~然後写一个函式算答案 11/23 05:52
9F:→ alan773421:然後再加上postfix的函式 是这个意思嘛? 11/23 05:53
10F:推 LPH66:唔 既然原来的你想留就开一个新的嘛 11/23 10:50
11F:→ alan773421:我不太会存到阵列之後再抓出来计算耶..XD 11/23 12:36
12F:推 snowlike:可以参阅stack相关;另char,int,运算子不能够随意转换 11/23 12:45
13F:→ alan773421:postfix的计算函式我写好了~但还有一个问题 11/23 13:55
14F:→ alan773421:请问一下.如何让计算的函式去读刚刚写成postfix的字串? 11/23 13:56
15F:→ alan773421:我是使用先把刚刚的存在一个名为output2.txt的档案 11/23 13:57
16F:→ alan773421:然後再让计算的去读他~可是好像读不到的样子...答案都0 11/23 13:57