プログラム設計実習レポート-電子辞書
1944 ワード
/*
:
:
。 dictionary.txt , , 8000 , ’\t’ 。 , e[] c[] , , , 。 , , “0000” , :
: , , 。
:
first , :int first=0;
last , :int last=num-1;
num , :num++;
english chinese , :english[8000][20],chinese[8000][20];
:0
:
*/
#include
#include
#include
void open();
int find();
char english[8000][20],chinese[8000][20];
char key[20];
int num=0;
int main()
{
int n;
open();
do
{
printf(" (0000 ):");
n=find();
if(n==0)
break;
else
{
if(n==-1)
{
printf(" , %s
",key);
printf("
");
}
else
{
printf("%s :%s
",key,chinese[n]);
printf("
");
}
}
}
while(1);
printf(" !
");
return 0;
}
void open()
{
FILE *fp;
fp=fopen("dictionary.txt","r");
if(fp==NULL)
{
printf("
");
exit(1);
}
while(!feof(fp))
{
fscanf(fp,"%s%s",english[num],chinese[num]);
num++;
}
fclose(fp);
}
int find()
{
int first=0,last=num-1,index=-1,mid;
scanf("%s",key);
if(strcmp(key,"0000")==0)
return 0;
else
{
while(first<=last)
{
mid=(first+last)/2;
if(strcmp(english[mid],key)==0)
{
index=mid;
break;
}
else if(strcmp(english[mid],key)>0)
last=mid-1;
else
first=mid+1;
}
}
return index;
}