资源简介
本项目使用了Qt5.3.2版本进行开发,使用了设计模式中的简单工厂设计模式,支持四则运算,三角函数运算和幂运算,是属于计算器中的科学计算型计算器
代码片段和文件信息
#include “operationcalculate.h“
#include
#include
#include
OperationCalculate::OperationCalculate()
{
}
void OperationCalculate::setOperationCalculateStr(QString &strAbstractOperation *abstractOperation)
{
QString operationCalculateStr;
operationCalculateStr = str;
str.clear();
str.append(“\n“);
str.append(“=“);
//将获取到的中缀表达式转换成后缀表达式,使用后缀表达式进行求值
infixConvertPostfix(operationCalculateStr);
qDebug() << “后缀表达式“ << operationCalculateStr;
postFixOperation(operationCalculateStrabstractOperation);
//将计算的结果赋值给str并显示到界面中
//只有结果
str.append(operationCalculateStr);
}
//中缀表达式转后缀表达式
void OperationCalculate::infixConvertPostfix(QString &str)
{
QStack operatorStack;
QStringList strList;
QString temp;
operatorStack.clear();
strList.clear();
//首先将字符串进行切割
for(int i = 0;i < str.size();i++)
{
strList.append(str.mid(i1));
}
//用于接受转化的后缀表达式即接收栈的输出
str.clear();
/*************中缀变后缀步骤****************/
for(int i = 0;i < strList.size();i++)
{
temp = strList.at(i);
//遇到左括号 压栈
if( !temp.compare(“(“) )
{
operatorStack.push(temp);
}else if( !temp.compare(“)“)) //遇到右括号出栈
{
str.append(““);
//不接收右括号的输出
//判断栈顶元素是否是左括号是左括号则停止出栈
while( operatorStack.top().compare(“(“) )
{
//接收除去左括号和右括号的输出
str.append(operatorStack.pop());
str.append(““);
}
//将左括号出栈不接收左括号输出
operatorStack.pop();
}else if( isOperator(temp) ) //操作符和运算数
{
str.append(““);
//操作符之前先追加一个逗号,区分前后的两个操作数
//栈顶元素的优先级要高并且栈不为空
while( !operatorStack.isEmpty() && prePriority(operatorStack.top()temp) > 0 )
{
//将栈顶元素出栈并接收
str.append(operatorStack.pop());
str.append(““);
}
operatorStack.push(temp);
}else //是操作数,直接输出
{
str.append(temp);
}
}
//遇到负数的情况时,最后的数字后面没有逗号
if(str.right(1) != ““)
{
str.append(““);
}
//剩余的运算符出栈
while(!operatorStack.isEmpty())
{
str.append(operatorStack.pop());
str.append(““);
}
}
//后缀表达式的运算
void OperationCalculate::postFixOperation(QString &strAbstractOperation *abstractOperation)
{
QStringList strList;
QStack stackStr;
QString unaryOperate;
QString unaryNum;
QString temp;
QString result;
strList = str.split(““);
str.clear();
qDebug() << strList;
while(strList.contains(““))
{
strList.replace(strList.indexOf(““)“0“);
}
if( !strList.last().compare(“0“) )
{
strList.removeLast();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-13 09:29 Calculator\
文件 634 2015-12-11 18:10 Calculator\Calculator.pro
文件 18233 2015-12-13 09:29 Calculator\Calculator.pro.user
文件 656 2015-12-13 09:30 Calculator\Readme.txt
目录 0 2015-12-11 18:09 Calculator\Src\
目录 0 2015-12-13 09:28 Calculator\Src\OperationCalculate\
文件 96 2015-12-11 18:10 Calculator\Src\OperationCalculate\OperationCalculate.pri
文件 6852 2015-12-13 09:28 Calculator\Src\OperationCalculate\operationcalculate.cpp
文件 736 2015-12-13 09:26 Calculator\Src\OperationCalculate\operationcalculate.h
目录 0 2015-12-13 09:11 Calculator\Src\OperationFunction\
文件 802 2015-12-13 09:09 Calculator\Src\OperationFunction\OperationFunction.pri
文件 551 2015-12-11 16:13 Calculator\Src\OperationFunction\abstractoperation.cpp
文件 409 2015-12-11 15:05 Calculator\Src\OperationFunction\abstractoperation.h
文件 220 2015-12-11 16:13 Calculator\Src\OperationFunction\operationadd.cpp
文件 306 2015-12-11 15:31 Calculator\Src\OperationFunction\operationadd.h
文件 201 2015-12-12 19:23 Calculator\Src\OperationFunction\operationcos.cpp
文件 220 2015-12-12 19:22 Calculator\Src\OperationFunction\operationcos.h
文件 311 2015-12-12 15:28 Calculator\Src\OperationFunction\operationdiv.cpp
文件 222 2015-12-11 14:12 Calculator\Src\OperationFunction\operationdiv.h
文件 2266 2015-12-13 09:11 Calculator\Src\OperationFunction\operationfactory.cpp
文件 1126 2015-12-13 09:11 Calculator\Src\OperationFunction\operationfactory.h
文件 182 2015-12-12 19:29 Calculator\Src\OperationFunction\operationln.cpp
文件 230 2015-12-12 19:29 Calculator\Src\OperationFunction\operationln.h
文件 184 2015-12-12 19:24 Calculator\Src\OperationFunction\operationlog.cpp
文件 239 2015-12-12 19:24 Calculator\Src\OperationFunction\operationlog.h
文件 220 2015-12-11 16:14 Calculator\Src\OperationFunction\operationmul.cpp
文件 220 2015-12-11 14:10 Calculator\Src\OperationFunction\operationmul.h
文件 205 2015-12-13 09:11 Calculator\Src\OperationFunction\operationpower.cpp
文件 251 2015-12-13 09:10 Calculator\Src\OperationFunction\operationpower.h
文件 203 2015-12-12 15:49 Calculator\Src\OperationFunction\operationsin.cpp
文件 220 2015-12-12 15:43 Calculator\Src\OperationFunction\operationsin.h
............此处省略21个文件信息
- 上一篇:DroidPluginDemo
- 下一篇:S7-200PLC CPU224 模块图
评论
共有 条评论