[閒聊] 大概是田班hw3的Big-5版本?

作者: ryuchenchang (陳倉)   2013-03-26 00:06:06
(5)
3.2
在這個題目中,你要實作兩個計算機: 一個(四位元組)整數計算機,包含算術運算以及(C語
言支援的)位元運算、一個矩陣計算機,支援(四位元組)整數的矩陣運算,以及MATLAB中的
一些功能。
(1)實作一個(有號)整數計算機(檔名hw3_2_1.{c,cpp})。你可以假設輸入只包含數字和運
算子,其他(包含空白)的字元都可以被忽略。實作必須包含以下的運算功能,並有正確的
優先順序。
-乘* 除/ 模%
-兩數相加+ 相減-
-位元且& 互斥或^ 或| 左移<< 右移>>
-括弧()
-正+ 負-(這邊翻義不確定)
-位元補數(翻義也不確定)
你的程式也要符合以下條件:
-讓使用者可以輸入一串包含以上運算子的中序運算序列(由stdin;長度<=1,000,000),
直到EOF。
-顯示你的堆疊如何將中序改為後序排列。
-顯示對應的後序序列
-顯示計算結果,必須與C語言內的計算結果相同。
你可以假設所有的輸入都是有意義的、沒有矛盾、也跟原來C的表示法沒有衝突。舉例
j++-i就不會出現在測試的輸入中。
#重要#請準備3個輸入,讓助教可以測試以上的要求;並將你的程式的輸出印在紙本作業
上。
(2)
讓你的整數計算機進化,可以支援變數給值(=)的運算,並讓這些變數支援以上的運算功
能。你可以假設變數只有a~z,26個字母。並在計算機開始時都被初始化為0。
#重要#請準備3個輸入,讓助教可以測試以上的要求;並將你的程式的輸出印在紙本作業
上。
(3)MATLAB是一個處理矩陣運算的商業軟體。MATLAB中的矩陣由下列語法宣告:
[1 2 3; 4 5 6; 7 8 9; 10 11 12] ,表示一個4乘3 的矩陣。
你可以假設矩陣只包含整數,亦可以假設輸入只包含數字、運算子、以及宣告矩陣所需要
的字元。矩陣內也不會包含正負號以外的運算子。其他字元你都可以忽略。實作必須包含
以下的運算功能,並有正確的優先順序。 並注意,MATLAB中,運算由左向右。
運算子的優先度可以從這個網址得到:
http://www.mathworks.com/help/matlab/matlab_prog/operators.html#f0-38155
-括弧()表示最高優先度
-轉置';[1 2 0; 3 4 1]' =[1 3; 2 4; 0 1]。備註:MATLAB中會用共軛複數的轉置,但
是因為我們處理整數,共軛轉置和一班的轉置是沒有分別的。
-把每一個元素都次方(.^) 舉例[1 2; 3 4] .^2 =[1 4; 9 16]
-正號+;舉例 +[1 2; 3 4] =[1 2; 3 4]
-負號-;舉例 -[1 2; 3 4] =[-1 -2; -3 -4]
-把相同形狀的兩個矩陣中,每一個元素都相乘(.*)。舉例[1 2; 3 4] .*[5 6; 7 8]
=[5 12; 21 32]
-矩陣相乘(*)(高中課本有定義), 舉例[1 2; 3 4; 0 1] * [5 6; 7 8]=[19 22; 43 50;
7 8]。相同一個運算子也用於將矩陣乘以一個整數。舉例[1 2; 3 4] * 3=[3 6; 9 12]
-矩陣相加/相減(+/-):把相同形狀的兩個矩陣的每一個元素都相加/相減。
-冒號運算子(:) 讀入 開頭:公差:結尾,會建構一個一維矩陣。舉例 1:3:11 => [1 4 7
10]。可以假設中間的整數為正。
你的程式也要符合以下條件:
-讓使用者可以輸入一串包含以上運算子的MATLAB中序運算序列(由stdin;長度
<=1,000,000),直到EOF。
-顯示計算結果,必須與MATLAB的格式和計算結果相同。
你可以假設所有的輸入都有效、沒有矛盾
#重要#請準備3個輸入,讓助教可以測試以上的要求;並將你的程式的輸出印在紙本作業
上。
所有問題,你都要以以下格式輸出:
整數運算機:
RESULT: 1126
矩陣計算機:
RESULT: [5 5 6 6; 1 2 3 4]
顯示堆疊過程以及後序序列的格式你可以自由決定,並在其他行輸出。
請將你的程式壓縮為一個zip檔(學號.zip),在4/9/2013下午3:30前上傳ceiba。包含以下
內容:
-原始碼
-Makefile;助教會用make來編譯你的程式,然後用make run1測試作業2.2(1);make
run2測試作業2.2(3)。在Makefile中,請將stdin導向到./input作為輸入、stdout導向到
./output作為輸出
-選擇性的README,給助教在打分數前看的一封信
其他手寫部分作業,請在死線前把紙本交到課堂上、或CSIE R217。
金牌使用方法:在手寫的作業封面上寫你要用幾面。ex. use 2 metals。金牌請小心使用
,一但使用,不可追回。
金牌用完了怎麼辦? 你可以嘗試拿著一個木牌,開始在醉月湖旁邊繞,直到你不小心跌倒
,讓木牌掉入湖中。然後開始對湖中女神誠實地喇賽。
作者: buefox (foxyrex)   2013-03-26 00:30:00
小光每次最後一句應該可以變成系列文了
作者: weareworld (Hello!World)   2013-03-26 01:35:00
用心推
作者: CalvinyhChen (村長王)   2013-03-26 07:56:00
推女神XDD
作者: kevin830222 (愷愷)   2013-03-26 11:58:00
推木牌 XDDDD
作者: BoyoChen (BoyoChen)   2013-03-27 14:39:00
最後有夠擺爛XD
作者: lsc36 (lsc36)   2013-03-30 01:17:00
位元組

Links booklink

Contact Us: admin [ a t ] ucptt.com