自動出題軟體 小結及初識介面設計

2022-05-25 04:39:10 字數 2715 閱讀 5605

這次修改內容:改變了語言的讀取方式,把**從dev移植到vs中。

表示式的話我也沒用到棧的知識,因為只是用到隨機數隨機符號,然後排列好了,也就沒有檢驗的必要了。

核心是在計算的時候。中綴表示式轉字尾表示式,然後進行計算的道理都懂的,我就講講具體實現。假設自述表示式中的符號以字元形式由鍵盤輸入,並存放在字元型陣列str中,其字尾表示式存放在字元型陣列exp中,在將自述表示式轉換成字尾表示式的過程中用乙個字元型陣列stack作為棧。設字元「#」為表示式的終止符。下面給出將自述表示式轉換成字尾表示式的方法。

依次從鍵盤輸入表示式中的字元ch,對於每乙個ch做如下操作:

若ch為數字,將後續的所有數字依次存入陣列exp中,並以字元「#」標示數字結束。

若ch為左括號「(」,則將此括號插入棧stack。

若ch為右括號「)」,則將棧stack中左括號「(」以前的字元依次刪除並存入陣列exp中,然後將左括號「(」刪除。

若ch為「+」或「-」,則將當前棧stack中的棧頂端連續的「*」或「/」刪除並依次存入陣列exp中,然後將ch插入棧stack中。

若ch為「*」或「\」,則將當前棧stack中的棧頂端連續的「*」或「/」刪除並依次存入陣列exp中,然後將ch插入棧stack中。

若ch為「#」,則將棧stack中的所有運算子依次刪除並存入陣列exp中,然後再將ch存入陣列exp中。最後可在陣列exp中得到表示式的字尾表示。

對於表示式「(56-20)/(4+2)#」,其轉換成字尾表示式的過程,就如下:

stack

exp說明

(ch為「(」,將此括號插入棧stack

(56#

ch為數字,將56存入陣列exp中,並插入乙個字元「#」

(-56#

ch為「-」,由於stack中「(」以前沒有字元,故直接將ch插入棧stack中

(-56#20#

ch為數字,將20#存入陣列exp中

56#20#-

ch為「)」,將棧stack中「(」以前的字元依次刪除並存入陣列exp中,然後將「(」刪除

/56#20#-

ch為「/」,將ch插入棧stack中

/(56#20#-

ch為「(」,將此括號插入棧stack中

/(56#20#-4#

ch為數字,將4#存入陣列exp中

/(+56#20#-4#

ch為「+」,由於stack中「(」以前沒有字元,故直接將ch插入棧stack中

/(+56#20#-4#2#

ch為數字,將2#存入陣列exp中

/56#20#-4#2#+

ch為「)」,故將棧stack中「(」以前的字元依次刪除並存入陣列exp中,然後將「(」刪除

56#20#-4#2#+/

ch為「#」,故將棧stack中的所有有符依次彈出並存入陣列exp中,然後再將ch存入陣列exp中,得到字尾表示式

int question::check(string str)//用於計算生成的表示式的結果

top--;

break;

case '+': /*判定為加減號*/

case '-':

while (top != 0 && stack[top] != '(')

top++; stack[top] = ch;

break;

case '*': /*判定為'*'或'/'號*/

case '/':

while (stack[top] == '*' || stack[top] == '/')

top++; stack[top] = ch;

break;

case ' ':break;

default:

while (ch >= '0' && ch <= '9') /*判定為數字*/

i--;

exp[t] = '#'; t++;

} ch = str1[i]; i++;

} while (top != 0)

exp[t] = '#';

t = 1; top = 0;

ch = exp[t]; t++;

while (ch != '#')

top--; break;

default:d = 0;

while (ch >= '0' && ch <= '9') /*判定為數字字元*/

top++;

stack[top] = char(d);

} ch = exp[t]; t++;

} return stack[top];

}

本來是想看看qt的,qt的方法學起來也很簡單容易看懂跟swing有點相似,但是qt for vs2017的版本還沒發布,只好用一下vs自帶的mfc,mfc呢看起來比較繁瑣

但是,如果不想自己敲**,可以在建立mfc工程的時候選基於對話方塊,這樣用起來就比較方便,跟vb一樣的把控制項拖入,設定控制項的屬性以及動作。不過mfc還要設定類、

變數等。

DRF之初識介面設計

簡述drf django restframework 就是乙個django中使用 rest 介面規範的模組。什麼rest介面規範?就是對於我們書寫前後端分離時,定義介面的一種規範,列舉如下規範 請求方式 url 設計 介面 請求內容 響應內容 get127.0.0.1 8000 books 獲取所有...

軟體使用者介面設計

1.手滑的三種錯誤 捕獲錯誤 前驅動作一致,後繼動作不一致,由此導致的錯誤 描述錯誤 兩者長得太像了,由此導致的錯誤 模式錯誤 動作一致,不同的模式含義不同,由此導致的錯誤 2.預防錯誤的方法 捕獲錯誤 不要讓他們出現一致的前驅序列 讓他們離遠點 模式錯誤 消除多餘的模式 3.確認對話方塊不好!是反...

軟體設計之使用者介面設計

使用者介面 userinte ce 簡稱ui 是直接面對使用者的介面,是系統與使用者之間的媒介,乙個軟體的好壞,ui起著重要因素。ui是軟體的人機互動介面 操作邏輯 介面美觀的整體設計。好的 ui設計不僅僅使得軟體有個性有品位,還讓軟體的操作變得舒適 簡單 自由 充分體現軟體的定位和特點 沒有好的介...