九宫格输入法是一个很经典的输入法,当你输入每个字母的时候,它会提前显示你想输入什么单词,大大加快了人们的打字速度,尤其是在手机屏幕还比较小的时代。
下面是小编整理好的一套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
网友评论