Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:teme_2018:tema2_2018_cbd [2018/11/10 22:47]
ioana.alexandru mici clarificări
programare:teme_2018:tema2_2018_cbd [2018/12/10 10:56] (current)
ioana.alexandru [Informații]
Line 4: Line 4:
   * [[ioanaa.alexandru98@gmail.com|Ioana Alexandru]]   * [[ioanaa.alexandru98@gmail.com|Ioana Alexandru]]
   * [[oana.balan@cs.pub.ro|Oana Bălan]]   * [[oana.balan@cs.pub.ro|Oana Bălan]]
- 
- 
-char 
 ====== Informații ====== ====== Informații ======
-  * Data publicare: ​**TODO** +  * Data publicare: ​17 Noiembrie 2018 
-  * Deadline Soft: **TODO** +  * Deadline Soft: 11 Decembrie 2018 (23:55) 
-  * Deadline Hard: **TODO**+  * Deadline Hard: 16 Decembrie 2018 (23:55) 
 +  <​note>​Update 10 Decembrie 8:55 - Deadline soft extins cu o zi.</​note>​
  
-<​hidden>​ 
 ====== Obiective ====== ====== Obiective ======
  
Line 54: 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 109: 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 129: 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 169: 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 209: 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 274: 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 410: 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|TODO}}. +Găsiți checker-ul {{:​programare:​teme_2018:​tema2_cb.zip|aici}}.
  
 +<note warning>
 +**Atenție!** Checker-ul verifică atât fișierul obținut, cât și ''​stdout''​. Nu trebuie să afișați nimic la ''​stdout'',​ în afară de cele 3 mesaje de eroare precizate în secțiunea [[https://​ocw.cs.pub.ro/​courses/​programare/​teme_2018/​tema2_2018_cbd#​tratarea-cazurilor-speciale|Tratarea cazurilor speciale]].
 +</​note>​
  
 Formatul arhivei va fi următorul: Formatul arhivei va fi următorul:
Line 420: Line 422:
  - **clean**: șterge fișierele obiect/​executabile create.  - **clean**: șterge fișierele obiect/​executabile create.
  - Un fișier [[https://​en.wikipedia.org/​wiki/​README|README]] în care vă descrieți rezolvarea temei.  - Un fișier [[https://​en.wikipedia.org/​wiki/​README|README]] în care vă descrieți rezolvarea temei.
-<note tip>Este necesară scrierea numelui ​si a grupei atât în fișierul README, cât și în toate fișierele sursă pe care le adăugați în arhiva temei.</​note>​+<note tip>Este necesară scrierea numelui ​și a grupei atât în fișierul README, cât și în toate fișierele sursă pe care le adăugați în arhiva temei.</​note>​
 ====== Observații ====== ====== Observații ======
   * Nu folosiți variabile globale.   * Nu folosiți variabile globale.
   * Fiți consistenți în ceea ce privește [[programare:​coding-style|Coding Style-ul]].   * Fiți consistenți în ceea ce privește [[programare:​coding-style|Coding Style-ul]].
   * Nu este nevoie să folosiți alocare dinamică.   * Nu este nevoie să folosiți alocare dinamică.
-  * 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ă).+  * 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 433: Line 435:
   * [-1.0]: numele variabilelor nu sunt sugestive   * [-1.0]: numele variabilelor nu sunt sugestive
   * [-1.0]: linii mai lungi de 80 de caractere   * [-1.0]: linii mai lungi de 80 de caractere
 +  * [-1.0]: cod nemodular, funcții prea lungi (inclusiv main)
   * [-5.0]: abordare ineficientă   * [-5.0]: abordare ineficientă
     * în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor;​ totuși, ne dorim ca abordarea să nu fie una ineficientă,​ de genul să nu folosiți instrucțiuni repetitive acolo unde clar era cazul, etc.     * în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor;​ totuși, ne dorim ca abordarea să nu fie una ineficientă,​ de genul să nu folosiți instrucțiuni repetitive acolo unde clar era cazul, etc.
Line 440: 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>​ 
programare/teme_2018/tema2_2018_cbd.1541882853.txt.gz · Last modified: 2018/11/10 22:47 by ioana.alexandru
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0