我是其他学科的学生。我想自己制作一个可执行程序。假设我想制作的程序是一个包含几千个单词的小字典。为了在我的Windows XP中创建这样的程序,我收集了一个名为 Borland C ++ V.5.02 的编译器。我下载了一些关于C语言的书籍,如Brian W. Kernighan,Dennis M. Ritchie撰写的 Programming Language (第2版); Sams 24小时内自学C ,以及Byron S. Gottfried的使用C 编程(第2版)。我开始阅读这些书籍,但很快我就发现没有指导如何制作这样的程序,或者我无法理解那些巨大的内容。我期待你的一些指示告诉我应该怎么做。请留下一些评论来帮助我创建这种类型的程序。
答案 0 :(得分:2)
像Python这样的东西更合适吗?
我确信你可以下载许多Python书籍: - )
答案 1 :(得分:1)
欢迎编程。 :)
可能更容易将小问题视为问题:
sort
实用程序很容易,但您或您的用户必须记住对列表进行排序);更快一旦你选择了存储空间(我建议使用纯文本,任何顺序,作为一个很好的起点),你需要找出算法:
fgets
)strcmp
)现在,对输入中的每个单词进行一次迭代:
fgets
)strtok
)这是一个糟糕的字典程序:对于一个100,000字的字典(我/ usr / share / dict / words是98,000,我认为OpenBSD系统上的字列表在150,000范围内)和一个5,000字的文档,你将运行你的内循环大约250,000,000次。即使是快速的机器,这也会很慢。这就是为什么我之前提到了所有那些更复杂的数据结构 - 如果你想要它快,你就不能天真。
如果你对单词列表进行排序,那么你的内循环中将会有大约83,000个比较。
(现在是一个很小的转移:look
程序支持-b
选项要求二进制搜索;没有-b
,它会运行线性搜索:
'help' 'universe' 'apple'
linear .040s .054s .058s
binary .001s .001s .001s
换句话说,如果您要完成5,000个这样的操作,排序单词列表将为您提供更快的运行时间。)
如果你构建一个有限状态机(树形结构),它将与你输入的单词中的字符数相同,即5000次。这将是一个巨大的节省。
如果你构建布隆过滤器,它将计算一个或两个哈希值(这是对你的角色的一些简单算术,非常快)然后一两次查找。很快。
我希望这是有帮助的,至少更简单的版本不应该难以实现。
答案 2 :(得分:0)
是的,一开始很难:)
答案 3 :(得分:0)
如果您想学习C ++,那么您可以使用免费的Microsoft Visual C ++ Express。创建可执行程序是非常简单的任务。看Visual C++ Guided Tour