之前写的东西,看了看在草稿里面,如果有报错自行修改哦~

#include <bits/stdc++.h>
#include <windows.h>
#define random(x) rand()%(x)//生成随机数
using namespace std;
string s;//要输入的字符串,需要进行分割使用
string s_t;//测试字符串
int a[10];//随机项的数
int sum, ts, ans;
char signn[10];//随机符号
stack<int> s1;//存放数的栈
stack<char> s2;//存放符号
void in();//输入
int doit();//计算
void calc();//计算
void exam();//测试模式
void exam1();//考试模式
void work();
int level(char p)//符号优先级
{if (p == '+' || p == '-') return 1;if (p == '*' || p == '/')  return 2;if (p == '^')  return 3;return 0;
}
inline void print()
{//下面是C++11的黑科技,好方便cout << R"(
************************************
************************************
**                                **
**                                **
**                                **
**     欢迎使用高级计算器系统     **
**                                **
**                                **
**                                **
**                                **
**                          abc   **
************************************
************************************
)";
}
inline int doit(string str)
{str = '(' + str + ')';//把s两端添加括号,方便最后运算int i = 0;//下标char ch = '(';//首位的(do{if (ch == '(')//如果符号是左括号,直接入栈即可{s2.push('(');}else if (ch == ')'){while (s2.top() != '(') calc();//计算括号里所有的s2.pop();//弹出( }else if (ch >= '0' && ch <= '9' || ch == '-' && str[i - 1] == '(')//如果这是个数,或者是个负数{int x, y;//x代表数,y代表符号if (ch == '-') x = 0, y = -1;else x = ch - '0', y = 1;char ch0 = str[++i];//ch的下一个符号是否是数字呢? 会不会出现不是多位数呢?while ('0' <= ch0 && ch0 <= '9')//如果是数字,那么我们就把他转换成int型的整数啊{x = x * 10 + (ch0 - '0');//简单的数学知识ch0 = str[++i];//等同于i = i + 1; ch0 = str[i];}x *= y;//正负s1.push(x);//就找到一个数字了,把他入栈i--;}else//是个符号{while (level(ch) <= level(s2.top()))//当前运算符不超过栈顶运算,先算栈顶运算//举个例子, 1+2*3 乘法比加法优先级高,那么先算乘法{calc();}s2.push(ch);//直到当前运算符高于栈顶运算符再把运算符存栈 }} while (ch = str[++i]);//这里挺巧的,读到空字符也就终止了return s1.top();//栈顶就是答案咯
}
inline void in()
{char sig;//控制函数结束cout << "请输入需要计算的式子( 例如: 3+4+5 或者 3*(4+5) ):" << endl;cin >> s;cout << "答案为:" << doit(s) << endl;//栈顶就是答案咯stack<int>().swap(s1);stack<char>().swap(s2);cout << "是否继续计算 Y or N:" << endl;cin >> sig;if (sig == 'Y' || sig == 'y')//如果继续进行运算{system("cls");in();}else{system("cls");work();}
}
inline void calc()
{int n, m;n = s1.top();//栈是个倒序的,所以第二个操作数在栈顶s1.pop();m = s1.top();//第一个操作数s1.pop();char z = s2.top();//符号s2.pop();switch (z){case '+':s1.push(m + n);break;case '-':s1.push(m - n);break;case '*':s1.push(m * n);break;case '/':s1.push(m / n);break;case '^':s1.push(pow(m, n));break;default:break;}return;
}
inline void exam()
{int n = random(3) + 2;//随机项数for (int i = 1; i <= n; i++)//生成随机项数{a[i] = (random(20) + 1);}for (int i = 1; i < n; i++){int t = random(3);if (t == 0){signn[i] = '+';}else if (t == 1){signn[i] = '-';}else if (t == 2){signn[i] = '*';}else{signn[i] = '/';}}s_t = "";//初始化一下,避免重复调用时出问题for (int i = 1; i <= n; i++){if (i < n){s_t = s_t + to_string(a[i]);//字符串拼接s_t = s_t + signn[i];//把符号也拼进去}else{s_t = s_t + to_string(a[i]);//最后一位数字}}cout << s_t << "=" << endl;cout << "请输入您的答案:";cin >> sum;if (sum == doit(s_t)){cout << "答案正确!" << endl;ans++;}else{cout << "答案错误!" << endl;cout << "正确答案为:" << doit(s_t) << endl;}cout << "---------------------------" << endl;
}
inline void exam1()
{ans = 0;//初始化system("cls");cout << R"(
************************************欢迎进入练习系统
************************************
)";cout << "请输入您想做的题数:";cin >> ts;cout << "---------------------------" << endl;int ts1 = ts;while (ts1--){exam();}double rat = ans / (1.0 * ts) * 100;cout << endl;cout << "本次测试共" << ts << "道题," << "做对" << ans << "道!" << endl;cout << "正确率为" << rat << "%" << endl;Sleep(6000);system("cls");work();
}
inline void work()
{char c;cout << "请输入你想要执行的操作(输入序号):" << endl;cout << "1.计算器" << endl;cout << "2.计算练习" << endl;cout << "3.退出" << endl;cout << endl;cout << "请输入:";cin >> c;switch (c){case '1':in();break;case '2':exam1();break;case '3':return;break;default:cout << "输入错误,请重新输入" << endl;Sleep(1000);system("cls");work();break;}
}
int main()
{srand((int)time(0));//随机数种子print();work();return 0;
}

