This shows you the differences between two versions of the page.
|
programare-cc:laboratoare:03 [2025/10/18 11:44] carmen.odubasteanu [Problema 6] |
programare-cc:laboratoare:03 [2025/10/19 21:09] (current) carmen.odubasteanu [Problema 2] |
||
|---|---|---|---|
| Line 143: | 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 150: | 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 166: | 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. | ||
| **Exemplu** | **Exemplu** | ||
| Line 252: | 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ţă(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 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 279: | 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[k] este termenul k din sumă. | + | t(0) = 1, unde t(k) este 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 315: | 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 345: | 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 prime, dintre primii n termeni ai şirului Fibonacci. El se construieşte după următoarele reguli: |
| F(0)=0 | F(0)=0 | ||
| Line 359: | 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 371: | Line 372: | ||
| ---- | ---- | ||
| ^ Intrare ^ Ieşire ^ | ^ Intrare ^ Ieşire ^ | ||
| - | | 5 | 2 \\ 3 | | + | | 8 | 2 \\ 3 \\ 5 \\ 13| |
| ===== Problema 10 ===== | ===== Problema 10 ===== | ||
| Line 383: | 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** | ||