核心演算法和第二版一樣:
標頭檔案:calculate.h
#ifndefcalculate_h
#definecalculate_h
#include
#include
#include
#include
#include
#include
#include
#include
#include
//externqstackdata;
//externqstacksymb;
classcalculate
:public
qmainwindow
;
#endif//calculate_h
原始檔:calculate.cpp
#include"calculate.h"
//qstackdata;
//qstacksymb;
doubleallocate(const
char
*s);
//數和運算子分類
qstackcheck(char
c,qstack
*data,
qstack
symb);//運算子分類處理
intgetpri(char
c);//計算優先順序
qstackcalcu(qstack
*data,
qstack
symb);//計算棧頂元素
calculate::calculate(qwidget*parent):
qmainwindow(parent)
voidcalculate::buttonzeroclicked()
//以下是實現相應的槽函式
voidcalculate::buttononeclicked()
voidcalculate::buttontwoclicked()
voidcalculate::buttonthreeclicked()
voidcalculate::buttonfourclicked()
voidcalculate::buttonfiveclicked()
voidcalculate::buttonsixclicked()
voidcalculate::buttonsevenclicked()
voidcalculate::buttoneightclicked()
voidcalculate::buttonnineclicked()
voidcalculate::buttonaddclicked()
voidcalculate::buttonsubclicked()
voidcalculate::buttonmulclicked()
voidcalculate::buttondivclicked()
voidcalculate::buttondecclicked()
//小數點
voidcalculate::buttonlefclicked()//左括號
voidcalculate::buttonrigclicked()//右括號
voidcalculate::buttonceclicked()
voidcalculate::buttonacclicked()
//直接清空
voidcalculate::buttonequclicked()//等於號
,輸入等於號後開始運算,相當於原來的main
doubleallocate(const
char
*num)
else
//c不是數字
symb=check(c,&data,symb);//c是運算子,進行運算子分類處理
}
i++;
}
if(num[i-1]>='0'&&num[i-1]<='9'&&num[i]=='\0')//解決最後乙個數字無法錄入問題
if(i==strlen(num))//字元已經遍歷到最後
}
return
data.top();
}
//c不是數字,進行運算子分類處理
qstackcheck(char
c,qstack
*data,qstack
symb)
//voidcheck(char
c,qstack&
data,qstack&
symb)
if(c=='(')//c是左括號,直接放入運算棧
else
if(c==')')//c是右括號,則進行運算
else
}
else
//c不是括號
else
//當前棧頂運算子sym不是『(』,不會是)括號,有括號不會存入symb中
else
//c的優先順序大於當前運算子棧棧頂運算子sym
}
}
return
symb;
}
//獲得符號的優先性
intgetpri(char
c)
}
//計算data棧頂兩個元素
qstackcalcu(qstack
*data,qstack
symb)
//voidcalcu(qstack&
data,qstack&
symb)
}
return
symb;
}
calculate::~calculate()原始檔:main.cpp
#include"calculate.h"
#include
intmain(int
argc,
char
*argv)
C語言實現第四版計算器
實現功能 實現數字的加減乘除,包括小數運算,新增功能是實現運算子的優先順序運算 include include void main float y 0,p 1 int d strlen h 取出數字字元放入浮點型陣列num 40 中,取出字元放入字元陣列w 40 中 for int i 0 i d ...
c primer大綱(第四版)
第1章 快速入門 第一部分 基本語言 第2章 變數和基本型別 第3章 標準庫型別 第4章 陣列和指標 第5章 表示式 第6章 語句 第7章 函式 第8章 標準io庫 第二部分 容器和演算法 第9章 順序容器 第10章 關聯容器 第11章 泛型演算法 第三部分 類和資料抽象 第12章 類 第13章 複...
c prime重學(四)基於第四版
迭代器 1 插入迭代器 這類迭代器與容器繫結在一起,實現在容器中插入元素的功能 2 iostream迭代器 這類迭代器可與輸入或輸出流繫結在一起,用於迭代遍歷所關聯的io流。3 反向迭代器 這類迭代器事項向後遍歷。而不是向前遍歷。所有容器型別都定義了自己的 reverse iterator型別,由r...