This shows you the differences between two versions of the page.
|
programare-cc:laboratoare:06 [2020/11/10 22:07] bogdan.nutu |
programare-cc:laboratoare:06 [2025/11/10 13:57] (current) carmen.odubasteanu [Laboratorul 06 - Funcții cu vectori] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 06 - Funcții cu vectori ===== | + | ===== Laboratorul 06 - Funcții si tablouri ===== |
| - | **În acest laborator veţi învăţa să:** | + | ==== Problema 1 ==== |
| - | + | ||
| - | * Definiţi funcţii care primesc ca argumente vectori. | + | |
| - | + | ||
| - | ==== Vectori ==== | + | |
| - | + | ||
| - | Atunci când declaraţi o variablilă, compilatorul va fi informat despre 2 lucruri: numele variabilei si tipul ei. De exemplu: **int n**. Astfel, compilatorul va rezerva o zonă de memorie pentru aceasta variabilă (4 octeţi pentru o arhitectură pe 32 biţi). | + | |
| - | + | ||
| - | Atunci când se face o atribuire (ex: **n = 7**), la zona de memorie rezervată variabilei **n** va fi scrisă noua valoare. | + | |
| - | + | ||
| - | ==== Probleme ==== | + | |
| - | + | ||
| - | === Problema rezolvata === | + | |
| - | ---- | + | |
| - | + | ||
| - | Rulaţi următorul program şi încercaţi să înţelegeţi de ce afişează respectivele valori. Este important să întrebaţi dacă nu înţelegeţi ceva. | + | |
| - | + | ||
| - | <code c> | + | |
| - | #include <stdio.h> | + | |
| - | + | ||
| - | int main() | + | |
| - | { | + | |
| - | int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; | + | |
| - | unsigned long int adr0, adr1, adr2; | + | |
| - | int *p1, *p2; | + | |
| - | + | ||
| - | printf("a = %p\na + 1 = %p\na + 3 = %p\n\n", a, a + 1, a + 3); | + | |
| - | + | ||
| - | printf("sizeof(a) = %d\n", sizeof(a)); | + | |
| - | printf("sizeof(a + 1) = %d\n", sizeof(a + 1)); | + | |
| - | printf("sizeof(a + 3) = %d\n\n", sizeof(a + 3)); | + | |
| - | + | ||
| - | adr0 = (unsigned long int) a; | + | |
| - | adr1 = (unsigned long int) (a + 1); | + | |
| - | adr2 = (unsigned long int) a + 1; | + | |
| - | + | ||
| - | printf("adr0 = %lu\nadr1 = %lu\nadr2 = %lu\n\n", adr0, adr1, adr2); | + | |
| - | + | ||
| - | p1 = a + 4; | + | |
| - | p2 = &(a[4]); | + | |
| - | + | ||
| - | printf("p1 = %p \t *p1 = %d\n", p1, *p1); | + | |
| - | printf("p2 = %p \t *p2 = %d\n", p2, *p2); | + | |
| - | printf("a + 4 = %p \t a[4] = %d\n", a + 4, a[4]); | + | |
| - | + | ||
| - | *p1 = *p1 + 1; | + | |
| - | printf("\na[4] = %d\n", a[4]); | + | |
| - | + | ||
| - | return 0; | + | |
| - | } | + | |
| - | </code> | + | |
| - | + | ||
| - | === Problema 1 === | + | |
| ---- | ---- | ||
| Line 81: | Line 29: | ||
| | 6 \\ 10 -2 5 17 3 8 | -2 3 5 8 10 17 | | | 6 \\ 10 -2 5 17 3 8 | -2 3 5 8 10 17 | | ||
| - | === Problema 2 === | + | ==== Problema 2 ==== |
| ---- | ---- | ||
| Line 116: | Line 64: | ||
| | 3.0 5.2 6.0 | 30.000 60.073 89.927 | | | 3.0 5.2 6.0 | 30.000 60.073 89.927 | | ||
| - | === Problema 3 === | + | ==== Problema 3 ==== |
| ---- | ---- | ||
| Line 143: | Line 91: | ||
| | 6 \\ 4 1 5 1 7 10 \\ 4 \\ 1 10 3 4 | 4 \\ 4 1 1 10 | | | 6 \\ 4 1 5 1 7 10 \\ 4 \\ 1 10 3 4 | 4 \\ 4 1 1 10 | | ||
| - | === Problema 4 === | + | ==== Problema 4 ==== |
| ---- | ---- | ||
| Line 173: | Line 121: | ||
| | bcde \\ zdg | -1 | | | bcde \\ zdg | -1 | | ||
| - | === Problema 5 === | + | ==== Problema 5 ==== |
| ---- | ---- | ||
| Line 202: | Line 150: | ||
| | 6 6 \\ 7 2 5 8 2 1 | 1 2 5 2 8 7 | | | 6 6 \\ 7 2 5 8 2 1 | 1 2 5 2 8 7 | | ||
| - | === Problema 6 === | + | ==== Problema 6 ==== |
| ---- | ---- | ||