Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Creati o clasa Translate cu care puteti traduce dintr-o limba in alta pe baza unui dictionar.
- Programul functioneaza in felul urmator:
- * mentine un dictionar ca o colectie de perechi (map) (cheie/valoare) in care cheia este un cuvant intr-o limba, iar valoarea lui este cuvantul tradus in alta limba
- * functia DoTranslate primeste o propozitie (formata din cuvinte separate prin spatii).
- * doua cuvinte dintr-o propozitie sunt separate tot timpul DOAR printr-un spatiu (nu mai multe)
- * se considera ca propozitia se da tot timpul corect
- * daca un cuvant nu se poate traduce (nu exista un cuvant corespunzator pentru el) atunci se traduce la fel.
- Fisierul translate.cpp trebuie sa il creati voi si sa adaugati implementarile functiilor din fisierul corespunzator .h
- Fisierele nu contin si include-urile necesare (acestea trebuie sa le adaugati voi).
- 2pct se dau daca programul compileaza.
- Pentru stocarea modului de traducere veti folosi containere STL.
- */
- // T2_exp4.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <map>
- #include <vector>
- #include <utility>
- #include <string>
- using namespace std;
- class Translate
- {
- private:
- map<const char*, const char*> dict;
- public:
- //[1p] initializeaza clasa
- Translate() {
- this->dict.clear();
- }
- //[3p] - adauga o lista pentru traduceri. Returneaza true daca cuvintele din lista sunt unice si nenule
- bool AddTranslate(vector<pair<const char*, const char*>>& lista) {
- for (vector<pair<const char*, const char*>>::iterator it = lista.begin(); it != lista.end(); it++)
- this->dict[it->first] = it->second;
- }
- //[1p] - adauga o traducere dintr-un cuvant in altul. Returneaza true daca cuvant1 nu a fost adaugat pana acuma si cuvant1 si cuvant2 sunt nenule
- bool AddTranslate(const char *cuvant1, const char* cuvant2) {
- this->dict[cuvant1] = cuvant2; return true;
- }
- //[1p] - retruneaza traducerea pentru un cuvant (daca exista) sau NULL altfel
- const char* GetTranslate(const char *cuvant) {
- return this->dict[cuvant];
- }
- //[1p] - returneaza numarul de cuvinte care sunt traduse
- int GetCount() {
- return this->dict.size();
- }
- //[6p] - inverseaza cheia cu valoare de la fiecare element din dictionar
- void ReverseTranslate()
- {
- map<const char*, const char*> dict2;
- for (map<const char*, const char*>::iterator it = this->dict.begin(); it != this->dict.end(); it++)
- dict2[it->second] = it->first;
- this->dict.swap(dict2);
- }
- //[9p] - returneaza textul tradus; se pot folosi find si substr din string STL pt extragerea cuvintelor
- //string DoTranslate(const char* text) {
- //
- //
- //}
- };
- void main()
- {
- Translate t;
- t.AddTranslate("are", "has");
- t.AddTranslate("mere", "apples");
- cout << "Cuvinte = " << t.GetCount() << ", mere = " << t.GetTranslate("mere") << endl;
- //string s = t.DoTranslate("Ana are mere");
- //cout << s << endl; // afiseaza "Ana has apples"
- //t.ReverseTranslate();
- //s = t.DoTranslate("Ana has apples");
- //cout << s << endl; // afiseaza "Ana are mere"
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement