Differences

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

Link to this comparison view

programare-cc:laboratoare:06 [2020/11/10 21:03]
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 69: Line 63:
 | 2 2 2.82 | 45.170 45.170 89.659 | | 2 2 2.82 | 45.170 45.170 89.659 |
 | 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 ====
 +----
 +
 +Să se scrie o funcţie pentru extragerea elementelor dintr-un vector a ce se regasesc si intr-un al doilea vector b. Cei doi vectori sunt neordonati. Rezultatul va fi pus într-un al treilea vector, c. Funcţia are 5 argumente: adresa (numele) şi dimensiunea vectorilor de intrare ( a si b ), adresa vectorului rezultat ( c ).
 +
 +== Date de intrare ==
 +----
 +
 +Pe prima linie se gaseste dimensiunea primului vector urmat pe a doua linie de elementele lui.
 +Pe cea de-a treia linie se va regasi dimensiunea celui de-al doilea vector, in timp ce pe al patrulea rand se regasesc elementele vectorului.
 +
 +== Date de ieşire ==
 +----
 +
 +2 linii dupa cum urmeaza: Pe prima linie dimensiunea vectorului cautat, iar pe al doilea rand elementele din vectorul cautat conform enuntului.
 +
 +== Restrictii si Precizari ==
 +----
 +
 +  * Dimensiunile vectorilor sunt de maxim 1000 de elemente
 +
 +== Exemplu ==
 +
 +----
 +^ Intrare ​     ^ Ieşire ​      ^
 +| 6 \\ 4 1 5 1 7 10 \\ 4 \\ 1 10 3 4 | 4 \\ 4 1 1 10 |
 +
 +==== 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.
 +
 +<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 ==
 +----
 +
 +Fisierul de intrare are 2 linii, pe fiecare dintre linii se va gasi un sir de caractere cu specificatia din enunt.
 +
 +== Date de ieşire ==
 +----
 +
 +In fisierul de iesire se va afisa una din urmatoarele valori :
 +  * 1 - primul sir e mai mare
 +  * 0 - cele doua siruri sunt egale
 +  * -1 - al doilea sir e mai mare
 +
 +== Exemplu ==
 +----
 +
 +^ Intrare ​     ^ Ieşire ​      ^
 +| abcd \\ aadf | 1 |
 +| abcd \\ abcd | 0 |
 +| 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 |
 +
  
programare-cc/laboratoare/06.1605034981.txt.gz · Last modified: 2020/11/10 21:03 by bogdan.nutu
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