资源简介
C++数据结构实习。使用双栈实现计算器,将算法从C++控制台界面移植到Qt,并扩展了音乐播放,换肤,复制粘贴等功能。除此之外,还实现了键盘响应,幂运算,开方运算和三角函数等计算功能。Qt样式表通过文件读取实现换肤。原创,希望大家可以多多支持。如有问题请联系我
代码片段和文件信息
#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 Calculator\calc-icon.ico
文件 42 2018-10-13 03:35 Calculator\calc-icon.rc
文件 10135 2018-10-15 01:51 Calculator\calculator.cpp
文件 805 2018-10-10 20:59 Calculator\calculator.h
文件 1203 2018-10-13 03:39 Calculator\Calculator.pro
文件 23929 2018-10-15 12:50 Calculator\Calculator.pro.user
目录 0 2018-10-13 03:32 Calculator\images\
文件 13754 2018-10-12 10:08 Calculator\images\calculator-icon.png
文件 19050 2018-10-11 02:00 Calculator\images\heartNext.png
文件 5575 2018-10-12 01:23 Calculator\images\heartPause.png
文件 18910 2018-10-11 01:59 Calculator\images\heartPlay.png
文件 19017 2018-10-11 01:59 Calculator\images\heartPrevious.png
文件 9088 2018-10-11 00:01 Calculator\images\high_volume.png
文件 5239 2018-10-10 23:57 Calculator\images\lower_volume.png
文件 5069 2018-10-10 23:55 Calculator\images\mute.png
文件 16627 2018-10-11 00:21 Calculator\images\next.png
文件 16217 2018-10-11 00:21 Calculator\images\pause.png
文件 16227 2018-10-11 00:22 Calculator\images\play.png
文件 16732 2018-10-11 00:21 Calculator\images\previous.png
文件 7691 2018-10-10 23:58 Calculator\images\volume.png
文件 183 2018-09-29 19:01 Calculator\main.cpp
文件 13804 2018-10-15 01:25 Calculator\mainwindow.cpp
文件 3007 2018-10-15 02:01 Calculator\mainwindow.h
文件 33802 2018-10-13 02:11 Calculator\mainwindow.ui
目录 0 2018-10-11 23:21 Calculator\music\
文件 3710351 2018-10-11 12:31 Calculator\music\My Soul (Bonus Track).mp3
文件 4477703 2018-10-11 23:20 Calculator\music\陈焕明 - 天空之城.mp3
文件 4078984 2018-10-11 23:20 Calculator\music\玖月花儿与筝 - 琵琶语 (古筝版).mp3
文件 493 2018-10-15 02:13 Calculator\myhelper.h
文件 1444 2018-10-09 01:31 Calculator\mystack.h
文件 875 2018-10-13 02:00 Calculator\res.qrc
............此处省略3个文件信息
- 上一篇:URF-R330开发包
- 下一篇:[浮点计算-编程原理.实现与应用].刘纯根
相关资源
- madplay播放器.rar
- 基于MFC的音乐播放器代码
- Qt/C++模仿酷狗音乐播放器执行文件
- c++ 界面换肤
- C++ 换肤程序
- VC6.0直接可执行源码(音乐播放器,记
- c++课程设计多功能计算器设计
- 音乐播放器的protues仿真
- 音乐播放器mfc.doc
- 在VC++6.0中编写的音乐播放器源代码
- MFC简易音乐播放器源码
- vc++6.0 基于mfc音乐播放器
- Qt实现的音乐播放器
- 换肤窗口VC++程序与源码
- MFC 界面换肤资源
- (源码)百分百仿360安全卫士界面和
- 蜂鸣器数鸭子音乐播放
- 基于51单片机的音乐播放器设计.doc
- c++ 换肤窗口程序代码
- C++实战源码-换肤窗体
- c++ 音乐播放器
- 基于stm32和vs1053的MP3音乐播放器
- 一款音乐播放器源码
- c++ 仿qq音乐播放器
- 音乐播放器C++源代码
- MFC多线程实现背景音乐播放
- MFC做的MP3音乐播放器
评论
共有 条评论