帮同学写了个作业,贴一下~~~
2008-04-11 21:01 OntheMars 阅读(140) 评论(0) 收藏 举报高中同学让帮忙写的作业,实现的很简单贴在这,可能有人也需要。
实验2: 简易电子字典(3学时)
[问题描述]
现有一个文本文件dictionary.txt,是一个简易电子英汉字典,每个词条占一行,包含英文
单词,词性,汉语词义。如果一个单词有多种词性,为每一种词性建立一个词条
如 apple n. 苹果
book n. 书
save vt. 保存,节省
save prep. 除…之外
[实验目的]
熟悉串的基本操作的含义。
掌握串的数组存储以及在其上实现串操作的基本方法。
掌握对文件的操作。
[实验内容及要求]
1 输入英文单词 能够显示磁性和汉语意思,如果一个单词对应多个词条,则显示所有其对应词条
2 输入D a5可以显示以a开头长度位5的所有单词
3输入 c pencil box 可以组成pencilbox 汉语意思也拼接,并把新词条加到词典尾部
[测试数据]
对给定文件data.txt进行操作
// sssss.cpp : 定义控制台应用程序的入口点。
//
这个是代码,现在给你演示一下怎么用
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include<string>
#include<windows.h>
using namespace std;
#define max 100
class Data
{
public:
string word;//大小写敏感,输入时请注意,索引未使用高速算法
string sound;
string mean;
int len;
};
Data data[max ];
ifstream fin("data.txt");
ofstream fout("data.txt",ios::app);
void work_for_find(string str)
{
for(int i=0;i<max;i++)
if (str==data[i].word)
{
cout<<data[i].word<<" 发音: "<<data[i].sound<<" 翻译: "<<data[i].mean<<endl;
}
}
void D(char str,int len )
{
for(int i=0;i<max;i++)
if ( str==data[i].word[0] && len == data[i].len )
{
cout<<"满足条件的是 "<<data[i].word<<endl;
}
}
void C(string a,string b)
{
string Sa,Sb,SaM,SbM;
for(int i=0;i<max;i++)
if (a==data[i].word)
{
Sa=a;
SaM=data[i].mean;
break;
}
for(int i=0;i<max;i++)
if (b==data[i].word)
{
Sb=b;
SbM=data[i].mean;
break;
}
string c=Sa+Sb;
string sM=SaM+","+SbM;
fout<<endl;
fout<<c<<" "<<"合成词 "<<sM <<endl;
//cout<<c<<" "<<"合成词 "<<sM <<endl;
fout.close();
}
int _tmain(int argc, _TCHAR* argv[])
{
string str;
int number_of_word=0;
int lastblank=0;
string temp;
/*
处理输入,分离空格
*/
while( getline(fin,str,'/n'))
{
for(int i=0;i<str.length();i++)
{
if (str[i]==' ')
{
data[number_of_word].word.assign(str,0,i);
str.assign(str,i+1,str.length()-1);
break;
}
}
for(int i=0;i<str.length();i++)
{
if (str[i]==' ')
{
data[number_of_word].sound.assign(str,0,i);
str.assign(str,i+1,str.length()-1);
break;
}
}
data[number_of_word].mean.assign(str,0,str.length());
///这里是显示从文件中读出的数据
cout<<data[number_of_word].word<<endl;
cout<<data[number_of_word].sound<<endl;
cout<<data[number_of_word].mean<<endl;
cout<<endl;
data[number_of_word].len=data[number_of_word].word.length();
number_of_word++;
};
string ip;//输入的命令
while (1)
{
cin>>ip;
if (ip=="Q"||ip=="q")
{
cout<<"欢迎使用 4 秒后退出"<<endl;
Sleep(4000);
exit(0);
}//判断是否退出
if(ip=="D"||ip=="d")
{
char a;
int len;
cin>>a;
cin>>len;
D(a,len);
}
else if (ip=="C"||ip=="c")
{
string a,b;
cin>>a>>b;
C(a,b);
}
//data
work_for_find(ip);
}
fin.close();
return 0;
}
浙公网安备 33010602011771号