我如何实现数学函数(sin)到我的简易中缀到Postfix转换器?
代码来自http://www.c-program-example.com/2011/10/c-program-for-infix-to-postfix.html
它的可能实现例如sin? 开始表达将是例如sin(2 + 3)或sin(3)+3 ....
你能举个例子吗?
非常感谢你。
int pr(char elem) { /* Function for precedence */
switch (elem) {
case '#':
return 0;
case '(':
return 1;
case '+':
case '-':
return 2;
case '*':
case '/':
return 3;
}
}
main() { /* Main Program */
char infx[50], pofx[50], ch, elem;
int i = 0, k = 0;
printf("\n\nRead the Infix Expression ? ");
scanf("%s", infx);
push('#');
while ((ch = infx[i++]) != '\0') {
if (ch == '(')
push(ch);
else if (isalnum(ch))
pofx[k++] = ch;
else if (ch == ')') {
while (s[top] != '(')
pofx[k++] = pop();
elem = pop(); /* Remove ( */
} else { /* Operator */
while (pr(s[top]) >= pr(ch))
pofx[k++] = pop();
push(ch);
}
}
.
。
}
答案 0 :(得分:0)
暂时,如果您想到sin
!
的另一个名称。
int pr(char elem) { /* Function for precedence */
switch (elem) {
case '#':
return 0;
case '(':
return 1;
case '+':
case '-':
return 2;
case '*':
case '/':
return 3;
case '!':
return 4;
}
}
执行: 罪(2 + 3):
Read the Infix Expression ? !(2+3)
Given Infix Expn: !(2+3) Postfix Expn: 23+!
罪(3)3
Read the Infix Expression ? !(3)+3
Given Infix Expn: !(3)+3 Postfix Expn: 3!3+
所以逻辑很好,但你需要改变来处理单个字符串的输入。