2 seanmj seanmj 于 2015.07.16 18:50 提问

数据结构课题,英文单词填空游戏

问题描述:这是一款帮助学生背单词的小软件。建立单词库,可从单词库中随机抽取单词,并随机隐去该单词中的一些字母,在屏幕上显示带空格的单词,用户对空格处的字母进行补全,程序判断填补是否正确,并统计正确率。
编程任务:
(1) 建立单词库,并可以方便地对单词库进行增加、删除。
(2) 随机读取一个单词。
(3) 随机隐去单词中的一些字母,规则是:长度为2~4空一个字母,5~7空二个字母,8~10空三个字母,11以上空四个字母。用随机数方式确定隐去哪几个位上的字母,并在屏幕上显示带空格单词。
(4) 用户填充空格处的字母,程序判断填充是否正确。
(5) 当用户结束游戏时,统计正确率,并输出相应的鼓励语句。


不求代码,只求思想,大概的算法。多谢各位大神指点


就把这个问答当作思路的记录吧。
整个程序在控制台里完成。
1.先在控制台中输入单词,并输出到txt文件中保存待下次调用。
2.读取txt中所有单词并存入数组,再随机输出下标来达到随机抽取单词的目的。
3.对于已经抽取出来的单词,再随机输出数字n表示第n位字母用下划线替代,原字母按顺序保存,n可以有多个。
4.依次输入字母,完成输入。
5.依次比对3中保存的字母和4中输入的字母,判断对错。


3和4中的字母存储方式应该用数组a,b,数组长度由游戏规则决定。

现在的问题是,已经读取的每个单词(字符串)都是一个数组A元素,怎么样再把它变成一个数组B,让其组成字母(字符)变成数组B的元素。

2个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.16 20:19

这也没什么特别的算法,主要就是按你的需求,一个个实现你应该开始动手实现,等碰到了具体问题再来提问请教大家。

seanmj
seanmj 回复oyljerry: 突然发现要有删除功能,这样看只有有单链表比较好了。
2 年多之前 回复
seanmj
seanmj 时间性能应该是一样的吧。。那现在问题是已经读取的每个单词都是一个数组的元素,怎么让它变成一个数组,其组成字母为其元素。。
2 年多之前 回复
oyljerry
oyljerry 回复seanmj: 可以用顺序表,或者vector等。
2 年多之前 回复
seanmj
seanmj 回复oyljerry: 了解。存储结构用顺序表和链表哪个比较好呢。因为要有序号来索引,我用了顺序表。如果用链表就是还要有个计数跟每个单词捆绑在一起吗?这个问题比较基础。。本人新人
2 年多之前 回复
seanmj
seanmj 回复seanmj: 先读取所有单词存在数组中,然后再随机生成一个下标可行吧。
2 年多之前 回复
oyljerry
oyljerry 回复seanmj: 你可以fstream把文件单词都读取出来到一个链表,然后随机产生一个索引值,用这个值取链表中对应的单词
2 年多之前 回复
seanmj
seanmj 就比如说用fstream随机读取txt中的一个单词要怎么实现。
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.07.17 06:42

主要考察链表的运用。
参考:http://download.csdn.net/detail/amy_ymf/5263621

caozhy
caozhy 回复seanmj: 你写的是什么意思,什么叫单词是元素,什么叫变成。
2 年多之前 回复
seanmj
seanmj 的确,已有一些思路但是还是有不少细节问题要处理。。如果方便的话还请多多指教,比如文中黑体字。。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片