美文网首页程序员
设计九宫格手机输入法(附C++源码)初学C语言练手小项目!

设计九宫格手机输入法(附C++源码)初学C语言练手小项目!

作者: Python编程导师 | 来源:发表于2019-03-17 22:18 被阅读4次

九宫格输入法是一个很经典的输入法,当你输入每个字母的时候,它会提前显示你想输入什么单词,大大加快了人们的打字速度,尤其是在手机屏幕还比较小的时代。

下面是小编整理好的一套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

相关文章

网友评论

    本文标题:设计九宫格手机输入法(附C++源码)初学C语言练手小项目!

    本文链接:https://www.haomeiwen.com/subject/vxipmqtx.html