Advertisement
Five_NT

[POO] Test2_exp4

Apr 5th, 2016
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.03 KB | None | 0 0
  1. /*Creati o clasa Translate cu care puteti traduce dintr-o limba in alta pe baza unui dictionar.
  2. Programul functioneaza in felul urmator:
  3. * 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
  4. * functia DoTranslate primeste o propozitie (formata din cuvinte separate prin spatii).
  5. * doua cuvinte dintr-o propozitie sunt separate tot timpul DOAR printr-un spatiu (nu mai multe)
  6. * se considera ca propozitia se da tot timpul corect
  7. * daca un cuvant nu se poate traduce (nu exista un cuvant corespunzator pentru el) atunci se traduce la fel.
  8. Fisierul translate.cpp trebuie sa il creati voi si sa adaugati implementarile functiilor din fisierul corespunzator .h
  9. Fisierele nu contin si include-urile necesare (acestea trebuie sa le adaugati voi).
  10. 2pct se dau daca programul compileaza.
  11. Pentru stocarea modului de traducere veti folosi containere STL.
  12. */
  13. // T2_exp4.cpp : Defines the entry point for the console application.
  14. //
  15.  
  16. #include "stdafx.h"
  17. #include <iostream>
  18. #include <map>
  19. #include <vector>
  20. #include <utility>
  21. #include <string>
  22.  
  23. using namespace std;
  24.  
  25. class Translate
  26. {
  27. private:
  28.     map<const char*, const char*> dict;
  29. public:
  30.     //[1p] initializeaza clasa
  31.     Translate() {
  32.         this->dict.clear();
  33.     }
  34.  
  35.     //[3p] - adauga o lista pentru traduceri. Returneaza true daca cuvintele din lista sunt unice si nenule
  36.     bool AddTranslate(vector<pair<const char*, const char*>>& lista) {
  37.         for (vector<pair<const char*, const char*>>::iterator it = lista.begin(); it != lista.end(); it++)
  38.             this->dict[it->first] = it->second;
  39.     }
  40.  
  41.     //[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
  42.     bool AddTranslate(const char *cuvant1, const char* cuvant2) {
  43.         this->dict[cuvant1] = cuvant2; return true;
  44.     }
  45.  
  46.     //[1p] - retruneaza traducerea pentru un cuvant (daca exista) sau NULL altfel
  47.     const char* GetTranslate(const char *cuvant) {
  48.         return this->dict[cuvant];
  49.     }
  50.  
  51.     //[1p] - returneaza numarul de cuvinte care sunt traduse
  52.     int GetCount() {
  53.         return this->dict.size();
  54.     }
  55.  
  56.     //[6p] - inverseaza cheia cu valoare de la fiecare element din dictionar
  57.     void ReverseTranslate()
  58.     {
  59.         map<const char*, const char*> dict2;
  60.         for (map<const char*, const char*>::iterator it = this->dict.begin(); it != this->dict.end(); it++)
  61.             dict2[it->second] = it->first;
  62.  
  63.         this->dict.swap(dict2);
  64.     }
  65.  
  66.     //[9p] - returneaza textul tradus; se pot folosi find si substr din string STL pt extragerea cuvintelor
  67.     //string DoTranslate(const char* text) {
  68.     //
  69.     //
  70.     //}
  71. };
  72.  
  73. void main()
  74. {
  75.     Translate t;
  76.     t.AddTranslate("are", "has");
  77.     t.AddTranslate("mere", "apples");
  78.     cout << "Cuvinte = " << t.GetCount() << ", mere = " << t.GetTranslate("mere") << endl;
  79.     //string s = t.DoTranslate("Ana are mere");
  80.     //cout << s << endl; // afiseaza "Ana has apples"
  81.     //t.ReverseTranslate();
  82.     //s = t.DoTranslate("Ana has apples");
  83.     //cout << s << endl; // afiseaza "Ana are mere"
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement