排程場演算法 表示式計算

2021-08-29 21:00:56 字數 1091 閱讀 2773

也不是什麼新的東西把,排程場也不說了,就說說我寫過的三個版本表示式的成長吧

第乙個簡單計算器,沒有括號沒有單獨考慮加減乘除優先順序

第二個等價表示式主要是沒有值吧,全代固定變數,然後沒有除法

列出來:

[1]簡單計算器:字串處理之簡單計算器

[2]等價表示式:轉逆波蘭表示式-openjudge[等價表示式]

慢慢填坑,這個表示式計算用到 [1]的擷取浮點數方法,加上[2]的轉逆波蘭及逆波蘭表示式求值,直接貼**了

#includeusing namespace std;

void tranfer_equal(string init_equal,string& equal,queue& num_que)

if(point_flag)

else

number=number*10+(init_equal[i]-'0');

if((init_equal[i+1]>'9'||init_equal[i+1]<'0')&&init_equal[i+1]!='.')

}else if(init_equal[i]=='(')

else if(init_equal[i]==')')

signal.pop();

}else if(init_equal[i]=='+'||init_equal[i]=='-')

signal.push(init_equal[i]);

}else if(init_equal[i]=='*'||init_equal[i]=='/')

signal.push(init_equal[i]);

}else

continue;

i++;

}while(!signal.empty())

}double get_sum(string& equal,queuenum_que)

else

cout<}

cout

cout<}

return 0;

}

演算法訓練 表示式計算

上網查了一下,採用字尾表示式 從中序表示式 轉換為 後序表示式 由於後續表示式更易計算機去解決,所以我們在運算算術表示式時要先轉換為後序的。方法如下 建立符號棧 順序掃瞄中序表示式 a 是數字,直接輸出 b 是運算子 i 直接入棧 ii 將符號棧中的元素依次出棧並輸出,直到 只出棧,不輸出 iii ...

演算法訓練 表示式計算

演算法訓練 表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4 資料規模和約定 表示式長度不超過10...

演算法訓練 表示式計算

題外話 自己孤陋寡聞,不知道c 有棧函式。無賴寫了兩個型別的棧函式,函式寫好了,可是對於表示式中的整數,一位還好處理,可是上了兩位的我就不知道該怎樣轉換成整型了忘了atoi函式,浪費了好多時間 自己太渣了 最後看了的部落格豁然開朗。只要熟悉棧,知道atoi函式,這題處理起來就沒什麼問題.題目 問題描...