Differences

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

Link to this comparison view

programare-cc:laboratoare:03 [2023/10/25 09:24]
andrei.simescu [Problema 7]
programare-cc:laboratoare:03 [2025/10/19 21:09] (current)
carmen.odubasteanu [Problema 2]
Line 7: Line 7:
  
 **Sintaxa instrucţiunilor limbajului C** **Sintaxa instrucţiunilor limbajului C**
 +
 +Observatie: peste tot pe unde apare //​instructiune//,​ aceasta poate fi inlocuita cu mai multe instructiuni folosind instructiunea bloc:
 +<code c>
 +{
 +   ​instructiune1.1;​
 +   ​instructiune1.2;​
 +   ...
 +}
 +</code c>
  
 Instrucţiunile condiţionale Instrucţiunile condiţionale
Line 12: Line 21:
 Instrucţiunea **if**: Instrucţiunea **if**:
  
 +<code c>
 +if (expresie) ​
 +   ​instructiune1;​
 +else 
 +   ​instructiune2;​
 +</​code>​
 +
 +sau varianta cu instructiune compusa:
 <code c> <code c>
 if (expresie) { if (expresie) {
Line 64: Line 81:
  
 <code c> <code c>
-while (expresie) ​{+while (expresie) ​
    ​instructiune;​    ​instructiune;​
-} 
 </​code>​ </​code>​
  
Line 97: Line 113:
 neformatatprint?​ neformatatprint?​
 <code c> <code c>
-for (variabila = expresie1; condiţie-terminare;​ expresie3) ​{+for (variabila = expresie1; condiţie-terminare;​ expresie3) ​
    ​instructiune;​    ​instructiune;​
-} 
 </​code>​ </​code>​
  
Line 105: Line 120:
 <code c> <code c>
 int n; int n;
-for (n = 0; n < 10; n++) {+for (n = 0; n < 10; n++)
    ​instructiune;​    ​instructiune;​
-} 
 </​code>​ </​code>​
  
Line 129: Line 143:
 ===== Problema 2 ===== ===== Problema 2 =====
  
-Scrieţi un program pentru afişarea primelor n numere naturale nenule, câte m pe o linie. După fiecare 24 de linii complete afişate, programul va trebui să afişeze un rând liber. Pentru a afişa un rând liber, folosiţi:+Scrieţi un program pentru afişarea primelor n numere naturale nenule, câte m pe o linie. După fiecare 24 de linii complete afişate, programul va trebui să afişeze un rând liber si sa opreasca afisarea pana la apasarea unei taste. Pentru a afişa un rând liber, folosiţi:
 <code c> <code c>
 printf("​\n"​);​ printf("​\n"​);​
Line 136: Line 150:
 Pentru a opri programul, folosiţi secvenţa: Pentru a opri programul, folosiţi secvenţa:
 <code c> <code c>
-fflush(stdin);​+fflush(stdin); ​// posibil sa nu fie neaparat nevoie ​
 getchar(); getchar();
 </​code>​ </​code>​
Line 152: Line 166:
   * 1 ≤ n ≤ 30000   * 1 ≤ n ≤ 30000
   * 1 ≤ m ≤ 13   * 1 ≤ m ≤ 13
-  * După ultimul număr afişat urmează obligatoriu caracterul **'​\n'​**,​ indiferent dacă el este sau nu ultimul de pe linia sa. 
-  * **Atenţie!** Pentru a folosi monitorul de evaluare stergeţi din program liniile ce conţin apelurile funcţiilor fflush şi getch. 
  
 **Exemplu** **Exemplu**
Line 239: Line 251:
  
 Să se scrie un program pentru calculul numărului combinărilor de n luate câte m. Calculul se va efectua prin două metode: Să se scrie un program pentru calculul numărului combinărilor de n luate câte m. Calculul se va efectua prin două metode:
-  * Folosind relaţia de recurenţă:​ C(n,​k)=C(n,​k-1)*(n-k+1)/​k pentru k=1,m şi C(n,0)=1+  * Folosind relaţia de recurenţă ​de calcul a unui termen din cel precedent (atentie! NU functie recursiva!!): C(n,​k)=C(n,​k-1)*(n-k+1)/​k pentru k=1,m şi C(n,0)=1
   * Folosind definiţia combinărilor:​ C(n,​m)=n!/​(m!*(n-m)!)   * Folosind definiţia combinărilor:​ C(n,​m)=n!/​(m!*(n-m)!)
  
Line 266: Line 278:
 Scrieţi un program pentru calculul valorii funcţiei exponenţiale într-un punct x dat, prin dezvoltare după formula: Scrieţi un program pentru calculul valorii funcţiei exponenţiale într-un punct x dat, prin dezvoltare după formula:
  
-  * ex= 1 + x/1! + x2/2! + x3/3! + ... xn/n! + ...+  * e^x= 1 + x/1! + x^2/2! + x^3/3! + … x^n/n! + 
 Calculaţi această valoare în două variante: Calculaţi această valoare în două variante:
   * Ca sumă a unui număr dat de termeni   * Ca sumă a unui număr dat de termeni
   * Ca sumă a termenilor mai mari decât un epsilon dat.   * Ca sumă a termenilor mai mari decât un epsilon dat.
  
-Se va folosi relaţia de recurenţă:​ +Se va folosi relaţia de recurenţă ​de calcul a unui termen din cel precedent (atentie! NU functie recursiva!!)
-t[k= t[k-1* x / k +t(k= t(k-1* x / k 
-t0 = 1, unde t[keste termenul k din sumă.+t(0) = 1, unde t(keste termenul k din sumă.
  
 Comparaţi rezultatul obţinut cu rezultatul funcţiei exp(x) şi rezultatul funcţiei pow(2.718, x). Comparaţi rezultatul obţinut cu rezultatul funcţiei exp(x) şi rezultatul funcţiei pow(2.718, x).
Line 302: Line 314:
 Scrieţi un program pentru calculul rădăcinii pătrate a unui număr (**x**), folosind relaţia de recurenţă între două aproximări succesive ( **r1 şi r2**) ale rădăcinii pătrate a lui **x**: Scrieţi un program pentru calculul rădăcinii pătrate a unui număr (**x**), folosind relaţia de recurenţă între două aproximări succesive ( **r1 şi r2**) ale rădăcinii pătrate a lui **x**:
 r2 = (r1 + x/r1) / 2 r2 = (r1 + x/r1) / 2
 +
 +Atentie! NU se foloseste functie recursiva!
  
 Aproximaţia iniţială (**r1**) este **x/2**. Calculul continuă atât timp cât **r1** este diferit de **r2**. Aproximaţia iniţială (**r1**) este **x/2**. Calculul continuă atât timp cât **r1** este diferit de **r2**.
Line 332: Line 346:
 ===== Problema 9 ===== ===== Problema 9 =====
  
-Scrieţi un program care afişează toate numerele prime dintre primii n termeni ai şirului Fibonacci. El se construieşte după următoarele reguli:+Scrieţi un program care afişează toate numerele ​care sunt si numere ​primedintre primii n termeni ai şirului Fibonacci. El se construieşte după următoarele reguli:
  
 F(0)=0 F(0)=0
Line 346: Line 360:
 **Date de Ieşire** **Date de Ieşire**
 ---- ----
-Numerele prime dintre primii **n** termeni ai şirului Fibonacci, câte unul pe linie.+Numerele ​care sunt si prime dintre primii **n** termeni ai şirului Fibonacci, câte unul pe linie.
  
  
Line 358: Line 372:
 ---- ----
 ^ Intrare ​     ^ Ieşire ​      ^ ^ Intrare ​     ^ Ieşire ​      ^
-| 2 \\ 3 |+| 2 \\ 3 \\ 5 \\ 13|
  
 ===== Problema 10 ===== ===== Problema 10 =====
Line 370: Line 384:
 **Date de Ieşire** **Date de Ieşire**
 ---- ----
-Numărul cifrelor obţinute prin alipirea numerelor până la **n**, inclusiv.+Numărul cifrelor ​numarului ​obţinut prin alipirea numerelor până la **n**, inclusiv.
  
 **Restricţii şi Precizări** **Restricţii şi Precizări**
programare-cc/laboratoare/03.1698215090.txt.gz · Last modified: 2023/10/25 09:24 by andrei.simescu
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