Differences

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

Link to this comparison view

programare-cc:laboratoare:02 [2023/09/26 17:05]
mihai.nan
programare-cc:laboratoare:02 [2024/10/16 10:02] (current)
mihai.nan [Probleme propuse]
Line 192: Line 192:
 === Problema 1 === === Problema 1 ===
  
-Problema generării unor numere aleatoare poate fi considerată iniţial una complicată,​ dar limbajul C ne pune la dispoziţie biblioteca **stdlib**, cu ajutorul căreia lucrurile vor deveni foarte simple. Funcţiile şconstantele acestei biblioteci sunt declarate în header-ul **stdlib.h** pe care va trebui să-l includeţi la începutul programului pe care îl scrieţi. +Scriețun program ​care citește două numere naturale ​(de tip **int**) pe aceeași ​linie, separate prin câte un spațiu. Calculațsuma șprodusul pentru aceste numere șafișațrezultatele obținute.
- +
-Utilizând funcţia **rand()** veţi genera numere aleatoare cu valori cuprinse între **0** si **RAND_MAX**,​ unde **RAND_MAX** este o constanta definită în **stdlib.h**,​ având în general valoarea maximă a tipului ​**int**+
- +
-Valorile returnate de această funcţie sunt de fapt termenii unui şir de numere generat după o anumită formula ce foloseşte ca punct de plecare o valoare dată. Din cauza acestui aspect, pentru aceeasi valoare iniţială fixată, programul va genera la fiecare rulare aceleaţi numere aleatoare. Pentru a evita acest lucru, biblioteca pune la dispozitie funcţia **srand()** care primeşte ca parametru un număr întreg reprezentând valoarea iniţiala utilizată în calcularea şirului de numere aleatoare. +
- +
-Astfel, paşii pentru rezolvarea problemei noastre sunt următorii : +
- +
-<code c> +
- +
-// fixarea valorii utilizate în generarea numerelor:​ +
-srand( seed ); // unde seed este o valoare de tip intreg; +
-// obţinerea unui număr pseudoaleator:​  +
-n = rand(); // unde n este numarul intreg generat aleator; +
- +
-</​code>​ +
- +
-<note important>​Pentru a garanta că la fiecare rulare a programului valoarea seed este unică, recomandăm apelarea funcţiei srand cu ora locală a calculatorului în secunde. (Acest lucru va fi prezentat în laboratoarele următoare)</​note>​ +
- +
-Afişati ​pe ecran o linie conţinând 3 numere întregi, separate prin spaţiu, generate în mod aleator. +
-Rulaţprogramul de mai multe ori cu aceeasi valoare seed. Ce observaţ+
-Schimbaţvaloarea seed şrulaţi din nouCe observaţi ?+
  
 === Problema 2 === === Problema 2 ===
Line 441: Line 420:
 | 1 1 1   | Nu exista solutii | | 1 1 1   | Nu exista solutii |
 | 1 -3 2   | 1.00 2.00 | | 1 -3 2   | 1.00 2.00 |
 +
 +=== Problema 10 ===
 +
 +Problema generării unor numere aleatoare poate fi considerată iniţial una complicată,​ dar limbajul C ne pune la dispoziţie biblioteca **stdlib**, cu ajutorul căreia lucrurile vor deveni foarte simple. Funcţiile şi constantele acestei biblioteci sunt declarate în header-ul **stdlib.h** pe care va trebui să-l includeţi la începutul programului pe care îl scrieţi.
 +
 +Utilizând funcţia **rand()** veţi genera numere aleatoare cu valori cuprinse între **0** si **RAND_MAX**,​ unde **RAND_MAX** este o constanta definită în **stdlib.h**,​ având în general valoarea maximă a tipului **int**.
 +
 +Valorile returnate de această funcţie sunt de fapt termenii unui şir de numere generat după o anumită formula ce foloseşte ca punct de plecare o valoare dată. Din cauza acestui aspect, pentru aceeasi valoare iniţială fixată, programul va genera la fiecare rulare aceleaţi numere aleatoare. Pentru a evita acest lucru, biblioteca pune la dispozitie funcţia **srand()** care primeşte ca parametru un număr întreg reprezentând valoarea iniţiala utilizată în calcularea şirului de numere aleatoare.
 +
 +Astfel, paşii pentru rezolvarea problemei noastre sunt următorii :
 +
 +<code c>
 +
 +// fixarea valorii utilizate în generarea numerelor:
 +srand( seed ); // unde seed este o valoare de tip intreg;
 +// obţinerea unui număr pseudoaleator: ​
 +n = rand(); // unde n este numarul intreg generat aleator;
 +
 +</​code>​
 +
 +<note important>​Pentru a garanta că la fiecare rulare a programului valoarea seed este unică, recomandăm apelarea funcţiei srand cu ora locală a calculatorului în secunde. (Acest lucru va fi prezentat în laboratoarele următoare)</​note>​
 +
 +Afişati pe ecran o linie conţinând 3 numere întregi, separate prin spaţiu, generate în mod aleator.
 +Rulaţi programul de mai multe ori cu aceeasi valoare seed. Ce observaţi ?
 +Schimbaţi valoarea seed şi rulaţi din nou. Ce observaţi ?
 +
 +
programare-cc/laboratoare/02.1695737141.txt.gz · Last modified: 2023/09/26 17:05 by mihai.nan
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