* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作
* 完成日期:
* 版本号:
* 对任务及求解方法的描述部分
* 输入描述:文件dictionary
* 问题描述:从文件dictionary.txt中读入8000词汇,输入一个英文,输入英文及其翻译结果,在屏幕上输出。
* 程序头部的注释结束
//下面是程序
#include<fstream>
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
void search( string find_word);
string e[8000];
string c[8000] ;
string find_word;
int main()
{
int i ;
ifstream infile( "dictionary.txt", ios::in );
if(!infile)
{
cerr << "open error" << endl;
exit(1);
}
for(i = 0; i < 8000; i++)
{
infile >> e[i] >> c[i];
}
infile.close();
cout << "请输入您要查找的英文单词" << endl;
cin >> find_word ;
search(find_word);
return 0 ;
}
void search( string find_word)
{
int i;
bool flag = false;
for(i = 0; i < 8000; i++ )
{ if(e[i] == find_word)
{
cout << e[i] << '\t';
cout << c[i] << endl;
flag = true;
break;
}
}
if(flag == false)
{
cout << "未找到该单词!" << endl;
}
}
经验积累:
1、电子词典的运行体系是,输入一个字符串,用此字符串与已经定义的字符串相比对,相同则输出即可。
2、对于字符串,是对于一串字母(包括各种语言)的总体代换,并组成数组形式,从而形成一个数据库,因此你每输入一个英文单词,就会与一个字符串比对,但用二分法相对更有效率,但我还是不能活学活用,还要继续练习。
3、再一个关键是对于输入的文件内容的处理,怎样才能将英文和中文分开,其实只要看作是两个不同的字符串即可,英文是字符串1,那么中文就相当于字符串2,而实际上你可以定义两个数组e[],c[],分别通过if,else对其进行赋值。能进行这样的基础是必须会用输入输出文件,和字符串的函数运用。
上机感言:
想说的确实不少,但我的不足是还不会用二分法,不过对于BOOL型有了第一次运用,还是可喜的。在此次测试中犯了 1、对于输出结果的数据类型的错误。2、对于字符型数组的理解不对。优点是:在做之前有了将大问题划分成几个小问题的觉悟。