求使用单运算符表达式实现计算的功能?该怎么操作?

1)具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果。结果可以作为下一个运算的第一运算数。按‘C’清屏,按‘R’返回 菜单。
例如:输入:2
+
5
输出:7
2)实现单运算符表达式计算的功能。输入的操作数可以包含整数或浮点数。输入表达式如下:
例如:输入:2+5
输出:7

largeQ
浏览 179回答 3
3回答

德玛西亚99

#include <windows.h>#include <iostream>#include <fstream>#include <string>#include <cmath>using namespace std;const char NUM[]={'0','1','2','3','4','5','6','7','8','9','.'};const char OPERATION[]={'+','-','*','/'};const double PI=3.14159265358979;const double EE=2.71828182818281;class Fun //处理系统数学函数的类{public:Fun(string o,int t,double l=0.0,double r=0.0):op(o),type(t),lvalue(l),rvalue(r){}static string FUN[];double calc();private:int type; //666 0 1 sin90 2 3! 3 3C2string op; //函数类型double lvalue; //函数左边的值double rvalue; //函数右边的值static int FunNum;};int Fun::FunNum=8;string Fun::FUN[]={"!","sin","cos","tan","log","ln","C","A","^"};/*函数说明:1:log是以10为底的工程对数2:ln 是以e为底的自然对数3:C 计算组合数 输入规则 如计算 3取2的组合 输入表达式 3C24:A 计算排列数 输入规则 如计算 3取2的排列 输入表达式 3A25:! 计算阶乘6:^ x的y次方 输入 x^y*/int factorial(int n) //阶乘函数{int i,s=1;for(i=1;i<=n;i++)s*=i;return s;}int C(int a,int b){return factorial(a)/(factorial(b)*factorial(a-b));}int A(int a,int b){return factorial(a)/factorial(b);}double Fun::calc() //计算系统函数的值{if(type==0)return lvalue;else{if(op=="!")return factorial(lvalue);if(op=="sin")return sin(rvalue/180*PI);if(op=="cos")return cos(rvalue/180*PI);if(op=="tan")return tan(rvalue/180*PI);if(op=="log")return log10(rvalue);if(op=="ln")return log10(rvalue)/log10(EE);if(op=="C")return C(lvalue,rvalue);if(op=="A")return A(lvalue,rvalue);if(op=="^")return pow(lvalue,rvalue);else{string err="暂时没有函数"+op;MessageBox(NULL,err.c_str(),"错误",MB_OK);return 0;}}}struct Unit //双向链表保存运算单元{Unit(int p,char o,string c,double v,int t,Unit * pr=NULL,Unit * n=NULL):PRI(p),Operation(o),Code(c),value(v),Type(t),Pre(pr),Next(n){}int PRI; //优先级char Operation; //操作符string Code; //原始代码double value; //数据

至尊宝的传说

#include "TypeDef.h"#pragma onceclass Error{ //错误类error_msg err;public:Error(error_msg e) { err = e; }error_msg GetError() { return err; }};class Calculator;class Token{friend class Calculator;public:int mark;//mark=1操作符,mark=2浮点数union {Token_Item ttitem;double dvalue;};const Token& operator = (const Token&);};class Calculator{private:char expression[MAX_LENGTH+1];int exp_length;Token tempexpression[MAX_LENGTH+1];int telength;Token postexpression[MAX_LENGTH+1];int pelength;Token temp;double dresult;int IsZero(double d);//判断是否为0int GetIcp(Token_Item& ti) const;//栈内优先级int GetIsp(Token_Item& ti) const;//栈外优先级int GetOpeNum(Token_Item& ti) const;//返回操作数的个数int IsDigital(char t);//是不是数字void PreScan();//预扫描,检查括号匹配情况void GetPostFix();//后缀表达式void Eval();//表达式计算public:Calculator():exp_length(0) {};void CalValue(const char*);//根据输入的表达式计算其值void ErrorReport(Error e);//错误报告double GetResult(){return dresult;};//返回计算结果};

30秒到达战场

1、#include <iostream>#include <string>using namespace std;int main(int argc, char* argv[]){float a, b;char op;cout << "依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数"<< endl;cin >> a >> op >> b;if (b == 0){cout << "第二个数不能是0" <<endl;exit(-1);}switch(op){case '+' :cout << a + b << endl;break;case '-' :cout << a - b << endl;break;case '*' :cout << a * b << endl;break;case '/' :cout << a / b << endl;break;}return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP