资源简介
该计算器可以计算一般的加减乘除括号,也能计算n*n阶矩阵,还能计算非齐次线性方程组的解,同时也能计算一元多次方程(2、3、4)的解,注意事项在帮助文档里,程序可以打开
代码片段和文件信息
#include“calculate.h“
#include
bool is_operator(string op)//判断是否运算符
{
return (op == “+“ || op == “-“
|| op == “*“ || op == “/“
|| op == “(“ || op == “)“);
}
int get_priority(string op)//比较运算符号的优先级
{
if (op == “+“ || op == “-“)
return 1;
if (op == “*“ || op == “/“)
return 2;
else return 0;
}
string get_result(string val1 string val2 string op)
{
double v1 = atof(val1.c_str());
double v2 = atof(val2.c_str());// 转化为double型
double result;
if (op == “+“)
result = v1 + v2;
if (op == “-“)
result = v2 - v1;
if (op == “*“)
result = v1 * v2;
if (op == “/“)
result = v2 / v1;
ostringstream os;
os << result;
return os.str(); //将double型的数据送入输出流并转化为string型
}
stack transform(string input) //逆波兰表达式转换
{
stack converted; //定义一个数字栈用于存放转换成的逆波兰表达式
stack op; //定义一个运算符栈字符型
size_t i = 0; //依次读取输入的字符串字符
string digit_node = ““; //用于连接一个完整的数字
while(i < input.length()) {
char c = input[i];///获取当前字符
string read_char = ““;///
read_char += c;///这三行怪怪的要这么写能通过不能将这行和上一行写成:string read_char = string(&c); 不知道为什么
if (is_operator(read_char)) { //判断是否运算符
if (digit_node != ““) { //如果当前读取到运算符则表示之前数字的读取结束
converted.push(digit_node); //将之前读取到的数字字符串存入数字栈
digit_node = ““; //将数字字符串置空
}
if (op.empty()) { //当前读取到的是运算符栈的第一个操作符则直接将操作符进栈
op.push(read_char);
}
else {
if (read_char == “(“)//读取到左括号 直接进栈
op.push(read_char);
else if (read_char == “)“) { //读取到右括号则将上一个左括号之前的运算符全部出栈
while (op.top() != “(“) {
converted.push(op.top()); //
op.pop();
}
op.pop(); // 将上一个左括号出栈
}
else if (get_priority(read_char) > get_priority(op.top()))//比较运算符级别
op.push(read_char); //若高于上一个运算符则直接入运算符栈
else {//否则弹出两个数字和一个符号将运算结果再次压入数字栈
converted.push(op.top());
op.pop();
op.push(read_char);
}
}
} else
digit_node += read_char;//将每次读取的单个数字字符相加
i++;
}
if (digit_node != ““)
converted.push(digit_node); //入栈最后一个数字
while (!op.empty()) {//将剩余的运算符栈所有元素压入栈
converted.push(op.top());
op.pop();
}
stack stk;
while (!converted.empty()){ //颠倒逆波兰表达式的入栈顺序送入另一个栈
stk.push(converted.top());
converted.pop();
}
return stk;
}
string rpn(string input)
{
stack stk1 = transform(input);
stack rs;
while (!stk1.empty()) {
if (is_operator(stk1.top())) {//每遇
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4171 2018-01-07 20:06 calculator\calculate.cpp
文件 393 2018-01-07 08:31 calculator\calculate.h
文件 746 2018-01-07 20:16 calculator\calculator.pro
文件 18202 2018-06-15 19:38 calculator\calculator.pro.user
文件 18191 2018-01-07 21:15 calculator\calculator.pro.user.577c26e
文件 688 2018-01-07 10:05 calculator\choose.cpp
文件 629 2018-01-07 10:05 calculator\choose.h
文件 2064 2018-01-07 08:29 calculator\choose.ui
目录 0 2018-01-07 20:05 calculator\debug\
文件 1582 2018-01-07 20:15 calculator\equation.cpp
文件 504 2018-01-07 10:12 calculator\equation.h
文件 1769 2018-01-07 10:12 calculator\equation.ui
文件 1445 2018-01-07 20:15 calculator\equationset.cpp
文件 534 2018-01-07 10:12 calculator\equationset.h
文件 1787 2018-01-07 10:12 calculator\equationset.ui
文件 1813 2018-01-07 17:09 calculator\fangchengzu.cpp
文件 257 2018-01-07 09:41 calculator\fangchengzu.h
目录 0 2018-01-07 20:15 calculator\help\
文件 213 2018-06-15 19:38 calculator\help\Equation
文件 203 2018-06-15 19:37 calculator\help\EquationSet_Help.txt
文件 168 2018-06-15 19:37 calculator\help\MatrixHelp.txt
文件 918 2018-01-07 19:17 calculator\main.cpp
文件 3092 2018-01-07 09:06 calculator\mainwindow.cpp
文件 1022 2018-01-07 09:06 calculator\mainwindow.h
文件 7398 2018-01-07 09:06 calculator\mainwindow.ui
文件 19054 2018-06-15 19:22 calculator\Makefile
文件 69719 2018-06-15 19:22 calculator\Makefile.Debug
文件 69935 2018-06-15 19:22 calculator\Makefile.Release
文件 1932 2018-01-07 20:15 calculator\matrix.cpp
文件 492 2018-01-07 10:12 calculator\matrix.h
文件 1771 2018-01-07 10:12 calculator\matrix.ui
............此处省略32个文件信息
- 上一篇:自适应多目标粒子群优化器AMOPSO
- 下一篇:wwwscan不错的网站目录扫描
相关资源
- QT自定义精美换肤界面转
- QT5 简易多媒体播放器
- QT使用样式表进行界面美化
- QT的QSS教程
- 大恒相机QT例程LINUX
- 一个用汇编语言程序设计的计算器,
- QT的简要界面设计的一个
- 基于 qt的gstreamer 应用,
- 基于QT的网络聊天室+收发数据及文件
- QT 不规则悬浮球 仿360
- qt数据画波形
- qt 实现ftp服务器源码
- VTK应用之VTK与Qt整合的
- 中南大学绩点计算器
- qt实现的滑动设置时间自定义控件
- Qt的pro文件转VS的工程文件
- 非阻塞套接字的应用___远程计算器
- QT Qudpsocket 传送结构体数据
- Qt 使用多线程QThread实现进度条
- JasonQt_BaiduVop Demo
- Qt实现半透明不规则窗体的
- qtwinmigrate-2.8_1-opensource_qt5.7
- image_process.zip
- Qt 自绘波形图 心电图 的 实时显示
- Qt实现高级组织结构图
- Qt实现绘图工具
- Qt实现网络拓扑图
- QTtabBar+中文语言文件+win8主题
- CustomDelegate.rar
- Qt读取txt文件的内容,保存到数组,并
评论
共有 条评论