Differences

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

Link to this comparison view

programare-cc:laboratoare:05 [2020/10/26 18:37]
andreea.nica1602
programare-cc:laboratoare:05 [2023/11/07 10:57] (current)
mihai.nan [Problema 5]
Line 1: Line 1:
 ===== Laboratorul 05 - Definire și utilizare funcții ===== ===== Laboratorul 05 - Definire și utilizare funcții =====
  
-**În acest laborator veţi învăţa să:** +==== Problema 1 (rezolvată) ​====
- +
-  * Definiţi funcţii +
-  * Folosiţi funcţii definite de utilizator +
- +
-==== Probleme ==== +
- +
-=== Problema 1 (rezolvată) ===+
 ---- ----
  
Line 27: Line 20:
 ---- ----
  
-Numarul de cifre ale numarului citit+Numarul de cifre al numarului citit
  
 == Restricţii == == Restricţii ==
Line 54: Line 47:
 { {
  if (n == 0)  if (n == 0)
- return 1;+     return 1; 
 +     
  int nr = 0; /* declar un contor in care sa numar cifrele */  int nr = 0; /* declar un contor in care sa numar cifrele */
 +
  while (n) /* cat timp mai pot obtine o cifra */  while (n) /* cat timp mai pot obtine o cifra */
  {  {
- n = n/10; /* o trunchiez pe ultima */ +     n = n/10; /* o trunchiez pe ultima */ 
- nr++; /* incrementez contorul */+     ​nr++; /* incrementez contorul */
  }  }
 +
  ​return nr; /* functia intoarce numarul de cifre */  ​return nr; /* functia intoarce numarul de cifre */
 } }
Line 76: Line 72:
 Programul C care implementează algoritmul descris mai sus va fi: Programul C care implementează algoritmul descris mai sus va fi:
  
-=== Problema 2 ===+==== Problema 2 ====
 ---- ----
  
Line 111: Line 107:
 | 666013 8| NU|  | 666013 8| NU| 
  
-=== Problema 3 ===+==== Problema 3 ====
  
 ---- ----
Line 117: Line 113:
 //**Ipoteza lui Goldbach**//:​ Orice număr par se poate exprima printr-o sumă de două numere //**Ipoteza lui Goldbach**//:​ Orice număr par se poate exprima printr-o sumă de două numere
 prime, nu neapărat distincte. prime, nu neapărat distincte.
-**A**. Scrieţi o funcţie care să verifice dacă un număr întreg este prim sau nu. Funcţia va returna+ 
 +==Cerința ​A== 
 + 
 +Scrieţi o funcţie care să verifice dacă un număr întreg este prim sau nu. Funcţia va returna
 valoarea 1 dacă **N** este număr prim şi 0 în caz contrar. Si **trebuie** sa aiba urmatorul antet: valoarea 1 dacă **N** este număr prim şi 0 în caz contrar. Si **trebuie** sa aiba urmatorul antet:
  
Line 124: Line 123:
 </​code>​ </​code>​
  
-**B**. Scrieţi un program care verifică //**ipoteza lui Goldbach**//​ prin afişarea tuturor+==Cerința ​B==  
 + 
 +Scrieţi un program care verifică //**ipoteza lui Goldbach**//​ prin afişarea tuturor
 descompunerilor distincte(de ex. nu se vor afişa şi "​5+7"​ şi "​7+5"​) posibile în sumă de descompunerilor distincte(de ex. nu se vor afişa şi "​5+7"​ şi "​7+5"​) posibile în sumă de
 numere prime ale unui număr citit de la tastatură. Programul va apela funcţia prim. numere prime ale unui număr citit de la tastatură. Programul va apela funcţia prim.
Line 156: Line 157:
 | 12 | 1 + 11 \\ 5 + 7 | | 12 | 1 + 11 \\ 5 + 7 |
  
-=== Problema 4 ===+ 
 +==== Problema 4 ====
 ---- ----
  
Line 194: Line 196:
 | 5 12 \\ 3 14 | 35 84 \\ 18 84 | | 5 12 \\ 3 14 | 35 84 \\ 18 84 |
  
-=== Problema 5 ===+==== Problema 5 ====
 ---- ----
  
Line 200: Line 202:
 termen dat: termen dat:
  
