C 計算器Calculator類實現

2021-06-03 07:12:41 字數 1530 閱讀 2919

首先祝賀我會插入源**了。。汗。。原來都不知道還有這個功能。。

然後是我今天實現的calculator類。。分享一下,基於c++程式語言第六章的計算器程式。計算器使用「遞迴下降」的演算法(一種流行的直截了當的自頂向下技術),按照表示式-》子表示式-》項 這一順序遞迴向下求值。然後首先項會返回這個項的型別,為數字、符號、變數等(列舉token_value描述項的型別),接著將項向上返回給字表示式求值,最後字表示式的求值結果被用於整個表示式的最終結果求值中。除了核心演算法的實現,我還新增了乙個輸入流指標istream*和輸入和輸出函式,使計算器可以分別從cin、命令列引數或程式裡的字串輸入,以及輸出到檔案中。這裡,字串和命引數將被儲存至乙個istringstream流,該類是istream的派生類,將用輸入流指標指向這個字串輸入流,讀取輸入。新增了乙個異常類error,繼承自標準庫logic_error類(其實就是用logic_error實現的),以丟擲計算過程中的邏輯錯誤。至此,這個計算器類已經相當完整了。

calculator.h

#ifndef calculator_h

#define calculator_h

#include #include #include #include #include #include class calculator

}; enum token_value;

calculator(const std::string& s):

input(new std::istringstream(s)),curr_tok(print)

calculator(std::istream& is):input(&is),curr_tok(print)

void output(std::ostream&);

private:

double expr(bool);

double term(bool);

double prim(bool);

token_value get_token();

std::istream* input;

std::maptable;

token_value curr_tok;

double number_value;

std::string string_value;

};void calculator::output(std::ostream& os)

while(ch!='\n'&&isspace(ch));

switch(ch)

curr_tok=print;

throw error("bad token"); }}

#endif

main.cpp

定義calculator類

#include #include #include "calculator.h"

int main(int argc,char* argv)

catch(calculator::error e){

std::cout<

製作網頁版簡易計算器(Calculator)

網頁版計算器的製作比想象中要來的容易,介面上只需固定計算器面板的寬高和按鈕的寬高即可。如果點了ac,就把字串content清空,也把輸出框清空。如果點了ce,把字串content清掉最後乙個字元,並把輸出框的值設定為content的值。如果點了 就將計算結果顯示在輸出框,並將content清空。敲黑...

c 算式 計算器 用C 編寫計算器

零有點問題,而且目前只能做一些簡單的運算,平方 開根號 希望有大佬指正我的錯誤 感謝using system using system.collections.generic using system.componentmodel using system.data using system.dra...

日期類 日期計算器

想要完成日期計算器其實只要考慮完成兩個工作就可以了 實現第乙個工作時,如果是減去乙個天數,例如 給定2017 7 10 與減去乙個天數不同的加乙個天數 即多少天以後 需要向當前月份的下乙個月借天數減去目標天數來滿足年月日合法。加減乙個目標天數的實現思路個方法是一樣的。個中細節請參考 中的注釋。實現第...