PA1

- 最後更新:2009.10.20 -


Q&A


Q1. 請問為何已經include了parser.h卻會編譯錯誤?

A1. 請記得將自己的程式檔案與parser.cpp一起編譯,否則會link不到相關函式


Q2. 請問作業公告文件理的範例中,QueryLineNumber所印的資訊是作業要求嗎?

A2. 基本上物件 AlgParser 是比較一般化的文字處理 parser,因此有提供這項功能.然而作業本身並不需要印出行號,在輸出規定是印出第幾個單字.
也就是說,當取利用 p.QueryString(i) 來取得第i個單字的時候,那麼 i 本身就是所要的字.

舉例來說,大家可能會想要測試以下程式碼所得到的結果...

for( int i = 0 ; i < p.QueryTotalStringCount() ; i++ )
{
cout << p.QueryString(i) << " " << i << endl;
}

(但是這個結果沒有排序,請記得作排序!!)


Q3. 請問parser物件本身是否可以複寫?

A3. 如果不修改parser.cpp的實做是不行的!請另外用資料結構來將 p.QueryString(i) 取得的資料另存然後作排序處理.

舉例來說,以下程式碼可能會出狀況...

p.QueryString(5)="abc";
swap(p.QueryString(6),p.QueryString(10));


Q4. 請問parser.lex的使用方法?

A4. 這個是用來產生parser.cpp的檔案,除非所使用的平台無法編譯parser.cpp,否則應該不需要使用到parser.lex. 此外,如果無法編譯parser.cpp,建議直接與助教聯繫,如果發生有需要使用parser.lex的狀況,助教會指導!


Q5. 請問case sensitive的大小寫字母序為何??

A5. 字母序為A < a < B < b < C < c ... 因此在 sample output 可以發現 IC < integrated


Q6. 請問一下,pdf檔裡附的main及algparser一定要使用嗎?能不能作修改?

A6. 可以不使用它;也可以修改!但是建議別把parse的行為改掉,因為可能會因為parse出不正確的字串.


Q7. 字串的容器有限定是array?或linked list or不限?

A7. 沒有限定, 請自行決定合適的資料結構


有任何問題歡迎來信來信詢問