-//e^x = 1 + x/1! + (x^2)/2! + (x^3)/3! + ... + (x^n)/n!//+$e^x = 1 + \frac{x}{1!\frac{x^2}{2!\frac{x^3}{3!+ ... + \frac{x^n}{n!}$
  
 Se vor defini şi utiliza următoarele funcţii: Se vor defini şi utiliza următoarele funcţii:
Line 227: Line 229:
 | 2.5 10   | 12.1817 | | 2.5 10   | 12.1817 |
  
-=== Problema 6 ===+==== Problema 6 ====
 ---- ----
  
Line 258: Line 260:
 | 4 \\ 0 0 \\ 0 1 \\ 1 0 \\ 1 1 | 0 0 \\ 1 1 \\ 1.414214 | | 4 \\ 0 0 \\ 0 1 \\ 1 0 \\ 1 1 | 0 0 \\ 1 1 \\ 1.414214 |
  
-=== Problema 7 ===+==== Problema 7 ====
 ---- ----
  
Line 299: Line 301:
 | 2534562| 2234556 | | 2534562| 2234556 |
  
-=== Problema 8 ===+==== Problema 8 ====
 ---- ----
  
Line 307: Line 309:
  
 <code c> <code c>
-int arie_intersectie(int x11, int y11, int x12, int y12, int x21, inty21, int x22, int y22)+int arie_intersectie(int x11, int y11, int x12, int y12, int x21, int y21, int x22, int y22)
 </​code>​ </​code>​
  
Line 332: Line 334:
  
 ^ Intrare ​     ^ Ieşire ​      ^ ^ Intrare ​     ^ Ieşire ​      ^