C++超级计算器-课题作业相关推荐

  1. 科学计算机 app,‎App Store 上的“超级计算器-科学计算机”

    超级计算器,比原生计算器更好用的计算器.包含经典计算器.科学计算器.实时汇率换算器以及单位换算器的四合一全功能计算器工具. 超级计算器提供强大的历史记录功能.语音读数功能,独家提供[结果继承]功能,计 ...

  2. 涨跌因子计算器下载哪里下载_网易超级计算器appv1-网易超级计算器v1下载

    超级计算器app是一款强大的计算机软件,超级计算器app是网易推出的,其强大的计算功能已经不再拘泥于普通的计算器只能计算加减乘除了,更多的功能足以满足所有人的计算需求,无论你是小学还是大学都能帮的到你 ...

  3. python小欢喜(三)超级计算器

    在日常生活中,我们经常用到计算器,计算器可以帮助我们快速得到数学算式的结果.在电脑上,也有计算器软件,计算器软件的界面与实际的计算器很类似,功能更加强大. 如果学会了python语言,我们将拥有一个比 ...

  4. 超级计算机app不能解方程,有了这款被 App Store 官方推荐的超级计算器,该把手头的计算器扔了...

    原标题:有了这款被 App Store 官方推荐的超级计算器,该把手头的计算器扔了 网易有道又发布了一款广受好评的新产品 -- 「超级计算器」,应用一上线就被 App Store 官方首页推荐,短时间 ...

  5. java超级计算器,jdk自带类

    2019独角兽企业重金招聘Python工程师标准>>> package lcr;import java.math.BigInteger;/*** 超级计算器* * @author L ...

  6. 有道科学计算机,网易有道超级计算器获App Store推荐 打造随身数学帮手

    近日,网易有道正式发布iOS版超级计算器,甫一上线即获得App Store首页精品推荐,并在短时间内迅速爬升,跻身效率榜前五.作为一款全新的APP,超级计算器的智能化程度极高.它是目前国内仅有的定积分 ...

  7. 超级计算器android,超级计算器 - 一上线就被AppStore官方推荐的超级计算器 - Android 应用 - 【最美应用】...

    这款计算器,能直接解方程求积分 在「超级计算器」中解方程,就像打字一样简单.你仅需要把方程式像打字一样完整地输入进去,再点击「求解方程组」,就可以直接得到方程的解,终于不用再拐弯抹角地分解.代入了! ...

  8. 会解方程会画图的超级计算器

    会解方程会画图的超级计算器 这个计算器功能强大,可以解方程.解不等式,判断素数,比较大小,映射,筛选,精度计算,求导,求积分,求极限,绘制图形等多项功能,操作简单. # coding: GB2312 ...

  9. android 上最强的计算器,史上最强超级计算器发布!完爆科学计算器

    近日,网易正式发布有道超级计算器,日常计算.分式化简.方程求解.多项式分解和展开.微积分,统统包含其中,比科学计算器还要强大. 据介绍,有道超级计算器可以自动显示日常计算的结果,并可以对计算结果进行操 ...

最新文章

  1. l2-22(重排链表)
  2. Apache Mahout基于商品的协同过滤算法流程分析
  3. CSS3实现静态和动态效果
  4. 美国进步派民主党众议员寻求大幅扩大拜登第二项支出计划规模
  5. 复用管脚_如何实现UART的分时复用
  6. mysql开启中继日志,MySQL复制应用中继日志解析
  7. 常用电源及稳压芯片(一)
  8. 【Flask】from flask.ext.script import Manager
  9. PyTorch 全部笔记的思维导图精简记忆版
  10. laravel框架跨域请求
  11. win7 无线网卡无法连接,启动wlan autoconfig 服务报错误1:函数不正确
  12. 数据压缩作业:JPEG原理分析及JPEG解码器的调试
  13. 为什么程序员喜欢养猫?
  14. 学经济学有必要学python吗_重读《1844年经济学哲学手稿》还有必要吗?
  15. Flutter中如何选择StatelessWidget和StatefulWidget
  16. 巴比特 | 元宇宙每日必读:云南首个元宇宙产业园落户昆明,预计总投资 2600 万元,将探索开发NFT产品...
  17. 2020-MyBatis面试题
  18. App中 微信分享 代付功能 业务设计 与 代码实现
  19. SLAM之camera(Intel RealSense D435)调试第一弹:Win10平台下getting started
  20. 【Class 46】【实例】python爬虫实现 自动搜索 并 打开浏览器

热门文章

  1. 点线形系列1-计算两点之间的距离
  2. React使用cra创建项目,开启装饰器
  3. 用Java写了一个简单的控制台狼人杀游戏
  4. 2022Android各APP免费加固方案评估
  5. 团购网站出路 艰难转型
  6. 踩坑日记 - word转pdf
  7. Jetson nano(Ubuntu18.04) 网线连接电脑,实现VNC远程桌面
  8. 美国软件供应链安全行动中的科技巨头们
  9. CodeForces 1253C
  10. 别让所谓的“富人思维”毁了你