ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:93.61KB ,
资源ID:6044456      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6044456.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构代码相似度检测.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构代码相似度检测.docx

1、数据结构代码相似度检测思路:首先,对要进行比较的所有代码段进行词法分析,并转化为特定的标记(token)串,自己制定一个转换规则。接着,通过两两比较标记(token)串来确定代码之间的相似性,并由此确定代码之间抄袭的程度,过程如图2.1所示。图2.1 源代码复制检测过程示意图将这两个代码分别转换为token串后,基于算法RKR-GST( running-karp-rabin greedy-string-tiling)算法思想,循环求取两个标记串中未被匹配部分的最大公共子串,将其用空格代替,并根据如下公式求出两个token串A,B的相似度:(2.3)过程论述流程图首先要对整个设计做一个整体规划,

2、即设计一个流程图,如图3.1。图3.1 程序流程图程序清单#include #include #include #include #include #include #include #define N 10000#define M 10000#define MAXSTRLEN 10000 /定义最大串长typedef int status;typedef unsigned char SStringMAXSTRLEN+1; /串的定长顺序存储表示SString a3=int,long,short;SString b2=float,double;SString c15=&,|,+,-,+,-,*

3、,/,=,=,;SString d12=,(,),;,#,;,.;SString e29=auto,break,case,char,const,continue,default,do,else,enum, extern,for,goto,if,main,printf,register,return,signed,sizeof, static,struct,switch,typedef,union,unsigned,void,while,volatile;HANDLE hOut;DWORD written;void ShadowWindowLine(char *str);char type(ch

4、ar *str);void token(char name,char list,char token,FILE *table);void simple(int MinMatchLen,FILE *fp1,FILE *fp2);status replace(SString s,int pos,int len,int Ls);int copy(float n);void ShadowWindowLine(char *str)SMALL_RECT rc;CONSOLE_SCREEN_BUFFER_INFO bInfo; / 窗口缓冲区信息WORD att0,att1,attBack;int i, c

5、hNum = strlen(str);GetConsoleScreenBufferInfo( hOut, &bInfo ); / 获取窗口缓冲区信息/ 计算显示窗口大小和位置rc.Left = (bInfo.dwSize.X - chNum)/2 - 2;rc.Top = 8; / 原代码段中此处为bInfo.dwSize.Y/2 - 2,但是如果您的DOS屏幕有垂直滚动条的话,还需要把滚动条下拉才能看到,为了方便就把它改为10rc.Right = rc.Left + chNum + 4;rc.Bottom = rc.Top + 4;att0 = BACKGROUND_RED |BACKGRO

6、UND_BLUE; / 阴影属性att1 = FOREGROUND_RED |FOREGROUND_GREEN |FOREGROUND_BLUE | FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY;/ 文本属性attBack = BACKGROUND_RED |BACKGROUND_GREEN |BACKGROUND_BLUE | BACKGROUND_INTENSITY; / 背景属性/ 设置阴影然后填充COORD posShadow = rc.Left+1, rc.Top+1, p

7、osText = rc.Left, rc.Top,posBack=0,0;for (i=0;i25;i+)FillConsoleOutputAttribute(hOut, attBack,80, posBack, &written);posBack.Y+;for (i=0; i5; i+)FillConsoleOutputAttribute(hOut, att0, chNum + 4, posShadow, &written);posShadow.Y+;for (i=0;i5;i+)FillConsoleOutputAttribute(hOut, att1,chNum + 4, posText

8、, &written);posText.Y+;/ 写文本和边框posText.X = rc.Left + 2;posText.Y = rc.Top + 2;WriteConsoleOutputCharacter(hOut, str, strlen(str), posText, &written);SetConsoleTextAttribute(hOut, bInfo.wAttributes); / 恢复原来的属性char type(char *str) /此函数判断单词类型int i;for(i=0;i3;i+) /a中的关键字if(strcmp(str,ai)=0)return K;for(

9、i=0;i2;i+) /b中的关键字if(strcmp(str,bi)=0)return E;for(i=0;i15;i+) /c中的符号if(strcmp(str,ci)=0)return A;for(i=0;i12;i+) /d中符号if(strcmp(str,di)=0)return R;for(i=0;i29;i+) /e中的关键字if(strcmp(str,ei)=0)return Y;if(isdigit(str0) /09是数字return N;/一般的变量与字符if(!isalnum(str0)return H;else return C;/变量void token(char

10、name,char list,char token,FILE *table) /将两个文件中的字符串分别切割转换为token串FILE *in,*out; char ch,c,bufferN,*linkM;int i=0,j=0,k=0,LenLink=0;if(in=fopen(name,r+)=NULL)printf(源文件无法打开!n);exit(0);if(out=fopen(list,w+)=NULL)printf(文件写入失败!n);exit(0);if(table=fopen(token,w+)=NULL)printf(文件写入失败!n);exit(0);while(!feof(in) /逐字读取文件ch=fgetc(in);if(ch=t | ch= | ch= n) /去掉空格、制表符、回车

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1