-| 1 10 5 5 \\ 5 0 -1 -4 8 3 -1 2 -5 -8 4| 5 0 -1 -2 8 3 -1 2| +| 1 10 5 5 \\ 2 4 4| 4| 
- +| 1 3 3 1  \\ 2 4 4 4 | 0 |
-== Explicatii == +
----- +
- +
-Secventa 2 8 3 -1 2 are de asemenea suma maximă, dar vom alege ca răspuns secvenţa care începe cel mai din stânga. +
- +
- +
-=== Problema 9 === +
----- +
- +
-Scrieţi un program care citeşte un şir de numere şi verifică dacă acest şir este ordonat crescator sau ordonat descrescator sau nu este ordonat sau este un şir constant. Se afişează un mesaj: //"​crescator"//​ , //"​descrescator"//,​ //"​neordonat"//,​ //"​constant"//​ . +
- +
-== Date de intrare == +
----- +
- +
-Pe prima linie se va afla un număr natural, N, ce reprezintă dimensiunea vectorului. +
-Pe a doua linie se vor afla N numere întregi ce reprezintă elementele matricei. +
- +
- +
-== Date de ieşire == +
----- +
- +
-Se va afişa mesajul specific. +
- +
-== Restrictii == +
----- +
- +
-  * 0 < N ≤ 100 +
- +
-== Exemplu == +
----- +
- +
-^ Intrare ​     ^ Ieşire ​      ^ +
-| 5 \\ 2 3 5 7 11| crescator| +
-| 4 \\ 11 2 2 5 | neordonat+
-|3 \\ 3 3 3 | constant | +
- +
-=== Problema 10 === +
----- +
- +
-Scrieţi un program care citeşte n numere reale //X// şi //m + 1// numere întregi //A// şi afişează numărul de valori din //X// situat în fiecare din cele //m// intervale deschise delimitate de valorile din //A//. +
- +
-== Date de intrare == +
----- +
- +
-Pe prima linie se va afla numărul natural //n//. +
-Pe a doua linie vor fi //n// numere reale. +
-Pe a patra linie se va afla numărul natural //m//. +
-Pe a cincea linie vor fi //m// numere întregi. +
- +
-== Date de ieşire == +
----- +
- +
-Se va afişa numărul de valori din //X// situat în fiecare din cele //m - 1// intervale deschise delimitate de valorile din //A// sau mesajul //Error// dacă valorile din şirul //A// nu sunt sorte în ordine scrict crescătoare. +
- +
-== Restricţii == +
----- +
- +
-  * Se verifică dacă valorile A sunt introduse în ordine crescatoare şi în caz contrar programul se opreşte +
-  * 0 ≤ n ≤ 100 +
-  * 2 ≤ m ≤ 1000 +
- +
-== Exemplu == +
----- +
- +
-^ Intrare ​     ^ Ieşire ​      ^ +
-| 7 \\ 5.2 4.1 1.1 5 5.9 6.7 3.14 \\  \\ 4 \\ 2 5 7| 0 2 3| +
-| 7 \\ 5.2 4.1.1 5 5.9 6.7 3.14 \\  \\ 4 \\ 2 5 3 7| Error| +
- +
-== Explicaţie == +
----- +
- +
-Nu sunt numere incluse în intervalul (2, 3).  +
- +
-În (3, 5) sunt incluse 3.14, 4.1.  +
- +
-În (5, 7) sunt incluse 5.2, 5.9, 6.7. +
- +
-=== Problema 11 === +
----- +
- +
-Program pentru calculul valorii unui polinom cu coeficienţi daţi, prin mai multe metode cu următoarea numerotare a coeficienţilor:​ +
- +
-P(x) = c0 * xn + c1 * xn - 1 + ... + cn - 1 * x + cn. +
- +
-  * Ca suma de termeni calculaţi separat (cu funcţia pow, din math.h) +
-  * Printr-o relaţie de recurenţă de forma: P(x, k) = P(x, k - 1) * x + c[k] şi P(x, 0) = c[0]] +
- +
-De exemplu: pentru n = 3 şi c = { 1, 2, 3, }, corespunzătoare polinomului P(x) = x3 + 2 * x2 + 3 * x + 4, se poate scrie P(x) = x * (x * (x * 1 + 2) + 3) + 4 +
- +
-== Date de intrare == +
----- +
- +
-Pe prima linie se vor afla două numere: un număr real //x// şi un număr natural **n** ce reprezintă gradul polinomului. +
-Pe a doua linie, separate printr-un spaţiu, **n+1** numere întregi ce reprezintă coeficienţii polinomului //( c[0], c[1], ..., c[n] )//. +
- +
-== Date de ieşire == +
----- +
- +
-Se va afişa valoarea polinomului cu o **precizie de 2 zecimale**. +
- +
-== Restrictii si precizari == +
----- +
- +
-  * 0 < n ≤ 50 +
-  * Pentru reprezentarea numerelor reale se va folosi tipul **double** +
- +
-== Exemplu == +
----- +
- +
-^ Intrare ​     ^ Ieşire ​      ^ +
-| 0.5 3 \\ 1 2 3 4 6.12 | +
- +
- +
-=== Problema 12 === +
----- +
- +
-Fie un vector de numere întregi (iniţial toate având valoarea 0) de lungime N. Se citesc de la tastatură un set de M tripleţi de forma B E V fiecare având urmatoarea semnificaţie : toate elementele din vector ale căror poziţii (indexate de la 0) sunt cuprinse între B şi E inclusiv vor fi modificate prin adunare cu V. +
- +
-Afişati vectorul obţinut în urma aplicării celor M operaţii. +
- +
-== Date de intrare == +
----- +
- +
-Pe prima linie se vor afla două numere naturale: N, ce reprezintă lungimea vectorului şi M, ce reprezintă numărul de tripleţi ce vor fi citiţi de la tastatură. +
-Pe următoarele M linii, câte trei numere naturale, B, E şi V, separate prin câte un spaţiu. +
- +
- +
-== Date de ieşire == +
----- +
- +
-Se vor afişa pe o linie elementele vectorului obţinut în urma aplicării celor M operaţii, separate prin câte un spaţiu. +
- +
-== Restrictii si Precizari == +
----- +
- +
-  * 0 < B(i) ≤ E(i) ≤ N ≤ 1.000.000 +
-  * 0 < M ≤ 100.000 +
-  * -10.000 ≤ V(i) ≤ 10.000 +
- +
-== Exemplu == +
----- +
- +
-^ Intrare ​     ^ Ieşire ​      ^ +
-| 5 3 \\ 1 2 3 \\ 2 4 -1 \\ 0 1 2 | 2 5 2 -1 -1 | +
- +
-== Explicaţie == +
----- +
- +
-Iniţial: 0 0 0 0 0 +
-  +
-După (1 2 3): 0 3 3 0 0  +
- +
-După (2 4 -1): 0 3 2 -1 -1 +
-  +
-După (0 1 2): 2 5 2 -1 -1 +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
  
  
programare-cc/laboratoare/05.1603730229.txt.gz · Last modified: 2020/10/26 18:37 by andreea.nica1602
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