c 資料結構 棧的應用 計算器

2021-07-09 08:48:28 字數 2030 閱讀 1893

新年第一次發,這幾天在複習期末考試。。但是好像已經複習完了但是還有十天多才考試感覺挺無聊的就寫個計算器。。但是**太難看。。**裡一堆的if else。。我還是學好catch throw吧!!!!先貼出來。。看看再修修補補,好好弄弄結構。。。買了明晚星戰的票。。那今晚要不要出去high呢。。。。。。

#pragma once

#ifndef calculator_h

#define calculator_h

#include#include#includeusing namespace std;

class expression ;

void expression::show()

length = preexpression.length();

loc = 0;

sign = 0;

}void expression::operating()

else if (ch == '='&&loc != length - 1)

else if (isoperator(ch))

char top = operators.top();

operators.pop();

int wrong;

wrong = opera(ch, top);

++loc;

if (loc == length)sign = 1;

if (wrong == 1)

else if (wrong == 2)

else if (wrong == 3)

double opend = operand.top();

if (operand.empty())

else }}

else

} else

operators.pop();

if (operators.empty())

char top = operators.top();

operators.pop();

int wrong;

wrong = opera(ch, top);

if (wrong == 1)

else if (wrong == 2)

else if (wrong == 3)

double opend = operand.top();

operand.pop();

if (!operand.empty())

else

}} }

}int expression::isoperator(char ch)

double expression::readopend()

//如果下乙個不是0-9的字元而是小數點,那麼開始讀取小數部分

if (ch == '.')

} opend = opendinte + openddeci;

return opend;

}int expression::opera(char ch,char top)

else

else

if (ch == ')')

top = operators.top();

operators.pop();

}if (operators.empty())return 2;

}else

} }}bool expression::compareope(char ch, char top)

else if (ch == '*' || ch == '/')

}void expression::start()

#endif

test:

#include#include#include#include#include#include#include#include#include"calculator.h"

using namespace std;

int main()

return 0;

}

《資料結構》棧的應用 基本計算器

寫在前面 考研複習到棧,棧的乙個經典應用例題就是 基本計算器 這個演算法手寫過程我很熟悉,但是 實現不是很熟手,因此複習階段有必要把這個演算法總結一下。include include include include using namespace std intcal vector words,ma...

棧的應用 計算器 加,減,乘,除,括號

最初接觸此類的題目,是只涉及到的加減乘除四則運算,沒有符號的操作,因為在一次筆試中遇到了有括號的情況,抱著遇到問題一定要去解決的態度,筆試結束後嘗試將這道題目進行還原。這裡的思想主要是用到了棧,分為兩個棧,乙個棧存放數字,另外乙個棧存放運算子和括號 include include using nam...

資料結構之棧 實現簡單計算器

numstack.push res 入棧 將數棧的最後數,pop 出,就是結果 int res2 numstack.pop system.out.printf 表示式 s d expression,res2 先建立乙個棧,直接使用前面建立好 定義乙個 arraystack2 表示棧,需要擴充套件功能...