首页 新闻 会员 周边

C语言,比对两个文件的相似度

0
悬赏园豆:20 [待解决问题]

如果想比对两个程序的关键字要怎么操作呀!跪求。。。。

eddiehu的主页 eddiehu | 初学一级 | 园豆:182
提问于:2015-12-19 12:59
< >
分享
所有回答(1)
0

请问您说的是源文件的相似度还是普通文件的相似度?

[0] | 园豆:1257 (小虾三级) | 2015-12-19 15:57

源文件

支持(0) 反对(0) eddiehu | 园豆:182 (初学一级) | 2015-12-19 16:39

@eddiehu: 还有,请问您的这个程序的目的是比较2个源文件的相似度?还是2个源文件中使用的code关键字的相似度和多少呢?

支持(0) 反对(0) [0] | 园豆:1257 (小虾三级) | 2015-12-19 17:00

@[0]: “设计一个程序,该程序能够打开硬盘指定目录中的源程序文件,并对各个源程序文件进行对比,以判定是否存在抄袭现象”,这是老师给的题目。

我自己是想从关键字出现的频率方面着手,但毕竟刚接触C语言不到4个月,实在没有思路。感谢你回复了我。谢谢了

支持(0) 反对(0) eddiehu | 园豆:182 (初学一级) | 2015-12-19 17:09

@eddiehu: 这个问题先不考虑语言基础。只考虑一下编程(程序)思想。

(1)如果单从关键字的频率入手。相同频率的关键字,但是位置不同,这2个源文件应该是不一样的。

(2)那么还需要考虑位置了?

(3)考虑关键字?什么才算作关键字?这又是一大问题。

(4)一个源文件,复制一份,我把函数部分的位置调整了。那么这就和2冲突了,考虑位置是没有用的。

(5)对于比较懒的同学,复制别人的code,不会去修改。所以code的内容完全一样,函数位置,函数名,以及每个变量名。对于这样的同学,好对付。

(6)对于稍微精明的同学,会修改。把函数的位置调换一下,用替换,把变量名替换了。但是程序的逻辑完全一样。这个又怎么算?(最难的是判断2个源文件的逻辑相似度)。

对于你的情况,只考虑比较懒的同学就可以了。

我的方法:

(1)相似度的拆分:每行code的相似度,每个函数的相似度,最终文件的相似度。每行的相似度使用字符串比较(记得去除干扰性的字符,如:空格)

(2)至于关键字,我脚的,有必要考虑一下变量名和函数名。

(3)或者,干脆直接每个字符比较一下。

说这么多,只是想让你意识到:每一个小问题的背后,都需要考虑很多的问题。程序并不简单。

你可以参考一下现成的比较软件。我用的是UtrlEdit的比较,好多编辑器里面都有code比较的。

支持(0) 反对(0) [0] | 园豆:1257 (小虾三级) | 2015-12-19 17:32

@[0]: 好的,谢谢你了

支持(0) 反对(0) eddiehu | 园豆:182 (初学一级) | 2015-12-19 18:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册