本題請你解析C語言的運算式,每個運算式一列且不超過110個字元。每個運算式僅包含整數變數及部份運算符號,且運算式內不會出現常數值。運算式中最多可能會有26個變數,其變數名稱分別為a ~ z(僅包含小寫字元),且每個變數的初始值依序分別為1 ~ 26(即a=1, b=2, ..., n=14, o=15, ..., z=26)。每個變數最多只會在運算式內出現一次,不見得所有26個變數都會被用上。
運算符號的部份包含用來對兩個運算元作加減的 +, - 符號,例如 a + c - d + b = 2 (因為1+3-4+2=2),除此之外還有兩個運算符號:++, --, 僅對單一運算元作運算,且可能出現在運算元的前面或後面,當++運算子出現在變數之前的時候,會先對變數作加一的動作,之後才將被加一的變數用於整個運算式的計算,例如 ++c - b = 2,因為 c 被加到4之後才減b(2)。當++運算子出現在變數之後,會先將變數值拿來做為整個運算式的計算,之後才會對變數做加一的動作,例如 c++ - b = 1,雖然 c 最後的值還是4。--運算子放在變數前後對算式的影響與++運算子一樣,但它會對變數作減一的動作。
以 ++a + b++為例,其算法是先將a加上1,再作a+b的計算,最後才將b加上1。
Input and Output
請對每一列運算式作計算,先輸出該運算式之後再輸出該運算式的值,並在之後的每一列中依a~z的順序輸出各變數值,請參考範列資料。
請忽略運算式中所有的空白字元,並且你可以假設不會存在模稜兩可的運算式,例如 a+++b 不會出現在輸入資料中。另外像是++a++亦不會出現在輸入資料中。
Sample Input
a + b b - z a+b--+c++ c+f--+--a f-- + c-- + d-++e
Sample Output
Expression: a + b value = 3 a = 1 b = 2 Expression: b - z value = -24 b = 2 z = 26 Expression: a+b--+c++ value = 6 a = 1 b = 1 c = 4 Expression: c+f--+--a value = 9 a = 0 c = 3 f = 5 Expression: f-- + c-- + d-++e value = 7 c = 2 d = 4 e = 6 f = 5
原文出處
沒有留言:
張貼留言