Показать сообщение отдельно

  #10  
Старый 30.05.2009, 14:55
new-sl
Познающий
Регистрация: 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..
 
Ответить с цитированием