C Calculator 專案 初試

2022-03-09 00:37:48 字數 1925 閱讀 7318

注:這是乙個c++計算器專案的初始部分。

大體功能簡介:

實現**如下:

#ifndef _scan_h_

#define _scan_h_

#include#include#includeusing std::string;

using std::queue;

class scan; // ->暫無

~scan(){}; // ->暫無

queuegetexp() //返回expression佇列的內容

queuetostringqueue(string ); //tostringqueue將string的內容逐字元提取轉換為string佇列

}; #endif

#ifndef _print_h_

#define _print_h_

#include#include#includeusing namespace std;

class print; //暫無

~print(){}; //暫無

bool putq(queueoutput); //逐行輸出string佇列

};#endif

#include#include#include"scan.h"

#include"print.h"

int main()

#include"scan.h"

bool scan::isdigit(char c) //判斷是否是數字或句點

void scan::numerr()

queuescan::tostringqueue(string input)

{int i=0,dlen=0; //i用於迴圈,dlen用於表示數值長度

int len=input.length(); //用input的長度len來作為迴圈條件

string& c=input; //用c來代替input不然打的太累了=。=

string temp=""; //temp用來暫儲input中的元素

while( i10)numerr(); //判斷數值是否超出範圍

if( (i+1)output)

{int count=0; //count計數確保輸出正確

while( !output.empty() ){

cout<

**編寫過程遇到的問題:

當時的想法是逐字元提取,

後來在debug模式下才找到罪魁禍首,上面這個語句中,當i不小於len後程式向下執行

但是執行到箭頭處時,此時的c[i]已經超出下標範圍了,之後又一次i++了,

而且在下面這步的迴圈條件中的dlen++<=10有錯,這使得數值最大可達11位

第一次寫的這個函式的邏輯有點亂,把上面所有bug總結了一遍後,開始大換血,重新寫了乙個邏輯稍清晰的,正確執行。

因為乙個不小心,耗費了自己一下午時間來debug,簡直血與淚的代價啊,事實告訴自己以後寫程式還是要多想一會,否則大把大把的時間就這樣沒了,同時也告誡自己以後要多注重程式的邏輯,這樣才能寫出更健壯的**來。

作為大學生活的第乙個c++專案,肯定有許多不足之處,歡迎看過的各位給我批評與建議,謝謝!

初試 Julia 語言

之所以這樣說,有三個方面的理由 作為乙個動態語言,它的 jit 編譯器 在很多情況下 還沒有智慧型到,讓我可以同時享受動態語言的便利和它的速度優勢。例如最近我在試用 julia 時最先嘗試的就是把原來用 numba 寫的函式重寫一遍,然而發現結果非常不好。julia 版本的函式執行速度相當於純 py...

初試 廣義表

廣義表 又稱列表 是一種非線性的資料結構,是 線性表的一種推廣。即廣義表中放鬆對錶元素的原子限制,容許它們具有其自身結構。它被廣泛的應用於人工智慧等領域的表處理語言lisp語言中。在lisp語言中,廣義表是一種最基本的資料結構,就連lisp 語言的程式也表示為一系列的廣義表。廣義表是 n n 0 個...

鏈式程式設計初試

鏈式程式設計思想 將多行操作通過 連線成一句 使 可讀性好,比如 a 1 b 2 c 3 代表性的就是masonry 鏈式程式設計特點 方法的返回值是block,block必有返回值 自身物件 block引數 操作物件 先簡單介紹下目前咱們已知的程式設計思想。1 面向過程 處理事情以過程為核心,一步...