Differences

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

Link to this comparison view

programare-cc:laboratoare:06 [2020/11/10 20:56]
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 33: Line 27:
 ^ Intrare ​     ^ Ieşire ​      ^ ^ Intrare ​     ^ Ieşire ​      ^
 | 4 \\ 9 12 3 1   | 1 3 9 12 | | 4 \\ 9 12 3 1   | 1 3 9 12 |
-| 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 ==== 
 +---- 
 + 
 +Să se scrie o funcţie care calculează valorile unghiurilor unui triunghi, în funcţie de lungimile laturilor. 
 +Funcţia va fi scrisă în două variante: 
 +1. cu 2 argumente de tip vector: un vector cu datele de intrare (lungimile laturilor) şi unul cu rezultate (unghiurile). 
 +2. cu 6 argumente: 3 date (laturile) şi 3 rezultate (unghiurile). 
 +Se vor folosi 3 zecimale la afisare. 
 + 
 +<note tip>​Hint:​ Funcţiile trigonometrice sunt declarate în math.h. Pentru valoarea lui PI, folositi constanta M_PI (definita, de asemenea, in math.h).</​note>​ 
 + 
 +== Date de intrare == 
 +---- 
 + 
 +Se vor citi 3 numere reale **x**, **y**, **z** reprezentand laturile tringhiului. 
 + 
 +== Date de ieşire == 
 +---- 
 + 
 +Se vor afisa cele 3 unghiuri. 
 + 
 + 
 +== Restrictii == 
 +---- 
 + 
 +  * 0 < x, y, z < 360 
 + 
 +== Exemplu == 
 +---- 
 + 
 +^ Intrare ​     ^ Ieşire ​      ^ 
 +| 10.0 10.0 10.0 | 60.000 60.000 60.000 | 
 +| 2 2 2.82 | 45.170 45.170 89.659 | 
 +| 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.1605034584.txt.gz · Last modified: 2020/11/10 20:56 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