Sunteți pe pagina 1din 2

Tema 2

Problema 1
-Translator-

1. Introducere
Acestă problemă vizează implementarea unui program care să traducă un text dintr-o
limbă inițială într-o altă limbă. Vor fi puse la dispoziție o serie de fișiere dicționar,
care pot fi găsite în directorul „translator/dictionare”.
Aceste fișiere sunt denumite convențional, după cum urmează:
rom-eng.txt pentru dicționar din română în engleză
fr-eng.txt pentru dicționar din franceză în engleză, etc.
Fișierele dicționar conțin pe fiecare rând câte o pereche de cuvinte. Pentru fișierul
rom-eng.txt, un posibil conținut ar fi:
casa home
mar apple

2. Modul de utilizare al aplicației


Executabilul care va fi generat în urma compilării sursei, va fi rulat cu o serie de
parametri, după cum urmează:
>tranducator.exe –in file_in.txt –out file_out.txt –limba_in rom -limba_out eng
Atenție! Ordinea parametrilor poate varia. Semnificația acestora este următoarea:
“-in” -> cuvântul de după acest parametrul reprezintă numele fișierului care conține
textul inițial
“-out” -> cuvântul de după acest parametrul reprezintă numele fișierului care
conține textul tradus
“-limba_in” -> cuvântul de după acest parametrul reprezintă limba din care trebuie
să fie tradus textul inițial
“-limba_out” -> cuvântul de după acest parametrul reprezintă limba în care trebuie
să fie tradus textul inițial

3. Detalii de implementare
Aplicația trebuie să fie capabilă să producă un fișier de ieșire pe baza fișierului de
intrare. În fișierul de ieșire va fi scris textul tradus. Practic, fiecare cuvant va fi căutat
în dicționar și va fi înlocuit cu perechea lui in limba cerută.
4. Cazuri speciale
a. Dacă nu există fișierul de intrare, va fi afișat mesajul “Fisierul nu exista!” in fisierul
de iesire, specificat după –out.
b. Dacă un cuvânt nu poate fi găsit in dicționar, acesta va rămâne scris în limba
inițială, dar va fi încadrat de caracterele << și >>.
De exemplu, pentru dictionarul:
casa house
mar apple
nu not
Daca fisierul de intrare este:
casa nu este mar.
Traducere va fi următoarea:
house not <<este>> apple.

5. Ceva mai complicat…


Pentru că un astfel de traducător nu este satisfăcător, se cere implementarea a 3 noi
funcționalități:
a. Detectarea automată a limbii in care este scris textul de intrare. În acest
caz, nu va fi specificat parametrul -limba_in. Pentru a determina limba în
care este scris textul, este necesar ca cel puțin 70% din cuvintele din fisier
să apară în dicționarele aceleiași limbi. Dacă această condiție nu este
respectată, în fișierul de ieșire va fi scris “Limba necunoscuta!”.
b. Traducerea unui text cu ajutorul unei limbi auxiliare. Dacă este dorită
traducerea unui text din română în franceză, dar nu există un dicționar
roman-francez, ar putea exista atat dicționar roman-englez, cât și dictionar
englez-francez. În acest caz, traducerea se va realiza din romană în
engleză, apoi din engleză în fraceză. Evident, în fișierul de ieșire va fi
afișată doar traducerea în limba dorită. Cuvintele care nu sunt găsite vor fi
încadrate în << >> și menționate în limba inițială.
În cazul în care nu poate fi realizată traducerea prin intermediar, în fișierul
de ieșire va fi scris “Nu poate fi realizata traducerea”.
c. Traducerea expresiilor. Această funcționalitate vizează folosirea unor
dicționare suplimentare, folosite pentru traducerea expresiilor. Aceste
dicționare vor avea denumirea la fel ca dicționarele obișnuite, dar aceasta
este precedată de “expr-“. În concluzie, un dicționar de expresii roman-
englez se va numi “expr-rom-eng.txt”. Traducerile expresiilor sunt
organizate pe câte 2 linii, prima în limba initial, și cea de-a doua cu
expresia în limba „destinație”.

6. Alte mențiuni
În cadrul temei, este interzisă implementarea doar pentru trecerea testelor, în sensul că dacă
ar fi schimbate complet denumirile limbilor și a dicționarelor, executabilul trebuie să aibă aceleași
rezultate.

O tema implementată doar pentru trecerea testelor va fi notată cu 1!

S-ar putea să vă placă și