代码改变世界

帮同学写了个作业,贴一下~~~

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;
}