Table of Contents

Tema de casă 2 - Decriptare

Responsabili: Eugen Vasilescu

Termen de predare: 11 decembrie 2014, ora 23:55

Introducere

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).

Cerința problemei

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.

Mențiuni

Format date intrare

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.

Format date ieșire

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.

EXEMPLE INPUT

	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

EXEMPLE OUTPUT

	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

Restrictii

Makefile

Makefile-ul va conține 2 target-uri: build și clean.

Observații

			
        user@hostname ~ $ ./tema2 < input > output

Trimiterea temei

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

Checker local

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.

Referinte