This shows you the differences between two versions of the page.
programare:teme_2018:tema2_2018_cbd [2018/11/12 14:46] ioana.alexandru depunctare funcții prea lungi |
programare:teme_2018:tema2_2018_cbd [2018/12/10 10:56] (current) ioana.alexandru [Informații] |
||
---|---|---|---|
Line 5: | Line 5: | ||
* [[oana.balan@cs.pub.ro|Oana Bălan]] | * [[oana.balan@cs.pub.ro|Oana Bălan]] | ||
====== Informații ====== | ====== Informații ====== | ||
- | * Data publicare: 19 Noiembrie 2018 | + | * Data publicare: 17 Noiembrie 2018 |
- | * Deadline Soft: 10 Decembrie 2018 (23:55) | + | * Deadline Soft: 11 Decembrie 2018 (23:55) |
* Deadline Hard: 16 Decembrie 2018 (23:55) | * Deadline Hard: 16 Decembrie 2018 (23:55) | ||
+ | <note>Update 10 Decembrie 8:55 - Deadline soft extins cu o zi.</note> | ||
- | <hidden> | ||
====== Obiective ====== | ====== Obiective ====== | ||
Line 51: | Line 51: | ||
<code=bash>W max_line_length</code> | <code=bash>W max_line_length</code> | ||
- | Operația //wrap// adaugă și elimină caractere //newline// din text astfel încât textul să se încadreze în ''max_line_length'' (să aibă lungimea mai mică sau egală), fără a permite linii prea scurte (în afara ultimei linii dintr-un paragraf) și fără a trunchia cuvintele. O linie este prea scurtă dacă primul cuvânt din linia următoare ar fi încăput în ea fără să depășească ''max_line_length''. | + | Operația //wrap// adaugă și elimină caractere //newline// din text astfel încât textul să se încadreze în ''max_line_length'' (să aibă lungimea - în octeți - mai mică sau egală), fără a permite linii prea scurte (în afara ultimei linii dintr-un paragraf) și fără a trunchia cuvintele. O linie este prea scurtă dacă primul cuvânt din linia următoare ar fi încăput în ea fără să depășească ''max_line_length''. |
+ | |||
+ | Atunci când două linii ''l1'' și ''l2'' sunt concatenate în urma unei operații //wrap//, rezultatul obținut va fi ''"l1` l2`"'' unde ''l1`'' este ''l1'' fără //trailing whitespace//, iar ''l2`'' este ''l2'' fără //starting whitespace//. | ||
<note tip>Un **cuvânt** este orice grupare de caractere încadrată de //whitespace// (spațiu, tab, newline). Spre exemplu, într-un text dat, "după-amiază" va fi considerat un singur cuvânt și nu va fi trunchiat.</note> | <note tip>Un **cuvânt** este orice grupare de caractere încadrată de //whitespace// (spațiu, tab, newline). Spre exemplu, într-un text dat, "după-amiază" va fi considerat un singur cuvânt și nu va fi trunchiat.</note> | ||
Line 106: | Line 108: | ||
<code=bash>C [start_line [end_line]]</code> | <code=bash>C [start_line [end_line]]</code> | ||
- | Operația //center// folosește ca referință cea mai lungă linie din fișier și adaugă spații la începutul liniilor care sunt mai scurte pentru a le centra. | + | Operația //center// folosește ca referință cea mai lungă linie din fișier (fără //trailing whitespace//) și adaugă spații la începutul liniilor care sunt mai scurte pentru a le centra. |
<note>Fie dat următorul fișier de intrare pe care se aplică operația ''C'': | <note>Fie dat următorul fișier de intrare pe care se aplică operația ''C'': | ||
Line 126: | Line 128: | ||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer | ||
elementum, ipsum sit amet vulputate semper, orci justo condimentum | elementum, ipsum sit amet vulputate semper, orci justo condimentum | ||
- | felis, eu lobortis metus quam ac mauris. Mauris sed pharetra leo. | + | felis, eu lobortis metus quam ac mauris. Mauris sed pharetra leo. |
Morbi mollis nunc eu velit tincidunt ullamcorper. Vestibulum | Morbi mollis nunc eu velit tincidunt ullamcorper. Vestibulum | ||
finibus tellus ac lobortis porttitor. Integer a lacus nisi. Morbi | finibus tellus ac lobortis porttitor. Integer a lacus nisi. Morbi | ||
Line 166: | Line 168: | ||
<code=bash>R [start_line [end_line]]</code> | <code=bash>R [start_line [end_line]]</code> | ||
- | Operația //align right// folosește ca referință cea mai lungă linie din fișier și adaugă spații la începutul liniilor care sunt mai scurte pentru a le alinia la marginea din dreapta. | + | Operația //align right// folosește ca referință cea mai lungă linie din fișier (fără //trailing whitespace//) și adaugă spații la începutul liniilor care sunt mai scurte pentru a le alinia la marginea din dreapta. |
<note>Fie dat următorul fișier de intrare pe care se aplică operația ''R'': | <note>Fie dat următorul fișier de intrare pe care se aplică operația ''R'': | ||
Line 206: | Line 208: | ||
Quisque blandit lobortis purus vitae gravida. | Quisque blandit lobortis purus vitae gravida. | ||
- | Morbi sit amet euismod leo. Quisque in hendrerit turpis, ac | + | Morbi sit amet euismod leo. Quisque in hendrerit turpis, ac |
fringilla ante. Sed id mi bibendum, scelerisque arcu vel, | fringilla ante. Sed id mi bibendum, scelerisque arcu vel, | ||
rutrum nibh. | rutrum nibh. | ||
Line 271: | Line 273: | ||
<code=bash>I list_type special_character [start_line [end_line]]</code> | <code=bash>I list_type special_character [start_line [end_line]]</code> | ||
- | Această operație formatează liniile corespunzătoare ca pe o listă a cărei **indici** sunt definiți în funcție de parametrii ''list_type'' și ''special_character''. | + | Această operație formatează liniile corespunzătoare ca pe o listă (aliniată la stânga) a cărei **indici** sunt definiți în funcție de parametrii ''list_type'' și ''special_character''. |
Parametrul ''list_type'' indică tipul listei: | Parametrul ''list_type'' indică tipul listei: | ||
Line 407: | Line 409: | ||
Tema va fi trimisă folosind [[https://vmchecker.cs.pub.ro|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | Tema va fi trimisă folosind [[https://vmchecker.cs.pub.ro|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | ||
- | Găsiți checker-ul {{:programare:teme_2018:2-format-text.zip|aici}}. | + | Găsiți checker-ul {{:programare:teme_2018:tema2_cb.zip|aici}}. |
<note warning> | <note warning> | ||
Line 427: | Line 429: | ||
* Fișierele obținute nu trebuie să conțină [[https://blog.codinghorror.com/whitespace-the-silent-killer/|trailing whitespace]] (cu excepția situației în care aveți o operație invalidă). În urma unei operații goale (''""''), fișierul obținut va avea același conținut ca cel inițial, dar nu va conține trailing whitespace. | * Fișierele obținute nu trebuie să conțină [[https://blog.codinghorror.com/whitespace-the-silent-killer/|trailing whitespace]] (cu excepția situației în care aveți o operație invalidă). În urma unei operații goale (''""''), fișierul obținut va avea același conținut ca cel inițial, dar nu va conține trailing whitespace. | ||
- | ====== Listă depunctări ====== | + | ====== Listă depunctări (neexhaustivă) ====== |
* o temă care nu compilează și nu a rulat pe **vmchecker** nu va fi luată în considerare | * o temă care nu compilează și nu a rulat pe **vmchecker** nu va fi luată în considerare | ||
* o temă care nu rezolvă cerința și trece testele prin alte mijloace nu va fi luată în considerare | * o temă care nu rezolvă cerința și trece testele prin alte mijloace nu va fi luată în considerare | ||
Line 441: | Line 443: | ||
* [[http://pubs.opengroup.org/onlinepubs/009695399/basedefs/string.h.html|Biblioteca string.h]] | * [[http://pubs.opengroup.org/onlinepubs/009695399/basedefs/string.h.html|Biblioteca string.h]] | ||
- | </hidden> |