简单表达式的计算---用递归的方法

注意:把一个值赋给引用指针时,它必须是一个变量!!!

 1 #include<cstdio>
 2 #include<iostream>
 3 using namespace std;
 4 
 5 double statement(char* &p)
 6 {
 7     double a;
 8     a=*p-'0';
 9     p++;
10     while(*p=='*'||*p=='/')
11     {
12         if(*p=='/')
13         {
14             p++;
15             a/=*p-'0';         
16         }
17         else
18         {
19             p++;
20             a*=*p-'0';
21         }
22         p++;
23     }
24     return a;
25 }
26 
27 void expession(char* &p)
28 {
29     bool isMinux;//是否为减号
30     double value=0.0;
31     
32     if(*p=='-')
33     {
34         isMinux=true;
35         value=-statement(++p);
36     }
37     else if(*p=='+'){p++;value=*p-'0';p++;}
38     else {value=*p-'0';p++;}
39 
40     while(*p=='+'||*p=='-')
41     {
42         if(*p=='+')
43         {
44             value+=statement(++p);
45         }
46         else
47         {
48             value-=statement(++p);
49         }
50         p++;
51     }
52     if(*p=='\0')cout<<value;
53     else 
54     {
55         cout<<"式子不符合规范!"<<endl;
56     }
57 }
58 
59 int main()
60 {
61     char p[100];
62     cin>>p;
63     char *a=p;
64     expession(a);
65     cin>>p;
66 }

 

posted @ 2013-03-06 22:00  宁静致远--Ada  阅读(289)  评论(0编辑  收藏  举报