InfoBook.ro ← Harta anului
Modul 06 · Funcții & biblioteci
Modul 06 · Funcții & biblioteci

Nu reinventăm roata

Sute de funcții gata scrise și testate, în ambele limbaje: matematică și algoritmi pe vectori în C++ (#include), funcții built-in și module în Python (import) — plus tabelul care le traduce între ele. Fiecare cu exemplu și laborator live.

🎯 Obiectiv 1Folosești <cmath> (sqrt, pow, rotunjiri, log) și <algorithm> (sort, find, count, min/max, swap).
🎯 Obiectiv 2Folosești funcțiile numerice built-in Python (abs, round, int/float, √) și modulele math, random.
🎯 Obiectiv 3Formatezi cu <iomanip>, cunoști limitele (<climits>) și traduci C++ ↔ Python cu tabelul.
1

C++ · funcții matematice <cmath>

Se includ cu #include <cmath> la începutul programului.

abs(x) — valoare absolută

Distanța până la 0, fără semn.

›abs(-7) // 7
›abs(-2.8) // 2.8

sqrt(x) — radical

√x; argumentul trebuie ≥ 0; rezultatul e double.

›sqrt(25) // 5
›sqrt(2) // 1.41421

pow(baza, exp) — putere

bazaexp; argumente și rezultat double.

›pow(2, 10) // 1024
›pow(9, 0.5) // 3 = sqrt(9)

ceil / floor / round — rotunjiri

În sus · în jos · la cel mai apropiat (0.5 → sus).

›ceil(3.2) // 4 floor(3.8) // 3
›ceil(-3.2) // -3 round(3.5) // 4

trunc(x) — trunchiere

Taie zecimalele, fără rotunjire. Diferă de floor la negative!

›trunc(3.9) // 3
›trunc(-3.9) // -3 (floor: -4!)

fmod(x, y) — rest real

Restul împărțirii pentru numere reale (% merge doar pe întregi).

›fmod(7.5, 2.0) // 1.5
›fmod(10.3, 3.0) // 1.3

log(x), log10(x), log2(x) — logaritmi

Natural (baza e) · baza 10 · baza 2. Truc de BAC: numărul de cifre ale lui n = (int)log10(n) + 1.

›log10(1000) // 3 log2(1024) // 10 log(1) // 0
›int n = 4738; cout << (int)log10(n) + 1; // 4 cifre

🎛 Laborator cmath — încearcă orice funcție, live

x =
2

C++ · algoritmi standard <algorithm>

Operațiile pe care altfel le-ai scrie de mână: minim, maxim, interschimbare, sortare, căutare — gata făcute și rapide.

min(a, b) · max(a, b)

Minimul / maximul a două valori de același tip. Cu acolade (C++11): min din oricâte.

›min(5, 3) // 3
›min({5, 2, 8}) // 2

swap(a, b)

Interschimbă două variabile, orice tip — fără variabilă auxiliară scrisă de tine.

›int a = 5, b = 3;
›swap(a, b); // a=3, b=5

sort(v, v + n)

Sortează crescător [început, sfârșit). O(n·log n) — detalii în Modulul 08.

›sort(v, v + n);
›sort(v, v + n); reverse(v, v + n); // desc
›sort(v+1, v+4); // doar pozițiile 1..3

căutarea unei valori

O scrii cu o buclă simplă. (STL are find, dar el întoarce un pointer — noțiune de clasa a X-a.)

›int poz = -1;
›for (int i = 0; i < n; i++)
› if (v[i] == x) { poz = i; break; }

count(v, v + n, val)

De câte ori apare val în interval.

›int v[] = {1,3,5,3,3,7};
›count(v, v+6, 3) // 3

reverse · fill

Inversează ordinea · setează toate elementele la o valoare.

›reverse(v, v+5); // {5,4,3,2,1}
›fill(v, v+10, 0); // toate = 0

🧪 Laborator <algorithm> — operează pe un vector viu

v = x =
alege o operație 👆
3

C++ · alte biblioteci și harta #include

Două biblioteci mici pe care le folosești des — plus cele patru includes care apar în aproape orice program.

<climits> — limitele tipurilor

INT_MAX = 2 147 483 647 · INT_MIN = −2 147 483 648 · LLONG_MAX ≈ 9,2·10¹⁸

›int minim = INT_MAX;
›int maxim = INT_MIN;
›// inițializări sigure pt. min/max

<iomanip> — formatare

fixed + setprecision(n) = exact n zecimale · setw(n) = lățime minimă (coloane).

›cout << fixed << setprecision(2)
› << 3.14159; // 3.14
›cout << setw(5) << i;

<iostream>

cin, cout — primul rând din orice program.

<cmath>

sqrt, pow, rotunjiri — secțiunea 1.

<algorithm>

sort, find, count, min/max — secțiunea 2.

<fstream>

fișiere: ifstream/ofstream — Modulul 09.

📚 Tabel recapitulativ — ce bibliotecă include ce

BibliotecăFuncții principale
<cmath>abs, sqrt, pow, ceil, floor, round, fmod, log, log10, log2, trunc
<algorithm>min, max, swap, sort, find, count, reverse, fill
<climits>INT_MAX, INT_MIN, LLONG_MAX
<iomanip>fixed, setprecision, setw
În clasa a X-a se adaugă la trusă: <cstring> și <string> (șiruri de caractere), <cctype> (teste pe caractere) și <sstream> — le înveți odată cu șirurile.
4

Python: import — modulele

Python numește bibliotecile „module". Multe funcții numerice sunt built-in (fără import!) — plus două module care merită știute:

Funcții numerice built-in — fără niciun import

abs(x)

valoare absolută — distanța până la 0.
abs(-7) → 7

round(x, n)

rotunjire la n zecimale. „Bancară": 0.5 merge spre PAR!
round(2.5) → 2

int(x) · float(x) · str(x)

conversii între tipuri. int() TRUNCHIAZĂ, nu rotunjește.
int(3.9) → 3 · int("17") → 17 · str(25) → "25"

math.sqrt(x)

radical (cu import math) sau trucul x ** 0.5.
sqrt(25) → 5.0

🎛 Laborator — testează funcțiile numerice

x =
Capcana round: Python folosește rotunjirea bancară — round(2.5) = 2, dar round(3.5) = 4 (mereu spre cifra PARĂ). C++-ul rotunjește 0.5 mereu în sus. La BAC lucrezi în C++, dar în laborator ține minte diferența!

Module care se importă

import math

math.sqrt(), math.pow(), math.pi — matematica ce nu e built-in. Reminder: multe se descurcă și fără (x ** 0.5).

import random

random.randint(a, b) — un întreg aleator din [a, b]. Perfect pentru exerciții, simulări și jocuri.

🎲 Demo live: random în acțiune — aruncă zarul

apasă butonul — de fiecare dată alt rezultat 👆
5

Tabelul de traducere C++ ↔ Python

Caută o funcție sau apasă pe un rând ca să vezi codul complet în ambele limbaje.

🔍
Funcție⚙ C++ (bibliotecă)🐍 Python (modul)
Regula de aur (a doua oară, pentru că merită): înainte să scrii o funcție de mână, întreabă-te dacă nu există deja în bibliotecă. La BAC, sort() din <algorithm> îți economisește 10 rânduri și 10 minute.
6

Exerciții rezolvate

Două probleme complete care combină funcțiile de mai sus — în ambele limbaje, exact ca la laborator.

1 · Distanța dintre două puncte (sqrt, pow, formatare)

Cerință: se citesc coordonatele a două puncte, A(x₁, y₁) și B(x₂, y₂). Calculează distanța dintre ele, cu două zecimale.

👇 Apasă pe un set de date — desenul se schimbă:

2 · Sortare + afișare formatată (sort, zecimale)

Cerință: se citesc n numere reale. Afișează-le sortate crescător, separate prin virgulă, fiecare cu exact o zecimală.

Urmărește ce face formatarea cu fiecare valoare — de-asta am ales numere „incomode":

valoarea citităafișată cu 1 zecimalăce s-a întâmplat
1.241.2a tăiat a doua zecimală
22.0a adăugat zecimala (fixed)
3.753.8a rotunjit în sus
5.6875.7a rotunjit din trei zecimale
Date de intrareDate de ieșire
4
5.687 2 3.75 1.24
1.2, 2.0, 3.8, 5.7
Fără fixed, C++ ar afișa 2 în loc de 2.0 și ar folosi notația științifică la numere mari. fixed spune „scrie normal, cu virgulă", iar setprecision(1) spune „exact o zecimală".
Formatarea zecimalelor, în paralel: C++ folosește fixed << setprecision(2) din <iomanip>; Python folosește f-string: f"{x:.2f}". Aceeași idee, două sintaxe.
7

Test interactiv — funcții & biblioteci

7 întrebări rapide. Fiecare are răspunsul într-una din secțiunile de mai sus.

8

Fișa de sinteză

Harta funcțiilor și bibliotecilor, pe scurt.

#include <…> (C++) și import … (Python) aduc unelte gata scrise în program.
<cmath>: abs, sqrt, pow, ceil/floor/round/trunc, fmod, log10 — nr. de cifre = (int)log10(n)+1.
<algorithm>: min, max, swap, sort(v, v+n), find, count, reverse, fill — jumătate din BAC-ul practic.
swap(a, b) interschimbă două variabile — fără variabilă auxiliară scrisă de tine.
<climits>: INT_MAX / INT_MIN — inițializări sigure pentru min/max. <iomanip>: fixed + setprecision(n).
Python built-in: abs, round (bancară — 2.5→2!), int (trunchiază), float, len, min, max, sum, sorted — fără import.
Module Python: math (sqrt, pi) și random (randint) se importă. random.randint(a,b) ↔ rand() % n.
Regula de aur: înainte să scrii o funcție de mână, întreabă-te dacă nu există deja în bibliotecă.
fstream e singura de aici încă nefolosită — o descoperim pe larg la fișiere (Modulul 09).
Exersează pe calculator — două fișiere gata scrise, cu probleme care folosesc exact funcțiile de mai sus. Deschide-le în VS Code, rulează-le și modifică valorile:
← anteriorModul 05 · Subprograme urmează →Modul 07 · Structuri avansate