This shows you the differences between two versions of the page.
programare:laboratoare:lab13 [2017/12/15 17:15] darius.neatu |
programare:laboratoare:lab13 [2020/10/05 00:39] (current) darius.neatu [Parametrii liniei de comandă. Preprocesorul. Funcţii cu număr variabil de parametri.] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Parametrii liniei de comandă. Preprocesorul. Funcţii cu număr variabil de parametri. ===== | ===== Parametrii liniei de comandă. Preprocesorul. Funcţii cu număr variabil de parametri. ===== | ||
- | **Responsabil:** | + | **Resposabili:****Responsabili:** |
- | * [[neatudarius@gmail.com|Darius Neațu (2016, 2017)]] | + | * [[ion_dorinel.filip@cti.pub.ro|Dorinel Filip (CA 2016-2020)]] |
+ | * [[neatudarius@gmail.com|Darius Neațu (CA 2016-2020)]] | ||
* [[mihaela.vasile@gmail.com|Mihaela Vasile (2015)]] | * [[mihaela.vasile@gmail.com|Mihaela Vasile (2015)]] | ||
+ | |||
+ | **Ultima modificare:** **09.12.2018** | ||
==== Obiective ==== | ==== Obiective ==== | ||
Line 1051: | Line 1054: | ||
Primul exercitiu presupune modificarea/adaugarea de instructiuni unui cod existent pentru a realiza anumite lucruri. In momentul actual programul populeaza vectorul cu valorile parametrilor primiti de functie (atat timp cat valoarea parametrului este > 0). Daca nu s-a populat tot vectorul, se adauga 0 pe pozitiile ramase goale. | Primul exercitiu presupune modificarea/adaugarea de instructiuni unui cod existent pentru a realiza anumite lucruri. In momentul actual programul populeaza vectorul cu valorile parametrilor primiti de functie (atat timp cat valoarea parametrului este > 0). Daca nu s-a populat tot vectorul, se adauga 0 pe pozitiile ramase goale. | ||
+ | <spoiler ex1.c> | ||
<code c ex1.c> | <code c ex1.c> | ||
Line 1093: | Line 1097: | ||
} | } | ||
</code> | </code> | ||
+ | </spoiler> | ||
Cerinte: | Cerinte: | ||
* Sa se modifice functia astfel incat sa se poata popula si un vector cu elemente de tip char. Functia va fi declarata astfel: | * Sa se modifice functia astfel incat sa se poata popula si un vector cu elemente de tip char. Functia va fi declarata astfel: | ||
* **void insert_elemenets(void *v, int n, char type, …)** - unde type va specifica tipul (‘d’ pentru int si ‘c’ pentru char). | * **void insert_elemenets(void *v, int n, char type, …)** - unde type va specifica tipul (‘d’ pentru int si ‘c’ pentru char). | ||
- | * Daca nu se umple tot vectoru cu valori, vor trebui puse niste valori default (cum este si in codul deja existent): pentru int va ramane valoarea 0, iar pentru char va fi ‘a’. | + | * Daca nu se umple tot vectorul cu valori, vor trebui puse niste valori default (cum este si in codul deja existent): pentru int va ramane valoarea 0, iar pentru char va fi ‘a’. |
* In functie de simbolul NUMBERS, programul va popula fie un vector de numere, fie un vector de caractere si il va afisa (se pot lasa valori specifice trimise la functia de populare) | * In functie de simbolul NUMBERS, programul va popula fie un vector de numere, fie un vector de caractere si il va afisa (se pot lasa valori specifice trimise la functia de populare) | ||
* Simbolul nu trebuie definit in cadrul fisierului sursa | * Simbolul nu trebuie definit in cadrul fisierului sursa | ||
Line 1106: | Line 1110: | ||
</hidden> | </hidden> | ||
==== Exerciţii de Laborator ==== | ==== Exerciţii de Laborator ==== | ||
- | - [1p] Completati formularul de **FEEDBACK** pentru [[ http://cs.curs.pub.ro/2016/course/view.php?id=16 | Programarea calculatoarelor (CA)]]. | + | Exercițiile următoare fac referire la anumite exemple (ex. **Exemplu1**). Aceste exemple se găsesc în laborator (CTRL + F pentru **Exemplu1**). |
- | - [1p] Să se realizeze un program care să afișeze toți parametrii liniei de comandă primiți. Hint:[[http://ocw.cs.pub.ro/courses/programare/laboratoare/lab12#exemplu_1 | Exemplu 1]]. | + | |
+ | - [1p] Completati formularul de **FEEDBACK** pentru [[https://acs.curs.pub.ro/2018/course/view.php?id=127 | Programarea calculatoarelor (CA)]]. Vă rugăm să îl completați cu atenție și răbdare. Apreciem orice feedback **NEGATIV CONSTRUCTIV **. Vă rugăm nu spuneți ** DOAR ** lucruri precum "tema X a fost grea", "nu am reușit să fac tot la parțial", "Gigel apare de prea multe ori prin laboratoare". Încercați să argumentați de ce credeți că s-a ajuns în acea situație și (eventual) cum credeți voi că am putea remedia asta pentru anul viitor. Mulțumim! | ||
+ | - [1p] Să se realizeze un program care să afișeze toți parametrii liniei de comandă primiți. Hint: ** Exemplu1**. | ||
- [2p] Scrieti un program C care primeste argumente in linia de comanda. Acesta trebuie sa respecte urmatoarele reguli. | - [2p] Scrieti un program C care primeste argumente in linia de comanda. Acesta trebuie sa respecte urmatoarele reguli. | ||
* Numele executabilului va fi ''gigel''. | * Numele executabilului va fi ''gigel''. | ||
Line 1113: | Line 1119: | ||
* Lista de argumente reprezinta un sir de numere naturale (''unsigned int''). Se cere sortarea listei folosind functia ''[[http://www.cplusplus.com/reference/cstdlib/qsort/?kw=qsort | qsort ]]''. | * Lista de argumente reprezinta un sir de numere naturale (''unsigned int''). Se cere sortarea listei folosind functia ''[[http://www.cplusplus.com/reference/cstdlib/qsort/?kw=qsort | qsort ]]''. | ||
* Daca lista de argumente contine stringuri care nu reprezinta numere intregi fara semn, se va afisa la stderr mesajul ''Gigele, da-mi numere naturale!''. In acest caz, programul va iesi cu valoarea ''[[http://www.cplusplus.com/reference/climits/ | INT_MIN]]''. | * Daca lista de argumente contine stringuri care nu reprezinta numere intregi fara semn, se va afisa la stderr mesajul ''Gigele, da-mi numere naturale!''. In acest caz, programul va iesi cu valoarea ''[[http://www.cplusplus.com/reference/climits/ | INT_MIN]]''. | ||
- | - [2p] Realizați un macro SWAP(x, y). Hint: Puteti folosi ''sizeof'' pentru a determina cata memorie este necesara pentru variabila de interschimbare. De asemenea, puteti consulta si [[ http://ocw.cs.pub.ro/courses/programare/laboratoare/lab12#exemplu_5_studiu_de_caz | Exemplu 5]]. | + | - [2p] Realizați un macro SWAP(x, y). Hint: Puteti folosi ''sizeof'' pentru a determina cata memorie este necesara pentru variabila de interschimbare. De asemenea, puteti consulta si **Exemplu 5**. |
- | - [4p] Realizați implementarea funcției cu ''număr variabil de parametri'' numită ''gcd'', care să permită aflarea celui mai mare divizor comun (''[[https://en.wikipedia.org/wiki/Greatest_common_divisor | gcd]]'') al parametrilor dați (''cel puțin'' două elemente care sunt numere naturale). Puteti presupune ca lista se termina cu un numar negativ. Hint: [[http://ocw.cs.pub.ro/courses/programare/laboratoare/lab12#exemplu_8 | Exemplu 8]]. | + | - [4p] Realizați implementarea funcției cu ''număr variabil de parametri'' numită ''gcd'', care să permită aflarea celui mai mare divizor comun (''[[https://en.wikipedia.org/wiki/Greatest_common_divisor | gcd]]'') al parametrilor dați (''cel puțin'' două elemente care sunt numere naturale). Puteti presupune ca lista se termina cu un numar negativ. Hint: ** Exemplu8**. |
Line 1170: | Line 1176: | ||
</hidden> | </hidden> | ||
+ | [[https://docs.google.com/document/d/1lwQBmJ4YuaBmpUOb5uUIs27TwLvWu-6jTL3aQ9TAwIA/edit?usp=sharing|Probleme laborator 14:00 - 16:00]] |