La funzione abs() in C++
La funzione abs() viene utilizzata per calcolare il valore assoluto di un numero intero o il modulo di un numero complesso.
abs(x)
A seconda del tipo di dati del parametro x, la funzione calcola un risultato diverso:
- Se x è un numero intero la funzione restituisce il valore assoluto del numero.
- Se x è un numero complesso, allora calcola il modulo del numero complesso.
A seconda del tipo di dati del parametro x, la funzione calcola un risultato diverso.
Il contesto in cui viene utilizzata determina la sua funzionalità specifica, grazie al meccanismo di overload delle funzioni in C++. Nel caso di un numero intero utilizza la funzione abs() della libreria <cstdlib> o della libreria <cmath>, mentre nel caso di un numero complesso esegue la funzione abs() della libreria <complex>. Se vuoi calcolare il valore assoluto di numeri in virgola mobile come float o double dovresti usare la funzione fabs() dalla libreria cmath.
Esempio (numeri interi)
Ecco un esempio pratico di codice che utilizza la funzione abs() con un numero intero:
- #include <iostream>
- int main() {
- int numNegativo = -10;
- int numPositivo = 10;
- std::cout << "Valore assoluto di " << numNegativo << " è " << abs(numNegativo) << std::endl;
- std::cout << "Valore assoluto di " << numPositivo << " è " << abs(numPositivo) << std::endl;
- return 0;
- }
Questo semplice programma programma calcola il valore assoluto di -10 e 10.
In entrambi i casi il risultato è il numero intero 10.
Valore assoluto di -10 è 10
Valore assoluto di 10 è 10
Se i valori in ingresso sono numeri in virgola mobile, la funzione abs() restituisce comunque un valore intero.
Ad esempio, modifica i due valori in ingresso in valori float -10.5 e 10.5
- #include <iostream>
- int main() {
- float numNegativo = -10.5;
- float numPositivo = 10.5;
- std::cout << "Valore assoluto di " << numNegativo << " è " << abs(numNegativo) << std::endl;
- std::cout << "Valore assoluto di " << numPositivo << " è " << abs(numPositivo) << std::endl;
- return 0;
- }
Il risultato in output della funzione abs() è sempre 10. Non è 10.5
Valore assoluto di -10.5 è 10
Valore assoluto di 10.5 è 10
Come anticipato, per avere un valore assoluto in virgola mobile devi usare la funzione fabs() della libreria cmath.
Esempio 2 (numeri complessi)
In questo caso proviamo la funzione abs() con i numeri complessi.
- #include <iostream>
- #include <complex>
- int main() {
- // definisce il numero complesso 3 + 4i
- std::complex<double> z(3, 4);
- // calcola il modulo di z
- double modulo = abs(z);
- std::cout << "Il modulo del numero complesso è: " << modulo << std::endl;
- return 0;
- }
Nella variabile z abbiamo definito il numero complesso 3+4i
Il linguaggio C++ riconosce che si tratta di un numero complesso ed esegue la funzione abs() della libreria complex.
Il risultato è il modulo del numero complesso.
Il modulo del numero complesso è: 5
In questo caso il risultato è 5 perché il modulo di 3+4i è la radice quadrata della somma dei quadrati.