中缀到Postfix,数学函数(sin),C

时间:2013-12-24 10:15:12

标签: c postfix-notation

我如何实现数学函数(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);
  }
 }
.

}

1 个答案:

答案 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+

所以逻辑很好,但你需要改变来处理单个字符串的输入。