This shows you the differences between two versions of the page.
programare:teme_2019:tema2_licurici [2019/11/24 09:34] alexandru.mindru [Trimitere temă] |
programare:teme_2019:tema2_licurici [2019/11/30 21:13] (current) marius.vintila [Cerința 5 - Make it rhyme] |
||
---|---|---|---|
Line 18: | Line 18: | ||
==Actualizări:== | ==Actualizări:== | ||
+ | * **[24.11.2019 - 11:50]** functiile get_friendly_word, get_synonym intorc null daca nu gasesc cuvantul respectiv | ||
+ | * **[26.11.2019 - 01:48]** added checker :), also fixed poem 3 | ||
+ | * **[27.11.2019 - 02:00]** fixed checker :D | ||
===== Obiective Temă ===== | ===== Obiective Temă ===== | ||
* Utilizarea funcțiilor de manipulare a șirurilor de caractere. | * Utilizarea funcțiilor de manipulare a șirurilor de caractere. | ||
Line 93: | Line 96: | ||
Această funcție primește ca parametru cuvântul word și returnează în friendly_word diminutivul corespunzător sau NULL în cazul în care nu s-a găsit un diminutiv. | Această funcție primește ca parametru cuvântul word și returnează în friendly_word diminutivul corespunzător sau NULL în cazul în care nu s-a găsit un diminutiv. | ||
- | Implementarea voastră trebuie sa treacă pe rând prin toate cuvintele din poezie, să apeleze această funcție și dacă rezultatul întors este diferit de NULL să se face replace cu acesta în locul cuvântului aflat inițial în poezie. | + | Implementarea voastră trebuie sa treacă pe rând prin toate cuvintele din poezie, să apeleze această funcție și dacă rezultatul întors este diferit de NULL să se facă replace cu acesta în locul cuvântului aflat inițial în poezie. |
De ex, versul “Trece lebăda pe ape” se va transforma în “Trece lebăduța pe ape” considerând că doar apelul pentru cuvantul “lebăda” a întors un rezultat. | De ex, versul “Trece lebăda pe ape” se va transforma în “Trece lebăduța pe ape” considerând că doar apelul pentru cuvantul “lebăda” a întors un rezultat. | ||
Line 113: | Line 116: | ||
A fost ca niciodată,\\ | A fost ca niciodată,\\ | ||
Din rude mari împăratești,\\ | Din rude mari împăratești,\\ | ||
- | O prea frumoasă **puștoaică**.\\ | + | O prea frumoasă **duduie**.\\ |
- | Se observă că "basme" nu rimează cu perechea lui - "împărătești". Se cere de la biblioteca helper lista de sinonime și se primește {"zvonuri", "povești"} și se alege "povești" pentru că e mai mic lexicografic. Cuvântul "niciodată" nu rimează cu corespondentul lui - "puștoaică", însă în lista de sinonime întoarsă de bibliotecă nu s-a găsit nici un sinonim pentru "niciodată". Astfel, vom încerca să formăm rima din partea cealaltă. Pentru "puștoaică" primim lista {"fată", "duduie"}. Alegem "fată" pentru că este singurul care asigură rima. | + | Se observă că "basme" nu rimează cu perechea lui - "împărătești". Se cere de la biblioteca helper lista de sinonime și se primește {"zvonuri", "povești"} și se alege "povești" pentru că e mai mic lexicografic. Cuvântul "niciodată" nu rimează cu corespondentul lui - "duduie", însă în lista de sinonime întoarsă de bibliotecă nu s-a găsit nici un sinonim pentru "niciodată". Astfel, vom încerca să formăm rima din partea cealaltă. Pentru "duduie" primim lista {"puștoaică", "fată"}. Alegem "fată" pentru că este cuvântul cel mai mic lexicografic care asigură rima. |
Rezultatul final obținut în urma înlocuirilor va fi: | Rezultatul final obținut în urma înlocuirilor va fi: | ||
Line 124: | Line 127: | ||
O prea frumoasă fată.\\ | O prea frumoasă fată.\\ | ||
- | <note>Poeziile primite sunt formate doar din catrene despărțite te un singur rând liber.</note> | + | <note>Poeziile primite sunt formate doar din catrene despărțite de un singur rând liber.</note> |
<note important>Pentru simplitate, se va considera că două cuvinte rimează dacă se termină cu același caracter. De asemenea, toate poeziile primite vor fi scrise **fără diacritice**, la fel și sinonimele și diminutivele.</note> | <note important>Pentru simplitate, se va considera că două cuvinte rimează dacă se termină cu același caracter. De asemenea, toate poeziile primite vor fi scrise **fără diacritice**, la fel și sinonimele și diminutivele.</note> | ||
<note warning>Rima se verifică pentru ultimul caracter alfabetic din vers. După inlocuire punctuația trebuie să se păstreze.\\ \\ | <note warning>Rima se verifică pentru ultimul caracter alfabetic din vers. După inlocuire punctuația trebuie să se păstreze.\\ \\ | ||
Line 141: | Line 144: | ||
Se va implementa un parser al liniei de comandă pentru a putea lucra interactiv cu transformările descrise în cerințele de mai sus și pentru a putea vedea la fiecare pas output-ul rezultat. | Se va implementa un parser al liniei de comandă pentru a putea lucra interactiv cu transformările descrise în cerințele de mai sus și pentru a putea vedea la fiecare pas output-ul rezultat. | ||
Programul scris va citi în continuu de la standard input și va putea primi următoarele comenzi, pentru fiecare din ele trebuind sa apeleze funcția de la cerința corespunzătoare. | Programul scris va citi în continuu de la standard input și va putea primi următoarele comenzi, pentru fiecare din ele trebuind sa apeleze funcția de la cerința corespunzătoare. | ||
- | * load-poem path | + | * load path |
* pe langă skelet-ul oferit, va exista și o bibliotecă auxiliară pentru citirea poeziei, încărcarea listei de diminutive și a listei de sinonime | * pe langă skelet-ul oferit, va exista și o bibliotecă auxiliară pentru citirea poeziei, încărcarea listei de diminutive și a listei de sinonime | ||
* uppercase | * uppercase | ||
* trimming | * trimming | ||
- | * make-it-silly prob | + | * make_it_silly prob |
- | * make-it-friendlier | + | * make_it_friendlier |
- | * make-it-rhyme rhyme-type | + | * make_it_rhyme rhyme-type |
- | * afișează output-ul rezultat în urma secvenței curente de transformări aplicate | + | * afișează output-ul rezultat în urma secvenței curente de transformări aplicate |
* quit | * quit | ||
* iese din program | * iese din program | ||
Line 176: | Line 179: | ||
* @param word - the given word | * @param word - the given word | ||
* @param n - the length of the returned list | * @param n - the length of the returned list | ||
- | * @param word_list - a pointer to a list filled with synonym words having the length n | + | * @param word_list - returns the pointer to a list filled with synonym words having the length n |
*/ | */ | ||
void get_synonym(const char *word, int *n, char ***word_list); | void get_synonym(const char *word, int *n, char ***word_list); | ||
Line 183: | Line 186: | ||
* Receives a word and returns the pointer to a location of memory that holds a friendly word | * Receives a word and returns the pointer to a location of memory that holds a friendly word | ||
* @param word - the given word | * @param word - the given word | ||
- | * @param friendly_word - pointer to a memory where the word is located | + | * @param friendly_word - returns the pointer to a memory where the word is located |
*/ | */ | ||
void get_friendly_word(const char *word, char **friendly_word); | void get_friendly_word(const char *word, char **friendly_word); | ||
Line 197: | Line 200: | ||
Tema va fi trimisă folosind [[https://v2.vmchecker.cs.pub.ro/homepage/|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | Tema va fi trimisă folosind [[https://v2.vmchecker.cs.pub.ro/homepage/|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | ||
- | Găsiți poeme pentru temă [[https://drive.google.com/open?id=1oSBXWMc8uA3GtKqOloOWI-PpruU5XrQq|aici]]. (poemele din test 2 si 3 sunt identice, urmeaza a fi corectat) \\ | + | Găsiți poeme pentru temă [[https://drive.google.com/open?id=14O50wFscdMau7VLD10A6s9dpilxCKTHa|aici]]. \\ |
Găsiți scheletul temei si makefile-ul [[https://drive.google.com/open?id=1AQXH-bEoOKSqSWB-doWHk5Yd6XcpWIJl|aici]]. \\ | Găsiți scheletul temei si makefile-ul [[https://drive.google.com/open?id=1AQXH-bEoOKSqSWB-doWHk5Yd6XcpWIJl|aici]]. \\ | ||
- | Găsiți arhiva cu checker-ul TBD. | + | Găsiți arhiva cu checker-ul [[https://drive.google.com/open?id=1xpu67sA5lmA7L9K2lV8Oe-IyfLehiszq|aici]]. |
Punctajul: | Punctajul: | ||
Line 210: | Line 213: | ||
Formatul arhivei va fi următorul: | Formatul arhivei va fi următorul: | ||
- | - fișierul ''tema2.c''. | + | - Fișierele necesare compilarii. |
+ | - Folderul util care contine biblioteca data de noi. | ||
- Fișierul **Makefile** dat de noi care să conțină următoarele reguli: | - Fișierul **Makefile** dat de noi care să conțină următoarele reguli: | ||
- **build**: creează executabilul aferent (numele executabilului: **tema2**) | - **build**: creează executabilul aferent (numele executabilului: **tema2**) |