C 實現四則運算器 帶括號

2022-08-30 22:48:26 字數 1456 閱讀 7830

基本分析可以看另一篇文章c++實現四則運算器(無括號)

棧的實現

#ifndef stack_h

#define stack_h

#includeclass stack_int

; stack_int(unsigned int capacity) :bottom(new int[capacity+1]),top(bottom), capacity(capacity),size(0){};

int operator(unsigned int i) const

bool isempty()const

bool isfull()const

unsigned int getsize()const

unsigned int getcapacity()const

int gettop()const

void settop(int i) }

void push(int i)

else

}private:

void stack_expansion()

bottom = newbottom;

top = newtop;

capacity = newcapacity;

}};#endif

主程式

#include"stack.h"

#includeusing namespace std;

bool is_digit(char i)

bool is_operator(char i)

bool get_priority(char pre,char cur)

int do_operation(int lnum, char ope, int rnum)

/*1+2*3=

1*(2+1*(3+5)+4*3)=

先乘除,後加減,有括號先算括號內的

1+5*4-345+36/6*4+145*4*5-52=

*/void do_arithmetic()

num_stack.push(num);

//cout <<"the number is " <";

do_arithmetic();

} return 0;

}

程式大部分與不帶括號版本很相似,主要更改了兩個方面:

1.對於左括號,令左括號左邊運算子優先順序低於左括號,右邊運算子優先順序高於左括號(即,只要含有左括號的比較結果均為無法進行運算,函式get_priority返回值永遠為false)。

2.對於右括號,令右括號左邊的運算子(除左括號外)優先順序均高於右括號,並且當右括號左邊的符號為左括號時,兩個括號相抵消,左括號退棧。

遇到右括號時,兩括號內的+-*/運算全部可以進行,直到符號棧棧頂為左括號。

C 實現四則運算器 無括號

完成度更高的有括號版本c 實現四則運算器 有括號 對於無括號的計算器,實現起來比較容易,下面讓我們一步步實現。舉例首先明確需要實現怎樣的程式,對於無括號的計算器,大概做成這樣就可以了 52 34 3 4 2 分析 對於例子中的表示式,由於乘除運算的優先順序高於加減運算,我們不能直接從左到右進行。但四...

C 四則運算器

leetcode上的題,只有 空格,計算所給表示式的數值 我現在用的辦法是 中綴表示式轉字尾表示式,然後計算 但是leetcode最後乙個示例是長度為20w的表示式,直接給我弄超時了,先把 放在這裡吧 計算器 include include include includeusing namespac...

分數四則運算器

好的,先弄出個類來,如下 view code 1 class fraction2 各成員實現如下 view code 1 建構函式 2fraction fraction intx,inty 310 denominator y 11 1213 fraction fraction 1417 加法 18c...