刚发帖问的程序贴出来大家看看,欢迎讨论
程序代码:
#include<iostream> #include<stdio.h> #include<string> #include<stdlib.h> using namespace std; string calculate(string str) { double num[100];//把str里由符号分隔的数存入num数组中 int nCount=0;//num数组的下标 char opr[100]; string temp; int pos=0; int lastopr=0; int i; for(i=0;i<str.length();i++) { if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/') { temp=str.substr(pos,i-pos); pos=i+1; num[nCount]=atof(temp.c_str()); opr[nCount]=str[i]; nCount++; lastopr=i; } //数字和符号的存储格式为 数 num:num[0],num[1]...num[nCount-1],num[nCount]. } // 符号 opr:opr[0],opr[1]...opr[nCount-1]. //把最后一个数字放入数组中 temp=str.substr(lastopr+1,str.length()-lastopr-1); num[nCount]=atof(temp.c_str()); //先算乘除法 i=0; while(i<nCount) { if(opr[i]=='*'||opr[i]=='/') { switch(opr[i]) { case'*':num[i]*=num[i+1];break; case'/':num[i]/=num[i+1];break; } int j=i+1; while(j<nCount) { num[j]=num[j+1]; opr[j-1]=opr[j]; j++; } nCount--; i--; } i++; } //再算加减法 i=0; while(i<nCount) { if(opr[i]=='+'||opr[i]=='-') { switch(opr[i]) { case'+':num[i]+=num[i+1];break; case'-':num[i]-=num[i+1];break; } int j=i+1; while(j<nCount) { num[j]=num[j+1]; opr[j-1]=opr[j]; j++; } nCount--; i--; } i++; } char tempChar[100]; sprintf(tempChar,"%.6f",num[0]); temp=tempChar; return temp; } int main() { string str; cin>>str; cout<<calculate(str)<<endl; return 0; }这是一个计算多项式的程序的一部分,解决的是不带括号的加减乘除四则运算。(之前用C写过,没有string类还要麻烦很多。。。具体要用了,所以打算用C++重写)
程序大家帮看看,有啥问题没,您严厉的目光才能促成我的进步哈。
然后,其实我想说,我还是不理解那个string 和CString 两个东西的区别啊,刚才的帖子谁帮继续看看啊。
还有谁有C++的函数库的说明书可以发我份吗,谢谢。。。