This shows you the differences between two versions of the page.
programare:teme_2014b:tema2 [2014/11/29 00:04] calin.cruceru [Introducere] |
programare:teme_2014b:tema2 [2014/12/09 22:56] (current) eugen.vasilescu [Trimiterea temei] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Introducere ===== | ===== 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 [[http://en.wikipedia.org/wiki/Caesar_cipher || 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). | + | 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 [[http://en.wikipedia.org/wiki/Caesar_cipher | 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). |
Line 16: | Line 16: | ||
**Subpunct a** | **Subpunct a** | ||
- | Dandu-se o cheie si un un text criptat (format din litere mari, litere mici si semne de punctuatie), se doreste decriptarea acestuia folosind metoda prezentata anterior. | + | 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.". | **Exemplu:** Textul "Fsf fwj rjwj." cu o cheie de 5 devine "Ana are mere.". | ||
Line 22: | Line 22: | ||
**Subpunct b** | **Subpunct b** | ||
- | Dupa realizarea decriptarii de la punctul a) se doreste eliminarea tuturor prefixelor cuvintelor din text. Astfel, avand un sir de prefixe introdus de la tastatura, pentru fiecare cuvant din text cautam prefixul de lungime maxima(daca exista) si il eliminam. De asemenea, cuvintele nou formate trebuie sa contina minim 2 caractere (cuvantul "prea" nu va deveni "a" daca avem "pre" in lista de prefixe). | + | 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:** Cuvantul "interschimbare" devine "schimbare" daca prefixul "inter" se afla in lista. Daca in lista s-ar afla si prefixul "in", cuvantul ar fi fost transformat tot in "schimbare" deoarece se ia in calcul prefixul cu lungime mai mare. | + | **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** | **Subpunct c** | ||
- | Dupa realizarea modificarilor de la punctul b) se doreste aflarea celui mai frecvent cuvant din text si numarul de aparitii al acestuia, fara a se face diferenta intre litere mici si litere mari. In cazul in care avem mai multe cuvinte cu acelasi numar de aparitii se va afisa primul din punct de vedere lexicografic. Cuvantul gasit va fi scris doar cu litere mici. | + | 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 transforma in "Schimbare,facut. facut schimbare FACUT,,ea" daca avem prefixele "pr re in inter ne p pre", iar cel mai frecvent cuvant este "facut", care apare de 3 ori. | + | **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 ===== | ===== Mențiuni ===== | ||
- | * **Memoria folosita pentru rezolvarea acestei probleme trebuie alocata dinamic;** | + | * **Memoria folosită pentru rezolvarea acestei probleme trebuie alocată dinamic;** |
- | * Caracterele ce apar in text sunt litere mici, litere mari ale alfabetului englez si semne de punctuatie: " ,.;!?-:"; Doar literele isi vor schimba valoarea in urma decriptarii, semnele de punctuatie ramanand neschimbate; | + | * Caracterele ce apar în text sunt litere mici, litere mari ale alfabetului englez și semne de punctuație: " ,.;!?-:"; Doar literele își vor schimba valoarea în urma decriptării, semnele de punctuație rămânând neschimbate; |
- | * Definim cuvant o succesiune de litere mici sau mari ale alfabetului englez separate de unul sau mai multe semne de punctuatie; | + | * Definim cuvânt o succesiune de litere mici sau mari ale alfabetului englez, separate de unul sau mai multe semne de punctuație; |
- | * In urma decriptarii, literele mici vor ramane mici, iar cele mari tot mari . Ex: "FSF" cu cheie de 5 devine "ANA" si "fsf" tot cu cheie de 5 devine "ana"; | + | * În urma decriptării, literele mici vor rămane mici, iar cele mari tot mari. Ex: "FSF" cu cheie de 5 devine "ANA" și "fsf" tot cu cheie de 5 devine "ana"; |
- | * Cuvintele pot fi separate de orice semn de punctiatie. Ex: textul "Ana n-are mere,pere,prune." contine 6 cuvinte; | + | * Cuvintele pot fi separate de orice semn de punctuație. Ex: textul "Ana n-are mere,pere,prune." conține 6 cuvinte; |
- | * Cuvintele pot fi separate de asemenea de mai multe semne de punctuatie. Ex: textul "Ana ? n-are !., mere" contine 4 cuvinte. | + | * Cuvintele pot fi separate, de asemenea, de mai multe semne de punctuație. Ex: textul "Ana ? n-are !., mere" conține 4 cuvinte; |
- | * Prefixele contin doar litere mici ale alfabetului englez | + | * Prefixele conțin doar litere mici ale alfabetului englez. |
===== Format date intrare ===== | ===== Format date intrare ===== | ||
- | Fisierul de intrare va contine 3 linii. Prima contine valoarea cheii cu care va fi realizata decriptarea, cea de-a 2a textul criptat, in timp ce ultima reprezinta o succesiune de prefixe separate printr-un singur spatiu. | + | 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 ===== | ===== Format date ieșire ===== | ||
- | Se vor afisa 3 linii, corespunzatoare rezultatelor celor 3 cerinte. Prima linie va contine textul decriptat, cea de-a 2a textul decriptat si modificat, iar ultima cel mai frecvent cuvant din text, precum si numar de aparitii al acestuia. | + | 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. |
Line 87: | Line 87: | ||
* 0 ≤ K ≤ 100000000 | * 0 ≤ K ≤ 100000000 | ||
- | * lungimea textului si numarul de prefixe nu se cunosc, dorindu-se alocarea dinamica a memoriei necesare pentru retinerea lor | + | * lungimea textului și numărul de prefixe nu se cunosc, dorindu-se alocarea dinamică a memoriei necesare pentru reținerea lor |
===== Makefile ===== | ===== Makefile ===== | ||
Line 114: | Line 114: | ||
<code> | <code> | ||
- | Grupa_Nume_Prenume_Tema1.zip | + | Grupa_Nume_Prenume_Tema2.zip |
| | ||
- | Eg: 312CB_Popescu_Mircea_Tema1.zip | + | Eg: 312CB_Popescu_Mircea_Tema2.zip |
</code> | </code> | ||
Line 126: | Line 126: | ||
ATENȚIE: Checker-ul, fișierele de input și cele de referință trebuie să se afle în același folder cu sursa. | ATENȚIE: Checker-ul, fișierele de input și cele de referință trebuie să se afle în același folder cu sursa. | ||
- | * [[https://drive.google.com/file/d/0B_M0H58_uLBmeTBERmZiTVU3MzA/view?usp=sharing|Tests&Checker]] | + | * [[https://drive.google.com/file/d/0B_M0H58_uLBmRFdrQjhqV0JSU0U/view?usp=sharing|Tests&Checker]] |
===== Referinte ===== | ===== Referinte ===== |