Responsabili: Eugen Vasilescu
Termen de predare: 11 decembrie 2014, ora 23:55
Criptarea este procesul de ascundere a informației pentru a o face ilizibilă fără cunoștințe speciale. Una dintre cele mai simple metode de criptare este criptarea prin deplasare. Astfel, având un alfabet și o cheie k, definim criptare prin deplasare ca înlocuirea fiecărei litere din textul inițial cu o literă care se află în alfabet la distanță k față de cea înlocuită (alfabetul este circular, dupa z urmează a).
Subpunct a
Dându-se o cheie și un un text criptat (format din litere mari, litere mici și semne de punctuație), se dorește decriptarea acestuia folosind metoda prezentată anterior.
Exemplu: Textul “Fsf fwj rjwj.” cu o cheie de 5 devine “Ana are mere.”.
Subpunct b
După realizarea decriptării de la punctul a), se dorește eliminarea tuturor prefixelor cuvintelor din text. Astfel, având un șir de prefixe introdus de la tastatură, pentru fiecare cuvânt din text căutam prefixul de lungime maximă (dacă există) și îl eliminăm. De asemenea, cuvintele nou formate trebuie să conțină minim 2 caractere (cuvântul “prea” nu va deveni “a” dacă avem “pre” în lista de prefixe).
Exemplu: Cuvântul “interschimbare” devine “schimbare” dacă prefixul “inter” se află în listă. Dacă în listă s-ar afla și prefixul “in”, cuvântul ar fi fost transformat tot în “schimbare” deoarece se ia în calcul prefixul cu lungime mai mare.
Subpunct c
După realizarea modificărilor de la punctul b), se dorește aflarea celui mai frecvent cuvânt din text și numărul de apariții ale acestuia, fără a se face diferența între litere mici și litere mari. În cazul în care avem mai multe cuvinte cu același număr de apariții, se va afișa primul din punct de vedere lexicografic. Cuvântul găsit va fi scris doar cu litere mici.
Exemplu: Textul “Schimbare,Prefacut. nefacut interschimbare REFACUT,,prea” se transformă în “Schimbare,facut. facut schimbare FACUT,,ea” daca avem prefixele “pr re in inter ne p pre”, iar cel mai frecvent cuvânt este “facut”, care apare de 3 ori.
Fișierul de intrare va conține 3 linii. Prima conține valoarea cheii cu care va fi realizată decriptarea, cea de-a 2-a textul criptat, iar ultima reprezintă o succesiune de prefixe separate printr-un singur spațiu.
Se vor afișa 3 linii, corespunzătoare rezultatelor celor 3 cerințe. Prima linie va conține textul decriptat, cea de-a 2-a textul decriptat și modificat (cu prefixele șterse), iar ultima cel mai frecvent cuvânt din text, urmat de numărul de apariții al acestuia.
5 Xhmnrgfwj,Uwjkfhzy. sjkfhzy nsyjwxhmnrgfwj WJKFHZY,,uwjf pr re in inter ne p pre
3 suh; Qxph: SUHQxph: QXPH ? SurQXPH sur uHQxph uhq!! pr anti pro des re in pre
Schimbare,Prefacut. nefacut interschimbare REFACUT,,prea Schimbare,facut. facut schimbare FACUT,,ea facut 3
pre; Nume: PRENume: NUME ? ProNUME pro rENume ren!! pre; Nume: Nume: NUME ? NUME pro Nume ren!! nume 5
Makefile-ul va conține 2 target-uri: build și clean.
user@hostname ~ $ ./tema2 < input > output
Fișierul sursă va fi trimis împreună cu Makefile-ul și un README (unde studentul va specifica pașii urmați pentru rezolvarea temei sau alte informații relevante). Aceste fișiere vor trebui arhivate (arhivă de tip zip), iar numele arhivei trebuie sa aibă următoarea formă:
Grupa_Nume_Prenume_Tema2.zip Eg: 312CB_Popescu_Mircea_Tema2.zip
Checkerul poate fi rulat folosind comanda “bash checker.sh” pentru a verifica toate testele sau “bash checker.sh numarTest” pentru verificarea corectitudinii unui singur test.
ATENȚIE: Checker-ul, fișierele de input și cele de referință trebuie să se afle în același folder cu sursa.