C++数据结构实习。使用双栈实现计算器,将算法从C++控制台界面移植到Qt,并扩展了音乐播放,换肤,复制粘贴等功能。除此之外,还实现了键盘响应,幂运算,开方运算和三角函数等计算功能。Qt样式表通过文件读取实现换肤。原创,希望大家可以多多支持。如有问题请联系我
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1081406 2018-10-13 03:37 Calculatorcalc-icon.ico
文件 42 2018-10-13 03:35 Calculatorcalc-icon.rc
文件 10135 2018-10-15 01:51 Calculatorcalculator.cpp
文件 805 2018-10-10 20:59 Calculatorcalculator.h
文件 1203 2018-10-13 03:39 CalculatorCalculator.pro
文件 23929 2018-10-15 12:50 CalculatorCalculator.pro.user
目录 0 2018-10-13 03:32 Calculatorimages
文件 13754 2018-10-12 10:08 Calculatorimagescalculator-icon.png
文件 19050 2018-10-11 02:00 CalculatorimagesheartNext.png
文件 5575 2018-10-12 01:23 CalculatorimagesheartPause.png
文件 18910 2018-10-11 01:59 CalculatorimagesheartPlay.png
文件 19017 2018-10-11 01:59 CalculatorimagesheartPrevious.png
文件 9088 2018-10-11 00:01 Calculatorimageshigh_volume.png
文件 5239 2018-10-10 23:57 Calculatorimageslower_volume.png
文件 5069 2018-10-10 23:55 Calculatorimagesmute.png
文件 16627 2018-10-11 00:21 Calculatorimages
ext.png
文件 16217 2018-10-11 00:21 Calculatorimagespause.png
文件 16227 2018-10-11 00:22 Calculatorimagesplay.png
文件 16732 2018-10-11 00:21 Calculatorimagesprevious.png
文件 7691 2018-10-10 23:58 Calculatorimagesvolume.png
文件 183 2018-09-29 19:01 Calculatormain.cpp
文件 13804 2018-10-15 01:25 Calculatormainwindow.cpp
文件 3007 2018-10-15 02:01 Calculatormainwindow.h
文件 33802 2018-10-13 02:11 Calculatormainwindow.ui
目录 0 2018-10-11 23:21 Calculatormusic
文件 3710351 2018-10-11 12:31 CalculatormusicMy Soul (Bonus Track).mp3
文件 4477703 2018-10-11 23:20 Calculatormusic陈焕明 - 天空之城.mp3
文件 4078984 2018-10-11 23:20 Calculatormusic玖月花儿与筝 - 琵琶语 (古筝版).mp3
文件 493 2018-10-15 02:13 Calculatormyhelper.h
文件 1444 2018-10-09 01:31 Calculatormystack.h
文件 875 2018-10-13 02:00 Calculator
es.qrc
............此处省略3个文件信息
#include “Calculator.h“
bool Calculator::Run(QString in double & out QString & errorInfo)
{
index = 0;
oper.Push(‘#‘);
input = in.toStdString(); // 将QString转化为C++标准模板库里的String
char ch op;
double newOperand;
Getch(ch);
if (ch == ‘-‘ && s.IsEmpty()) s.Push(0); //如果表达式的第一个数是负数的话,在操作数栈里压一个0
while (!oper.IsEmpty()){
// 压入操作数
if (isdigit(ch)){
if (!charToDouble(ch newOperand errorInfo)){
Clear();
return false;
}
s.Push(newOperand);
// 如果操作数和pow sqrt sin cos tan之间缺少‘*‘号,则需要补‘*‘号
if (!LackMult(errorInfo)) {
Clear();
return false;
}
Getch(ch);
}
// 压入操作符
switch (ch)
{
case ‘+‘: case ‘-‘: case ‘*‘: case ‘/‘: case ‘#‘: case ‘(‘: case ‘)‘: case ‘%‘:
oper.getTop(op);
if (isp(op) < icp(ch)) { //栈内操作符优先级小于栈外操作符优先级,栈外操作符进栈
if (ch == ‘(‘) {
oper.Push(ch);
Getch(ch);
// 判断左括号后面是否跟着‘-’号,是的话将之后的操作数变为它的相反数。
if (ch == ‘-‘) s.Push(0);
}
else {
oper.Push(ch);
Getch(ch);
}
}
else if (isp(op) > icp(ch)) { //栈内操作符优先级大于栈外操作符优先级,栈内操作符出栈,进行运算
oper.Pop(op);
if (op == ‘(‘ || op == ‘)‘) { // 括号多出情况的错误检测
errorInfo = “无效的输入!“;
Clear();
return false;
}
if (!DoOperator(op errorInfo)) {
Clear();
return false;
}
}
else {
oper.Pop(op); //栈内操作符优先级等于栈外操作符优先级,可判断为左括号,左括号出栈
if (op == ‘(‘) Getch(ch);
}
break;
case ‘e‘: case ‘E‘: case ‘p‘: case ‘s‘: case ‘c‘: case ‘t‘: case ‘^‘:
if (!Extend(ch errorInfo)) {
errorInfo = “无效的输入!“;
Clear();
return false;
}
Getch(ch);
break;
case ‘‘: // 当检测到pow()函数里的逗号时,需要先将‘(’和‘,’之间的表达式计算完毕
oper.getTop(op);
while (op != ‘(‘) {
oper.Pop(op);
if (!DoOperator(op errorInfo)) {
Clear();
return false;
}
oper.getTop(op);
}
Getch(ch);
if (ch == ‘-‘) s.Push(0); // 判断‘,’后面是否跟着‘-’号,是的话将之后的操作数变为它的相反数。
break;
default:
errorInfo = “无效的输入!“;
Clear();
return false;
}
}
if (s.IsEmpty()) out = 0;
else s.getTop(out);
return true;
}
void Calculator::Clear()
{
s.MakeEmpty();
oper.Mak
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1081406 2018-10-13 03:37 Calculatorcalc-icon.ico
文件 42 2018-10-13 03:35 Calculatorcalc-icon.rc
文件 10135 2018-10-15 01:51 Calculatorcalculator.cpp
文件 805 2018-10-10 20:59 Calculatorcalculator.h
文件 1203 2018-10-13 03:39 CalculatorCalculator.pro
文件 23929 2018-10-15 12:50 CalculatorCalculator.pro.user
目录 0 2018-10-13 03:32 Calculatorimages
文件 13754 2018-10-12 10:08 Calculatorimagescalculator-icon.png
文件 19050 2018-10-11 02:00 CalculatorimagesheartNext.png
文件 5575 2018-10-12 01:23 CalculatorimagesheartPause.png
文件 18910 2018-10-11 01:59 CalculatorimagesheartPlay.png
文件 19017 2018-10-11 01:59 CalculatorimagesheartPrevious.png
文件 9088 2018-10-11 00:01 Calculatorimageshigh_volume.png
文件 5239 2018-10-10 23:57 Calculatorimageslower_volume.png
文件 5069 2018-10-10 23:55 Calculatorimagesmute.png
文件 16627 2018-10-11 00:21 Calculatorimages
ext.png
文件 16217 2018-10-11 00:21 Calculatorimagespause.png
文件 16227 2018-10-11 00:22 Calculatorimagesplay.png
文件 16732 2018-10-11 00:21 Calculatorimagesprevious.png
文件 7691 2018-10-10 23:58 Calculatorimagesvolume.png
文件 183 2018-09-29 19:01 Calculatormain.cpp
文件 13804 2018-10-15 01:25 Calculatormainwindow.cpp
文件 3007 2018-10-15 02:01 Calculatormainwindow.h
文件 33802 2018-10-13 02:11 Calculatormainwindow.ui
目录 0 2018-10-11 23:21 Calculatormusic
文件 3710351 2018-10-11 12:31 CalculatormusicMy Soul (Bonus Track).mp3
文件 4477703 2018-10-11 23:20 Calculatormusic陈焕明 - 天空之城.mp3
文件 4078984 2018-10-11 23:20 Calculatormusic玖月花儿与筝 - 琵琶语 (古筝版).mp3
文件 493 2018-10-15 02:13 Calculatormyhelper.h
文件 1444 2018-10-09 01:31 Calculatormystack.h
文件 875 2018-10-13 02:00 Calculator
es.qrc
............此处省略3个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)