This shows you the differences between two versions of the page.
programare-cc:laboratoare:06 [2020/11/10 21:15] bogdan.nutu |
programare-cc:laboratoare:06 [2020/11/22 16:26] (current) bogdan.nutu |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Laboratorul 06 - Funcții cu vectori ===== | ===== Laboratorul 06 - Funcții cu vectori ===== | ||
- | **În acest laborator veţi învăţa să:** | + | ==== Problema 1 ==== |
- | + | ||
- | * Definiţi funcţii care primesc ca argumente vectori. | + | |
- | + | ||
- | ==== Probleme ==== | + | |
- | + | ||
- | === Problema 1 === | + | |
---- | ---- | ||
Line 35: | 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 70: | 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 97: | 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 ==== |
---- | ---- | ||
Funcţie pentru compararea a doi vectori de caractere (doua siruri de caractere), echivalentă ca rezultat cu funcţia strcmp. Funcţia primeşte doi vectori de caractere (siruri) şi are un rezultat întreg (negativ - daca primul şir este mai mic, zero - dacă sunt egale sau pozitiv - dacă primul şir este mai mare). Program care verifică funcţia, pentru şiruri citite de la tastatură în doi vectori. | Funcţie pentru compararea a doi vectori de caractere (doua siruri de caractere), echivalentă ca rezultat cu funcţia strcmp. Funcţia primeşte doi vectori de caractere (siruri) şi are un rezultat întreg (negativ - daca primul şir este mai mic, zero - dacă sunt egale sau pozitiv - dacă primul şir este mai mare). Program care verifică funcţia, pentru şiruri citite de la tastatură în doi vectori. | ||
- | <note tip>Hint: Pentru a citi un vector de caractere, de exemplu char sir [100] folosiţi scanf("%s", sir). Atentie! Orice sir de caractere se termina cu valoarea 0.</note> | + | <note tip>Hint: Pentru a citi un vector de caractere, de exemplu char sir [100] folosiţi scanf("%s", sir).</note> |
+ | |||
+ | <note important>Atentie! Orice sir de caractere se termina cu valoarea 0.</note> | ||
== Date de intrare == | == Date de intrare == | ||
Line 113: | Line 109: | ||
In fisierul de iesire se va afisa una din urmatoarele valori : | In fisierul de iesire se va afisa una din urmatoarele valori : | ||
- | 1 - primul sir e mai mare | + | * 1 - primul sir e mai mare |
- | 0 - cele doua siruri sunt egale | + | * 0 - cele doua siruri sunt egale |
- | -1 - al doilea sir e mai mare | + | * -1 - al doilea sir e mai mare |
== Exemplu == | == Exemplu == | ||
Line 124: | Line 120: | ||
| abcd \\ abcd | 0 | | | abcd \\ abcd | 0 | | ||
| bcde \\ zdg | -1 | | | bcde \\ zdg | -1 | | ||
+ | |||
+ | ==== Problema 5 ==== | ||
+ | ---- | ||
+ | |||
+ | Să se scrie o funcţie care primeşte ca parametru un vector **v** şi o valoare **x** cu prototipul: | ||
+ | |||
+ | <code c> | ||
+ | void transform(int v[], int n, int x) | ||
+ | </code> | ||
+ | |||
+ | Funcţia modifică vectorul **v** astfel încât elementele mai mici ca **x** se află la începutul vectorului şi elementele mai mari sau egale cu **x** la sfârşitul lui. | ||
+ | |||
+ | == Date de intrare == | ||
+ | ---- | ||
+ | |||
+ | Pe prima linie se gasesc 2 numere **n** si **x**. Pe a doua linie se regasesc **n** numere reprezentand elementele vectorului **v**. | ||
+ | |||
+ | == Date de ieşire == | ||
+ | ---- | ||
+ | |||
+ | Pe o linie se vor regasi elementele aranjate conform enuntului. | ||
+ | |||
+ | |||
+ | == Exemplu == | ||
+ | ---- | ||
+ | |||
+ | ^ Intrare ^ Ieşire ^ | ||
+ | | 10 5 \\ 7 2 8 1 3 9 7 5 6 1 | 1 2 3 1 8 9 7 5 6 7 | | ||
+ | | 6 6 \\ 7 2 5 8 2 1 | 1 2 5 2 8 7 | | ||
+ | |||
+ | ==== Problema 6 ==== | ||
+ | ---- | ||
+ | |||
+ | Să se scrie un program care citeşte o matrice **A(m x n)** şi copiază elementele matricei în spirală într-un vector **V**. Veţi folosi urmatoarele funcţii: | ||
+ | |||
+ | <code c> | ||
+ | void spirala (int A[][100], int m, int n, int V[]); // copiază elementele lui A în V, în spirală | ||
+ | </code> | ||
+ | |||
+ | <code c> | ||
+ | void afisare (int V[], int dim); // afişează un vector V, de dimensiune dim | ||
+ | </code> | ||
+ | |||
+ | == Date de intrare == | ||
+ | ---- | ||
+ | |||
+ | Pe prima linie se vor regasi 2 numere, **n** si **m** reprezentand numarul de linii si de coloane. Pe urmatoarele n linii se vor regasi m numere reprezentand elementele matricei. | ||
+ | |||
+ | == Date de ieşire == | ||
+ | ---- | ||
+ | |||
+ | Un sir de **n x m** numere reprezentand modul in care sunt parcurse elementele din matrice. | ||
+ | |||
+ | == Exemplu == | ||
+ | ---- | ||
+ | |||
+ | ^ Intrare ^ Ieşire ^ | ||
+ | | 3 4 \\ 1 2 3 4 \\ 5 6 7 8 \\ 9 10 11 12 | 1 5 9 10 11 12 8 4 3 2 6 7 | | ||
+ | |||