欢迎来到天天文库
浏览记录
ID:55441627
大小:64.50 KB
页数:8页
时间:2020-05-13
《相似度数据构.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、自动化系PB11210038张凯数据结构——文章相似度一问题叙述给出两篇文章,从文件中读入这两篇文章,求出其相似度,相似度定义为两篇文章的所有相同处(连续超过n个字认为相同)除以两篇文章中短篇字数。二算法描述1将文件中读入的文字存进字符串,对字符串进行操作2求这两个字符串的公共子串3如果公共子串中超过m个字,就认为该字符串抄袭,并求其长度4将所有抄袭字符串长度累计,除以短篇长度,得到相似度三程序实现#include#include#definesize100typedefstruct{chardata[size];intlen
2、gth;}Sqstring;intStrlength(Sqstrings[size]){inti=0;while(s->data[i]!=' ')i++;return(i+1);}intcommonchar(intnum[][size],intlength1,intlength2,charpublics[],Sqstringstr1[]){intcount1=0,count2=0,i,j,m,n,flag,k,all=0;for(i=0;i3、[n]==1){count1++;//计算相同的字符数num[m][n]=0;//清零m++;//对角线后移n++;}/*if(count1>count2)//寻找最长子串{count2=count1;flag=i;for(k=0;kdata[flag];//将相似字符串赋予publics[k]}*/if(count1>5)all=all+count1;count1=0;}returnall;}intmain(){Sqstringstr1[size],str2[size];in4、ts[size][size];charsub[size]={0};//公共字串inti,j,all,m,n;floatw;//相似度charch;FILE*fp1,*fp2;if((fp1=fopen("text1.txt","r+"))==NULL){printf("can'topentext1");//exit(0);}if((fp2=fopen("text2.txt","r+"))==NULL){printf("can'topentext2");//exit(0);}i=0;j=0;while((ch=fgetc(fp1))!=EOF)str1->d5、ata[i++]=ch;str1->data[i]=' ';while((ch=fgetc(fp2))!=EOF)str2->data[j++]=ch;str2->data[j]=' ';//for(i=0;i6、1->data[i]==str2->data[j])s[i][j]=1;elses[i][j]=0;printf("矩阵是");for(i=0;in)m=n;w=(float)all/m;//强制转换printf("两篇文章的相似度为%f",w);return(0);}四程序调试刚开始试验中出现了诸多问题。1开始使用静态数组存储文章,但在’ ’后出现乱码,且长度不对7、。经过改正,使用动态字符串解决上述问题。2数据类型不兼容。通过强制转换解决。3多次出现死循环,编译成功却不出结果,还是自己不够细心,思维不够缜密。五程序运行结果输入:文本1Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Thseemiraclestoriesinspiredhimtoexercise.输入文本1:Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Asse8、enon"
3、[n]==1){count1++;//计算相同的字符数num[m][n]=0;//清零m++;//对角线后移n++;}/*if(count1>count2)//寻找最长子串{count2=count1;flag=i;for(k=0;kdata[flag];//将相似字符串赋予publics[k]}*/if(count1>5)all=all+count1;count1=0;}returnall;}intmain(){Sqstringstr1[size],str2[size];in
4、ts[size][size];charsub[size]={0};//公共字串inti,j,all,m,n;floatw;//相似度charch;FILE*fp1,*fp2;if((fp1=fopen("text1.txt","r+"))==NULL){printf("can'topentext1");//exit(0);}if((fp2=fopen("text2.txt","r+"))==NULL){printf("can'topentext2");//exit(0);}i=0;j=0;while((ch=fgetc(fp1))!=EOF)str1->d
5、ata[i++]=ch;str1->data[i]=' ';while((ch=fgetc(fp2))!=EOF)str2->data[j++]=ch;str2->data[j]=' ';//for(i=0;i6、1->data[i]==str2->data[j])s[i][j]=1;elses[i][j]=0;printf("矩阵是");for(i=0;in)m=n;w=(float)all/m;//强制转换printf("两篇文章的相似度为%f",w);return(0);}四程序调试刚开始试验中出现了诸多问题。1开始使用静态数组存储文章,但在’ ’后出现乱码,且长度不对7、。经过改正,使用动态字符串解决上述问题。2数据类型不兼容。通过强制转换解决。3多次出现死循环,编译成功却不出结果,还是自己不够细心,思维不够缜密。五程序运行结果输入:文本1Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Thseemiraclestoriesinspiredhimtoexercise.输入文本1:Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Asse8、enon"
6、1->data[i]==str2->data[j])s[i][j]=1;elses[i][j]=0;printf("矩阵是");for(i=0;in)m=n;w=(float)all/m;//强制转换printf("两篇文章的相似度为%f",w);return(0);}四程序调试刚开始试验中出现了诸多问题。1开始使用静态数组存储文章,但在’ ’后出现乱码,且长度不对
7、。经过改正,使用动态字符串解决上述问题。2数据类型不兼容。通过强制转换解决。3多次出现死循环,编译成功却不出结果,还是自己不够细心,思维不够缜密。五程序运行结果输入:文本1Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Thseemiraclestoriesinspiredhimtoexercise.输入文本1:Asseenon"Katie":Thseemiraclestoriesinspireduswiththeirincredibleheros.文本2:Asse
8、enon"
此文档下载收益归作者所有