源代码相似度比较.doc_第1页
源代码相似度比较.doc_第2页
源代码相似度比较.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include#include#include#include#define N 32/关键字个数#define size 256#define maxlen 9#define hashlen 41/哈希表长度#define Smax 0.9/相似度s的阈值#define Dmin 2struct hashtable char *hash1;/指向关键字的指针 int count;hashtthashlen;using namespace std;void Hashfunc(char str); /将关键字根据哈希函数放入哈希表中的指定位置int Hashfind(char *words);/在哈希表中找是否该words为关键字,并统计频度int isletter(char ch); /判断是否为字母float Mol(int *x); /取模函数int Dot(int *x1, int *x2); /点积函数float D(int *x1, int *x2); /求距离D的函数float S(int *x1,int *x2); /求相似度S的函数int readc(char * filename); /读取源程序文件中的单词int getkey(char *str,int len); /获取该单词的keyvoid resethash(int n); /重置哈希表void copycount(int x,int n); /将频道拷贝到数组里if(ch=a&ch=A&ch=Z)return 1;return 0; int readc(char *filename) /读取源程序文件中的单词 FILE *fp1=NULL; char wordsmaxlen,ch; int i; if(fp1=fopen (filename,r)=NULL) coutcan not creat file!n; exit(0); while (!feof(fp1) /结束返回1 i=0; ch=fgetc(fp1); /一个字符一个字符的读 while (isletter(ch)=0&feof(fp1)=0) ch=fgetc(fp1); while (isletter(ch)=1&feof(fp1)=0) if (i=maxlen) while (isletter(ch)=1&feof(fp1)=0) ch=fgetc(fp1); i=0; break; /超过最大关键字长度将会跳过当前识别区域,读取下一个单词 else wordsi+=ch; ch=fgetc(fp1); wordsi=0; Hashfind (words); /将得到的该单词调入Hashfind函数,来判断是否为关键字,并统计频度 fclose(fp1); return 0; float Mol(int *x) /取模函数 int i = 0, sum = 0; for (i = 0; i N; i+) sum += (xi * xi); return (float)pow(float)sum,0.5); int Dot(int *x1, int *x2) /点积函数 int i = 0, sum = 0; for (i = 0; i N; i+) sum += x1i * x2i; return sum; float S(int *x1,int *x2) return Dot(x1, x2)/(Mol(x1)*Mol(x2); /求相似度S float D(int *x1, int *x2) /求几何距离 int xN, i = 0; for (i = 0; i N; i+) /向量相减 xi= x1i - x2i; return Mol(x); /再求模 void check(int *x1, int *x2) float xs = 0, xd = 0; xs = S(x1, x2); cout相似度xs=xs Smax) /先判断S,若S大于阈值再计算几何距离 xd = D(x1, x2); cout几何距离xd=xdendl; if (xd Dmin) /如果几何距离小于阈值则判断为相似 cout

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论