
30.05.2009, 14:55
|
|
Познающий
Регистрация: 27.05.2009
Сообщений: 44
С нами:
8925577
Репутация:
-1
|
|
Сообщение от Monstrillo
Мой товарищ меня опередил) Так же на С++
Написать программу «Англо-русский и русско-английский словарь».
«База данных» словаря содержит по одному варианту перевода слов и хранится в текстовом файле.
Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
Формирование «базы данных» словаря.
Выбор режима работы:
англо-русский;
русско-английский.
Вывод перевода заданного английского слова.
Вывод перевода заданного русского слова.
Базу данных словаря реализовать в виде класса vector.
Заранее спасибо.
я навичок но вот тут немнога попробывал низнаю получилось ли или нет
кроме проверки на уже имеюшися слова чтоби небило пофторени ешё незделал но ето легко осуществить с помошю функции поиска в самам нису кода а так вроде всё зделал осталось тока преукрасить меню и всё такое
Код:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <direct.h>
#include<io.h>
#include<sys/types.h>
#include<sys/stat.h>
using namespace std;
class Translate
{
public:
Translate();
Translate(wstring Rus, wstring Engl);
Translate(const Translate&rhs);
~Translate();
//Set
void SetRus(wstring Rus);
void SetEngl(wstring Engl);
//Get
wstring GetRus()const;
wstring GetEngl()const;
int GetRusLenght()const{ int Lenght=Rus.length(); return Lenght;}
Translate &operator=(const Translate&rhs);
private:
wstring Rus ;
wstring Engl;
};
Translate::Translate (){
Rus='0';
Engl='0';
}
Translate::Translate(std::wstring Rus,std::wstring Engl):
Rus (Rus),
Engl(Engl)
{}
Translate::Translate(const Translate &rhs):
Rus(rhs.GetRus()),
Engl(rhs.GetEngl())
{}
Translate::~Translate()
{}
void Translate::SetRus(std::wstring rus)
{
Rus=rus;
}
void Translate::SetEngl(std::wstring engl)
{
Engl=engl;
}
wstring Translate::GetRus() const
{
return Rus;
}
wstring Translate::GetEngl() const
{
return Engl;
}
Translate&Translate::operator =(const Translate &rhs)
{
Rus=rhs.GetRus();
Engl=rhs.GetEngl();
return *this;
}
typedef vector<Translate> T;
//Funktionen
template <class T>
void Translater ( vector<T>&v,Translate&Transl);
template <class T>
void Add( vector<T>&v,Translate&Transl);
template <class T>
void Remove ( vector<T>&v,Translate&Transl);
template <class T>
void Change( vector<T>&v,Translate&Transl);
template <class T>
void ShawAll(vector<T>&v,Translate&Transl);
template <class T>
void FileExist(vector<T>&v,Translate&Transl);
template <class T>
int Search (vector<T>&v,Translate&Transl);
int main ()
{
locale loc("russian_Russia.1251");
locale::global(loc);
wcin.imbue(locale(".866"));
T v;
Translate Transl;
char choice;
bool Quite=true;
ifstream fin;
bool result=false;
FileExist(v,Transl);
for(;Quite;)
{
cout <<"\n\n\t\t******************Translater**********************\n\n";
cout <<"\t\t+++++В переводчике ";
if(v.size()>1)
cout <<"находятся "<<v.size()<<" Записеи\n";
else
cout<<"находится "<<v.size()<<" Запись \n";
wcout <<"\n **(1)Add***(2)Translate***(3)Change***(4)Remove***(5)ShawAll***(0)Quite**\n";
cout <<"\nчто вы хотите делать ?\n";
wcout<<"\n";
cin>>choice;
cout <<endl;
switch(choice)
{
case '1': Add(v,Transl);
break;
case '2': Translater(v,Transl);
break;
case '3':
break;
case '4':
break;
case '5':ShawAll(v,Transl);
break;
case '0': Quite=false;
break;
default:
{
cout <<"Error\n";
continue;
break;}
}
wofstream fout;
wofstream sout;
fout.open("C:\\Translater 1.0\\Translater.txt");
int q;
for ( q = 0; q <v.size(); q++)
{
int itsLenght=v[q].GetRusLenght();
if(itsLenght>9)
fout<<v[q].GetRus()<<"\t\t\t"<<v[q].GetEngl()<<endl;
else
fout<<v[q].GetRus()<<"\t\t\t\t"<<v[q].GetEngl()<<endl;
}
}
return 0;
}
template <class T>
void Add (std::vector<T>&v,Translate&Transl)
{
wstring Rus,Engl;
wcout<<L"Введи слово"<<endl;
wcin>>Rus;
wcout<<Rus<<endl;
cout<<" Enter the word\n";
wcin>>Engl;
Transl.SetRus(Rus);
Transl.SetEngl(Engl);
v.push_back(Transl);
}
template <class T>
void FileExist(vector<T>&v,Translate&Transl)
{
string strPath="c:\\Translater 1.0";
cout<<strPath ;
if ( access( strPath.c_str(), 0 ) == 0 )
{
struct stat status;
stat( strPath.c_str(), &status );
if ( status.st_mode & S_IFDIR )
{
cout << " Папака была заведена " << endl;
}
else
{
cout << " ето File " << endl;
}
}
else
{
cout << " Папка несуществует, папка\n";
cout<<strPath<<" будет заведена... " << endl;
_mkdir("C:\\Translater 1.0");
}
wifstream fin;
fin.open("C:\\Translater 1.0\\Translater.txt" );
if(fin)
{
cout<<"Фаил Translater.txt был наиден , читается .......\n";
int i=0;
wchar_t rus[100];
wchar_t engl[100];
for(;fin;)
{
fin>>rus;
wstring Rus(rus);
fin>>engl;
wstring Engl(engl);
Transl.SetRus(Rus);
Transl.SetEngl(Engl);
v.push_back(Transl);
}
v.erase(v.end()-1,v.end()); // because for(;fin;)
}
else
cout <<"Фаил Translater.txt был ненаиден\n";
}
template <class T>
void ShawAll(vector<T>&v,Translate&Transl)
{
for(int i=0;i<v.size();i++)
{
wcout <<"Rus: "<<v[i].GetRus() ;
int itsLenght=v[i].GetRusLenght();
if(itsLenght==1||itsLenght==2)
wcout <<"\t\t\t\tEngl: "<<v[i].GetEngl()<<endl;
else
{
if(itsLenght>10)
wcout <<"\t\tEngl: "<<v[i].GetEngl()<<endl;
else
wcout <<"\t\t\tEngl: "<<v[i].GetEngl()<<endl;
}
}
}
template <class T>
void Translater( vector<T>&v,Translate&Transl)
{
wstring Rus,Engl;
wchar_t choice;
cout<<"*** (1)Rus->Engl******** (2) Engl->Rus***\n";
wcin>>choice;
int i=0;
switch (choice)
{
case '1':{
wcin>>Rus;
if(Search (v,Transl,Rus)!=-1)
{
i=Search (v,Transl,Rus);
cout <<"English \n";
wcout<<v[i].GetEngl()<<endl;
}
else
cout<<"Error\n";
}
break;
case '2':
{
wcin>>Engl;
if(Search (v,Transl,Engl)!=-1)
{
i=Search (v,Transl,Engl);
cout <<"Russian \n";
wcout<<v[i].GetRus()<<endl;
}
else
cout<<"Error\n";
}
}
}
template <class T>
int Search (vector<T>&v,Translate&Trransl,wstring Lang)
{
int i,q;
for(i=0;i!=v.size();++i)
{
if((v[i].GetRus()==Lang)||(v[i].GetEngl()==Lang))
{
return i;
}
}
return -1;
}
Последний раз редактировалось new-sl; 30.05.2009 в 22:27..
|
|
|