资源简介
自己用Qt实现了一个简单的计算器,可以给有需要的朋友参考下。开发环境是Qt4.8.6+Qt Creator3.2.0,里面包含了源码和打包好的工具。本人水平有限,请高手飘过,如有问题请指教。谢谢!
代码片段和文件信息
#include
#include
#include “expression.h“
expression::expression(const QString &str Qobject *parent) :
Qobject(parent)
{
expression = str;
}
bool expression::isValid() const
{
QRegExp regExp(“\\(+\\)+“);
if(regExp.exactMatch(expression))
return false;
QStack stack;
int len = expression.length();
for(int i = 0; i < len; ++i)
{
QChar c = expression[i];
if(“(“ == c)
stack.push(c);
else if(“)“ == c)
{
if(stack.isEmpty())
return false;
stack.pop();
}
}
return stack.isEmpty();
}
void expression::handleexpression()
{
expression = expression.replace(QRegExp(“\\)\\(“) “)*(“);
QRegExp regExp;
regExp.setPattern(“\\d\\(“);
int pos = -1;
while((pos = regExp.indexIn(expression)) != -1)
{
expression = expression.insert(pos + 1 “*“);
pos += regExp.matchedLength();
}
regExp.setPattern(“\\)\\d“);
pos = -1;
while((pos = regExp.indexIn(expression)) != -1)
{
expression = expression.insert(pos + 1 “*“);
pos += regExp.matchedLength();
}
}
int expression::priority(const QChar &c) const
{
if(‘(‘ == c)
return -1;
else if(‘+‘ == c || ‘-‘ == c)
return 0;
else if(‘*‘ == c || ‘/‘ == c)
return 1;
return -1;
}
void expression::divide()
{
QString str;
int len = expression.length();
for(int i = 0; i < len; ++i)
{
QChar c = expression[i];
if(c.isDigit() || “.“ == c)
str += c;
else
{
if(!str.isEmpty())
queue.enqueue(str);
queue.enqueue(c);
str.clear();
}
if(i == len - 1 && c.isDigit())
queue.enqueue(str);
}
}
void expression::changeToSuffix()
{
while(!queue.isEmpty())
{
QString qStr = queue.dequeue();
if(“(“ == qStr)
opStack.push(qStr);
else if(“)“ == qStr)
{
if(opStack.isEmpty())
opStack.push(qStr);
else
{
QString topStr = opStack.top();
while(“(“ != topStr)
{
digitStack.push(topStr);
opStack.pop();
if(opStack.isEmpty())
break;
topStr = opStack.top();
}
if(!opStack.isEmpty())
opStack.pop();
}
}
else if(“+“ == qStr || “-“ == qStr || “*“ == qStr || “/“ == qStr)
{
if(opStack.isEmpty())
opStack.push(qStr);
else
{
QString topStr = opStack.top();
assert(1 == qStr.length());
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 202752 2014-09-07 09:23 Qt四则混合运算计算器\release\Calculator.exe
文件 117262 2014-03-08 02:56 Qt四则混合运算计算器\release\libgcc_s_dw2-1.dll
文件 970766 2014-03-08 02:56 Qt四则混合运算计算器\release\libstdc++-6.dll
文件 48640 2014-03-08 02:56 Qt四则混合运算计算器\release\libwinpthread-1.dll
文件 2978816 2014-09-06 11:01 Qt四则混合运算计算器\release\QtCore4.dll
文件 10089984 2014-05-14 14:54 Qt四则混合运算计算器\release\QtGui4.dll
文件 7358 2014-09-07 07:24 Qt四则混合运算计算器\src\calculator.ico
文件 518 2014-09-07 07:57 Qt四则混合运算计算器\src\Calculator.pro
文件 18217 2014-09-07 08:25 Qt四则混合运算计算器\src\Calculator.pro.user
文件 66 2014-09-07 07:27 Qt四则混合运算计算器\src\calculator.rc
文件 189 2014-09-07 08:15 Qt四则混合运算计算器\src\css\st
文件 5215 2014-09-06 22:03 Qt四则混合运算计算器\src\ex
文件 589 2014-09-06 21:08 Qt四则混合运算计算器\src\ex
文件 126975 2014-09-07 08:19 Qt四则混合运算计算器\src\images\background.png
文件 5169 2014-09-07 09:15 Qt四则混合运算计算器\src\images\btn_bg.png
文件 3101 2014-09-07 09:15 Qt四则混合运算计算器\src\images\text_edit_bg.png
文件 175 2014-09-06 10:02 Qt四则混合运算计算器\src\main.cpp
文件 239 2014-09-07 08:20 Qt四则混合运算计算器\src\res.qrc
文件 3245 2014-09-07 08:21 Qt四则混合运算计算器\src\widget.cpp
文件 578 2014-09-07 08:20 Qt四则混合运算计算器\src\widget.h
文件 10120 2014-09-06 20:33 Qt四则混合运算计算器\src\widget.ui
目录 0 2014-09-07 09:34 Qt四则混合运算计算器\src\css
目录 0 2014-09-07 09:34 Qt四则混合运算计算器\src\images
目录 0 2014-09-07 09:35 Qt四则混合运算计算器\release
目录 0 2014-09-07 09:34 Qt四则混合运算计算器\src
目录 0 2014-09-07 09:34 Qt四则混合运算计算器
----------- --------- ---------- ----- ----
14589974 26
评论
共有 条评论