設計九宮格手機輸入法(附C++原始碼)初學C語言練手小專案!
九宮格輸入法是一個很經典的輸入法,當你輸入每個字母的時候,它會提前顯示你想輸入什麼單詞,大大加快了人們的打字速度,尤其是在手機螢幕還比較小的時代。
下面是小編整理好的一套C/C++資料,加小編C/C++程式設計學習群:825414254,獲取系統性學習C/C++的學習資料

image
下面直接先講資料結構吧。

image
從圖內九宮格下面的標號可以看成,我們實際上應該從2開始,所以按鍵按鈕應該這樣定義:

image
然後我們還要創造一個詞典,詞典就是我們使用輸入法的時候輸入法本身就帶有的詞典,通過詞典,我們才能提前顯示使用者想要輸入的單詞。這裡我們選擇手動輸入詞典。格式是:單詞 + 權重。
權重就是這個單詞的重要性,比如我們輸入中文的時候:打 xiang 顯示的第一個很可能是“想”這個字,而不是“像”這個字,這就是權重控制的先後順序。現在的輸入法一般都是動態設定權重,它們依據你所使用某個字的頻率設定某個拼音的權重。

image
然後我們需要一個數組存放我們的詞典。

image
我們需要對使用者每次敲的數字進行預測,並構造字首
存放構造的單詞字首陣列:

image
我們先把主函式寫了,再觀察需要什麼函式:

image
顯然,calculate應該是個void函式,它要實現數字->字母的過程,並計算權重,決定輸出的是什麼。這裡需要注意的是 for()裡的++i和i++其實效果是一樣的,只不過++i的記憶體開銷小。

image
所以,我們還需要一個計算單詞權重的函式:

image
這樣就大功告成了。
完整程式碼:

image

image

image
結果如圖:

image