Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char iword[50][11];
char title[200][15][101];
char mixtitle[200][201];
char print[1000][101];
int titleword[200];
int howiword=0;
int howtitle=0;
int howprint=0;
int prestrcmp(char *a,char *b)
{
int i,j;
int p;
int t1,t2;
int result=0;
int flag=0;
int flag1=0;
char m1[101],m2[101];
p=0;
for(i=0;i<101;i++)
{
m1[i]=0;
m2[i]=0;
}
for(i=0;i<strlen(a);i++)
{
if(a[i]>=65&&a[i]<=90)
{
m1[p]=a[i];
p++;
}
}
p=0;
for(i=0;i<strlen(b);i++)
{
if(b[i]>=65&&b[i]<=90)
{
m2[p]=b[i];
p++;
}
}
result=strcmp(m1,m2);
if(result!=0)
return result;
else
{
for(i=0;i<howtitle;i++)
{
if(strlen(a)==strlen(mixtitle[i]))
{
flag=0;
for(j=0;j<strlen(a);j++)
{
if(labs(a[j]-mixtitle[i][j])!=0&&labs(a[j]-mixtitle[i][j])!=32)
{
flag=1;
break;
}
}
if(flag==0)
t1=i;
break;
}
}
for(i=0;i<howtitle;i++)
{
if(strlen(b)==strlen(mixtitle[i]))
{
flag=0;
for(j=0;j<strlen(b);j++)
{
if(labs(b[j]-mixtitle[i][j])!=0&&labs(b[j]-mixtitle[i][j])!=32)
{
flag=1;
break;
}
}
if(flag==0)
t2=i;
break;
}
}
if(t1!=t2)
return t1-t2;
else
{
t1=0;
t2=0;
for(i=0;i<strlen(a);i++)
{
if(a[i]>=65&&a[i]<=90)
{
t1=i;
break;
}
}
for(i=0;i<strlen(b);i++)
{
if(b[i]>=65&&b[i]<=90)
{
t2=i;
break;
}
}
return t1-t2;
}
}
}
int sort(const void *a,const void *b)
{
return prestrcmp((char *)a,(char *)b);
}
void main()
{
int temp2=0;
char temp;
int result=0;
int yesno=0;
int ptr;
int i=0,j=0,k=0,m=0,n=0;
int flag;
int flag1;
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
for(i=0;i<50;i++)
for(j=0;j<11;j++)
iword[i][j]=0;
for(i=0;i<200;i++)
{
for(j=0;j<201;j++)
mixtitle[i][j]=0;
for(j=0;j<15;j++)
for(k=0;k<101;k++)
title[i][j][k]=0;
titleword[i]=0;
}
for(i=0;i<1000;i++)
for(j=0;j<101;j++)
print[i][j]=0;
while(1)
{
scanf("%s",&iword[howiword]);
howiword++;
if(strcmp(iword[howiword-1],"::")==0)
{
howiword--;
break;
}
}
ptr=0;
howtitle=0;
fgets(mixtitle[howtitle],200,stdin);
while(1)
{
if(fgets(mixtitle[howtitle],200,stdin)==NULL)
break;
if(mixtitle[howtitle][strlen(mixtitle[howtitle])-1]=='n')
mixtitle[howtitle][strlen(mixtitle[howtitle])-1]=0;
ptr=0;
for(i=0;i<strlen(mixtitle[howtitle]);i++)
{
if(mixtitle[howtitle][i]>=65&&mixtitle[howtitle][i]<=90)
{
title[howtitle][titleword[howtitle]][ptr]=mixtitle[howtitle][i]+32;
ptr++;
}
else if(mixtitle[howtitle][i]>=97&&mixtitle[howtitle][i]<=122)
{
title[howtitle][titleword[howtitle]][ptr]=mixtitle[howtitle][i];
ptr++;
}
else if(mixtitle[howtitle][i]==' ')
{
if(strcmp(title[howtitle][titleword[howtitle]],"")!=0)
{
title[howtitle][titleword[howtitle]][ptr]=0;
titleword[howtitle]++;
ptr=0;
}
}
else if(mixtitle[howtitle][i]==0)
{
if(strcmp(title[howtitle][titleword[howtitle]],"")!=0)
{
title[howtitle][titleword[howtitle]][ptr]=0;
titleword[howtitle]++;
ptr=0;
}
break;
}
}
if(strcmp(title[howtitle][titleword[howtitle]],"")!=0)
{
title[howtitle][titleword[howtitle]][ptr]=0;
titleword[howtitle]++;
ptr=0;
}
howtitle++;
}
for(i=0;i<howtitle;i++)
for(j=0;j<strlen(mixtitle[i]);j++)
if(mixtitle[i][j]>=65&&mixtitle[i][j]<=90)
mixtitle[i][j]=mixtitle[i][j]+32;
for(i=0;i<howtitle;i++)
{
for(j=0;j<titleword[i];j++)
{
result=0;
yesno=0;
for(k=0;k<howiword;k++)
{
if(strcmp(iword[k],title[i][j])==0)
result=1;
}
if(result==0)
yesno=1;
if(yesno==1)
{
flag=0;
flag1=0;
strcpy(print[howprint],mixtitle[i]);
for(k=0;k<strlen(mixtitle[i]);k++)
{
if(print[howprint][k]>=97&&print[howprint][k]<=122)
{
if(flag1==0)
{
flag++;
flag1=1;
}
}
else if(print[howprint][k]==' ')
flag1=0;
if(flag-1==j&&flag1==1)
print[howprint][k]=print[howprint][k]-32;
}
howprint++;
}
}
}
qsort(print,howprint,sizeof(char)*101,sort);
for(i=0;i<howprint;i++)
printf("%sn",print[i]);
}