c四则运算中的字符转换想法

c四则运算中的字符转换想法

ID:8924190

大小:53.50 KB

页数:5页

时间:2018-04-12

c四则运算中的字符转换想法_第1页
c四则运算中的字符转换想法_第2页
c四则运算中的字符转换想法_第3页
c四则运算中的字符转换想法_第4页
c四则运算中的字符转换想法_第5页
资源描述:

《c四则运算中的字符转换想法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C++中要表达四则运算,最主要就是字符转换的问题,我提供的思路如下一个string变量中的字串是这种形式的,其中每一个都是字符变量String(34+6)*5=要怎么变成我们转化成能计算的式子呢?我是这样想的:先将string中的每个字符都配上标识,表明它是数值还是符号(1代表符号,0代表数值)(34+6)*5=100101101这样我就会知道每一位对应的是什么然后我们重新设置一个整形数组newstr来存放这个string关于这个转化,我的想法如下:如果本来是符号,则转化成数值存入newstr并标识上1表明他是运算符;如果有两个0的情况,说明他们应

2、该是一个数字,则把他们合并存入newstr并标识上0;然后就会得到如下的两个数组(34+6)*5=4034436414256110101101第二行是newstr中的值第三行是标识数组中的值然后呢之后转化后缀表达式就是数据结构的内容了看看书就可以啦这是目前我想出来的还算过的去的想法了,如果有大神,请别吐槽,一个晚上的结晶啊#include#includeusingnamespacestd;boolIsChar(charc){if('0'<=c&&c<='9')return0;elsereturn1;}intmai

3、n(){strings;//存储用户输入的式子cout<<"请输出表达式(务必以等号结束)"<>s;intnewstr[100];//用来存储转化后的表达式intarr[100];//标志数组:用来标识newstr中每个元素对应的是数据还是运算符,若是数据,对应位置为0,反之为1inti=0;//对s中的内容进行索引while(s[i]!='='){arr[i]=IsChar(s[i]);i++;//如果是字符,arr[]对应位置标1;数据则标0}i=0;//对s中的内容进行索引intn=0;//存储新

4、的字符串的字符下标while(s[i]!='=')//此循环将s中字符串转化成数值形式存储在newstr中,并用arr数组标识每一位是数据还是字符{if(arr[i]==1)//如果是字符,转化成数值后直接放进newstr,并在arr的对应位置标识上1{newstr[n]=int(s[i]);arr[n]=1;n++;i++;}else//如果不是字符,转化成十进制数据后存入newstr,并在arr对应位置标识上0{if(i==0)//如果第一位就是数值,直接存入{newstr[n]=int(s[i])-48;arr[n]=0;n++;i++;}e

5、lseif(arr[i-1]==0)//如果之前一个字符也是数字,将此数据与之前数据合并,例如字符串“90”转化成整型90后存入,并标识上0{newstr[n-1]=10*newstr[n-1]+int(s[i])-48;arr[n-1]=0;i++;}else{newstr[n]=int(s[i])-48;arr[n]=0;n++;i++;}}}newstr[n]=-1;arr[n]=1;//新字符串结束标记/*//此部分用来打印转化后的newstr及其标识数组arrinti=0;while(newstr[i]!=-1){cout<

6、[i]<<'t';i++;}cout<

7、ck1[k]=newstr[i];arr[k]=0;k++;i++;}elseif(m==0

8、

9、newstr[i]==40)//40代表左括号,可直接放入stack2;{stack2[m]=newstr[i];m++;i++;}else{switch(newstr[i]){case41:while(stack2[m-1]!=40){//')'stack1[k]=stack2[m-1];arr[k]=1;m--;k++;}m--;i++;break;case43:while(stack2[m-1]!=40&&m!=0){//'+'stack1[k]=

10、stack2[m-1];arr[k]=1;m--;k++;}stack2[m]=newstr[i];m++;i++;bre

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。