計算器第四版 C ,QT

2021-08-20 10:04:02 字數 4500 閱讀 1229

核心演算法和第二版一樣:

標頭檔案:calculate.h

#ifndef

calculate_h

#define

calculate_h

#include

#include

#include

#include

#include

#include

#include

#include

#include

//extern

qstackdata;

//extern

qstacksymb;

class

calculate

:public

qmainwindow

;
#endif

//calculate_h

原始檔:calculate.cpp

#include

"calculate.h"

//qstack

data;

//qstack

symb;

double

allocate(const

char

*s);

//數和運算子分類

qstack

check(char

c,qstack

*data,

qstack

symb);//運算子分類處理

int

getpri(char

c);//計算優先順序

qstack

calcu(qstack

*data,

qstack

symb);//計算棧頂元素

calculate::calculate(qwidget

*parent):

qmainwindow(parent)

void

calculate::buttonzeroclicked()

//以下是實現相應的槽函式

void

calculate::buttononeclicked()

void

calculate::buttontwoclicked()

void

calculate::buttonthreeclicked()

void

calculate::buttonfourclicked()

void

calculate::buttonfiveclicked()

void

calculate::buttonsixclicked()

void

calculate::buttonsevenclicked()

void

calculate::buttoneightclicked()

void

calculate::buttonnineclicked()

void

calculate::buttonaddclicked()

void

calculate::buttonsubclicked()

void

calculate::buttonmulclicked()

void

calculate::buttondivclicked()

void

calculate::buttondecclicked()

//小數點

void

calculate::buttonlefclicked()//左括號

void

calculate::buttonrigclicked()//右括號

void

calculate::buttonceclicked()

void

calculate::buttonacclicked()

//直接清空

void

calculate::buttonequclicked()//等於號

,輸入等於號後開始運算,相當於原來的main

double

allocate(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不是數字,進行運算子分類處理
qstack

check(char

c,qstack

*data,qstack

symb)

//void

check(char

c,qstack&

data,qstack&

symb)

if(c=='(')//c是左括號,直接放入運算棧

else

if(c==')')//c是右括號,則進行運算

else

}

else

//c不是括號

else

//當前棧頂運算子sym不是『(』,不會是)括號,有括號不會存入symb中

else

//c的優先順序大於當前運算子棧棧頂運算子sym

}
}

return

symb;

}
//獲得符號的優先性
int

getpri(char

c)

}
//計算data棧頂兩個元素
qstack

calcu(qstack

*data,qstack

symb)

//void

calcu(qstack&

data,qstack&

symb)

}

return

symb;

}
calculate::~calculate()
原始檔:main.cpp

#include

"calculate.h"

#include

int

main(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...