資源簡介
本項目使用了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()?<“后綴表達式“?<????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?????{
????????strList.append(str.mid(i1));
????}
????//用于接受轉化的后綴表達式即接收棧的輸出
????str.clear();
????/*************中綴變后綴步驟****************/
????for(int?i?=?0;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()?<????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 模塊圖
評論
共有 條評論