Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
De multe ori calcularea unei anumite valori poate fi foarte complicată și repetitivă. Din acest motiv, există o sumedenie de funcții predefinite care se includ cu ușurință în programele C++ și care ușurează procesul de rezolvare a problemei.
O funcție este o grupare de instrucțiuni care așteaptă niște parametri și îi prelucrează, pentru ca mai apoi să furnizeze (returneze) un rezultat. Spre exemplu, o funcție care calculează rădăcina pătrată a unui număr poate aștepta un număr n
, căruia îi aproximează radicalul, după care să returneze această valoare.
O funcție se apelează în felul următor:
nume_functie(param1, param2, param3, …)
Iar valoarea acestei funcții este însuși rezultatul returnat.
Spre exemplu, funcția sqrt()
din biblioteca <cmath>
se poate folosi în felul următor:
#include <iostream>
#include <cmath>
…
cout << sqrt(9); //Afișează: 3
Trebuie avut grijă ca biblioteca ce conține funcția să fie inclusă în program, altfel, programul nu va ști despre ce funcție este vorba și va afișa o eroare:
#include <cmath>
Funcțiile matematice se regăsesc în biblioteca <cmath>
, care trebuie inclusă la începutul funcției. Iată câteva dintre cele mai uzuale funcții matematice din această bibliotecă:
Funcția abs
(și fabs
) așteaptă un număr real x
și returnează valoarea absolută a sa (adică dacă x
este pozitiv, returnează x
, altfel, returnează -x
). Prototipul funcției este:
double abs(double x)
Funcția floor
așteaptă un număr real x
și returnează cel mai mare număr întreg mai mic sau egal cu x
(indiferent dacă x
este pozitiv sau negativ).
double floor(double x)
Funcția ceil
așteaptă un număr real x
și returnează cel mai mic număr întreg mai mare sau egal cu x
(indiferent dacă x
este pozitiv sau negativ).
double ceil(double x)
Funcția sqrt
așteaptă un număr real pozitiv x
și returnează rădăcina pătrată a sa.
double sqrt(double x)
Funcția cbrt
așteaptă un număr real x
și returnează rădăcina cubică a sa.
double cbrt(double x)
Funcția pow
așteaptă două numere reale x
și y
și returnează numărul x
la puterea y
. Funcția nu trebuie folosită în exces, se recomandă implementarea unei funcții proprii pentru concursuri sau olimpiade.
double pow(double x, double y)
Funcția sin
așteaptă un număr real x
și returnează valoarea funcției trigonometrice sinus, sin x
.
double sin(double x)
Funcția cos
așteaptă un număr real x
și returnează valoarea funcției trigonometrice cosinus, cos x
.
double cos(double x)
Funcția tan
așteaptă un număr real x
și returnează valoarea funcției trigonometrice tangentă, tg x
.
double tan(double x)
Cele trei funcții așteaptă un număr real pozitiv x
. Funcția log
returnează logaritmul natural al lui x
(ln x
). Funcția log10
returnează logaritmul în baza 10
al lui x
. Funcția log2
returnează logaritmul în baza 2
al lui x
.
double log(double x)
double log10(double x)
double log2(double x)
Funcțiile predefinite cu șiruri de caractere se pot găsi în această lecție despre șiruri de caractere. Există o sumedenie de funcții care permit prelucrarea extensivă a șirurilor de caractere, însă este nevoie de exercițiu pentru a le deprinde cu totul.
Spre deosebire de unele admiteri și de bacalaureat, pentru olimpiadă sau concursuri, funcțiile predefinite care se pot folosi sunt diferite.
La olimpiada de informatică sau la alte concursuri se pot folosi toate funcțiile din standardele C++11. Asta include toate funcțiile matematice descrise în această lecție (și toate celelalte din biblioteca <cmath>
), toate funcțiile predefinite cu șiruri de caractere, precum și o multitudine de alte funcții STL care nu se pot folosi la alte examene.
Câteva dintre cele mai importante funcții din STL sunt menționate mai jos.
Funcția sort
se găsește în biblioteca <algorithm>
și ordonează după o anumită regulă (implicit crescător) elementele dintre doi indici dați. Trebuie menționat faptul că sort
funcționează cu pointeri, astfel că definiția funcției arată în felul următor:
sort(st, dr)
sort(st, dr, comp)
Și sortează elementele aflate cu adresele între [st; dr)
(dr
nu este inclus!). De pildă, un vector a
cu n
elemente numere naturale cu indici de la 1
la n
se sortează în felul următor:
sort(a + 1, a + n + 1); //crescător, implicit
sort(a + 1, a + n + 1, greater<int>()); //descrescător
Funcția swap
se găsește în biblioteca <algorithm>
și interschimbă valorile a două elemente de același tip. Funcția așteaptă doi pointeri către adresele de memorie ce trebuie interschimbate.
swap(x, y)
Iată un exemplu de interschimbare a două numere int
, iar mai apoi a două tablouri de double
:
int x = 1, y = 2;
swap(x, y); //-> x = 2, y = 1
double a[] = {1, 2, 3}, b[] = {4, 5, 6};
swap(a, b);