如果想比对两个程序的关键字要怎么操作呀!跪求。。。。
请问您说的是源文件的相似度还是普通文件的相似度?
源文件
@eddiehu: 还有,请问您的这个程序的目的是比较2个源文件的相似度?还是2个源文件中使用的code关键字的相似度和多少呢?
@[0]: “设计一个程序,该程序能够打开硬盘指定目录中的源程序文件,并对各个源程序文件进行对比,以判定是否存在抄袭现象”,这是老师给的题目。
我自己是想从关键字出现的频率方面着手,但毕竟刚接触C语言不到4个月,实在没有思路。感谢你回复了我。谢谢了
@eddiehu: 这个问题先不考虑语言基础。只考虑一下编程(程序)思想。
(1)如果单从关键字的频率入手。相同频率的关键字,但是位置不同,这2个源文件应该是不一样的。
(2)那么还需要考虑位置了?
(3)考虑关键字?什么才算作关键字?这又是一大问题。
(4)一个源文件,复制一份,我把函数部分的位置调整了。那么这就和2冲突了,考虑位置是没有用的。
(5)对于比较懒的同学,复制别人的code,不会去修改。所以code的内容完全一样,函数位置,函数名,以及每个变量名。对于这样的同学,好对付。
(6)对于稍微精明的同学,会修改。把函数的位置调换一下,用替换,把变量名替换了。但是程序的逻辑完全一样。这个又怎么算?(最难的是判断2个源文件的逻辑相似度)。
对于你的情况,只考虑比较懒的同学就可以了。
我的方法:
(1)相似度的拆分:每行code的相似度,每个函数的相似度,最终文件的相似度。每行的相似度使用字符串比较(记得去除干扰性的字符,如:空格)
(2)至于关键字,我脚的,有必要考虑一下变量名和函数名。
(3)或者,干脆直接每个字符比较一下。
说这么多,只是想让你意识到:每一个小问题的背后,都需要考虑很多的问题。程序并不简单。
你可以参考一下现成的比较软件。我用的是UtrlEdit的比较,好多编辑器里面都有code比较的。
@[0]: 好的,谢谢你了