【求助】比较两个文本的相似度!(课设)大哥们,我急用!
这周我们C语言课设,可是周四就考电工了!麻烦大哥哥大姐姐们帮我做个编程!谢谢啦!原题:用程序创建两个文本,并输入一些单词,然后判断他们两个文本的相似度。如果二者所有的单词中,相同的单词数量占总量的%80,则认为两者雷同。
课程设计要求:
1、贯彻结构化程序设计思想
2、用户界面友好,功能明确,操作方便
3、用户界面中至少有“创建文件1、创建文件2、判断相似性、退出”4项。
4、代码应适当缩进,并给出必要注释,以增强程序的可读性!
小弟这有个程序,但是不正确,并且老师不让用goto语句,大侠们也可以改一下帮忙!谢谢啦!
#include"stdio.h"
#include"string.h"
#define N(a,b) 2.0*a/b*100
FILE *pa,*pb;
int t,m;
char a[100],b[100];
/*创建文件1*/
void Creat1_Z()
{
if((pa=fopen("d:\\file1.txt","w+"))==NULL)
printf("\tCannot open this file!\n");
else
{ printf("\tEnter a string to File1:\n");
getchar();
gets(a);
fputs(a,pa);
printf("\tSuccess!\n");
}
fclose(pa);
}
/*创建文件2*/
void Creat2_Z()
{
if((pb=fopen("d:\\file2.txt","w+"))==NULL)
printf("\tCannot open this file!\n");
else
{ printf("\tEnter a string to File2:\n");
getchar();
gets(b);
fputs(b,pb);
printf("\tSuccess!\n");
}
fclose(pb);
}
/*相似性比较*/
void contrast( )
{
char str1[15],str2[15];
int i=0,j=0,t=0,s,k=1,f=1;
while(k==1)
{
for(s=0;(a[i]!=32)&&(a[i]!=0)==1;s++,i++)
str1[s]=a[i];
str1[s]='\0';
if(str1=="") continue;
f=1;
j=0;
while(f==1)
{
for(s=0;(b[j]!=32)&&(b[j]!=0)==1;j++,s++)
str2[s]=b[j];
str2[s]='\0';
if(str2=="") continue;
if(strcmp(str1,str2)==0)
{
t++;
f=0;
continue;
}
j++;
if(b[j]==0) f=0;
}i++;
if(a[i]==0) k=0;
}
printf("相同单词数:%d\n",t);
for(i=0,j=0,s=0;a[i]!=0;i++)
if(a[i]==32) s=0;
else if(s==0) {s=1;j++;}
for(i=0,s=0;b[i]!=0;i++)
if(b[i]==32) s=0;
else if(s==0) {s=1;j++;}
printf("相似度:%5.2f%%\n",N(t,j));
if(N(t,j)>=80) printf("相同!\n");
else printf("不同!\n");
}
/**/
void mune()
{
printf("*****************判断两个文件是否相同*****************\n");
printf("\t\t 1:创建文件1\n");
printf("\t\t 2:创建文件2\n");
printf("\t\t 3:判断相似性\n");
printf("\t\t 4:退出\n");
printf("####################请选择###########################\n");
printf("****************************************************\n");
}
/**/
void main()
{
while(t!=4)
{
mune();
scanf("%d",&t);
if(t==1) Creat1_Z();
else if(t==2) Creat2_Z();
else if(t==3) contrast();
else if(t==4) ;
else printf("输入错误!请重新输入!\n");
}
}
[[it] 本帖最后由 mh4763261 于 2008-7-1 13:14 编辑 [/it]]
[[it] 本帖最后由 mh4763261 于 2008-7-1 13:17 编辑 [/it]]