
Imparare a programmare in C++ – #8 – cmath e operazioni matematiche: cmath permette di eseguire operazioni matematiche più complesse.
Tempo di lettura stimato: 5 minuti
Imparare a programmare in C++ – #8 – cmath e operazioni matematiche
cmath è una libreria di classi dedicate alle operazioni matematiche che permette di estendere le funzionalità di base del c++.
Andando infatti ad includere la libreria cmath scrivendo:
#include <cmath>
ad inizio progetto, sarà possibile sfruttare queste funzioni ed effettuare operazioni matematiche come il calcolo delle potenze, della radice quadrata, di seno e coseno e di altre utili funzionalità.
L’elenco di tutte le funzioni utilizzabili è presente sul sito cplusplus.com.
Sul sito, per ogni funzioni sono indicati anche la sintassi ed alcuni esempi.
Come calcolare il valore più alto e più basso tra due numeri in C++
Tra le funzioni presenti in cmath troviamo min e max, queste due funzioni permettono di inserire due valori in input e di riportare rispettivamente il valore più basso e quello più alto.
Esempio:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double Valore1, Valore2;
cout << "Inserisci il valore 1" << endl;
cin >> Valore1;
cout << "Inserisci il valore 2" << endl;
cin >> Valore2;
cout << "Il valore piu' alto e': " << max(Valore1, Valore2) << endl;
cout << "Il valore piu' basso e': " << min(Valore1, Valore2) << endl;
return 0;
}
A partire da C++11 queste funzioni possono essere sostituite con fmin ed fmax.
Il risultato ottenuto con min ed fmin, e con max ed fmax è identico, quindi possono essere usate entrambe.
Calcolare la radice quadrata di un numero in C++
Possiamo calcolare la radice quadrata di un numero scrivendo sqrt(Valore o Variabile);
Esempio:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double Valore1;
cout << "Inserisci il valore 1" << endl;
cin >> Valore1;
cout << "la radice quadrata di " << Valore1 << " e': " << sqrt(Valore1) << endl;
return 0;
}
Come arrotondare un numero in C++
Possiamo arrotondare i numeri in diversi modi, quelli più utilizzati sono:
- floor(valore o variabile)
- ceil(valore o variabile)
- round(valore o variabile)
floor arrotonda sempre per difetto, ceil arrotonda sempre per eccesso mentre round arrotonda in base al numero più vicino
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double Valore1;
cout << "Inserisci il valore 1" << endl;
cin >> Valore1;
cout << "Il numero arrotondato piu' basso e': " << floor(Valore1) << endl;
cout << "Il numero arrotondato piu' alto e': " << ceil(Valore1) << endl;
cout << "Il numero arrotondato e': " << round(Valore1) << endl;
return 0;
}
Come calcolare la potenza di un numero in C++
Per calcolare la potenza in C++ andremo a scrivere pwr(base, esponente).
Esempio:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double Valore1, Valore2;
cout << "Inserisci il valore 1" << endl;
cin >> Valore1;
cout << "Inserisci il valore 2" << endl;
cin >> Valore2;
cout << "Il risultato della potenza e':" << pow(Valore1, Valore2) << endl;
return 0;
}
ESERCITAZIONI
Per la soluzione delle esercitazioni ho usato una volta il ciclo for e una volta il ciclo while, non perchè fosse la scelta migliore (personalmente avrei usato in entrambi i casi il for), ma per mostrare la soluzione con entrambi i metodi.
Esercizio 1: Maggiore e Arrotonda
Dato un array con un elenco di 6 numeri di tipo double, trova il maggiore ed arrotondane il valore.
Regole:
- I valori nell’array possono sia essere inseriti in fase di dichiarazione sia fatti inserire dall’utente
- Non ci sono limiti sulle variabili da creare
- Si può usare il ciclo che si preferisce
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double ElencoNumeri[6] = {3.56, 8.75, 4.82, 12.24, 34.81, 1.25};
double NumeroMaggiore = 0;
for (int a = 0; a <= 6; a++)
{
NumeroMaggiore = max(ElencoNumeri[a], NumeroMaggiore);
}
cout << "Il numero maggiore arrotondato dell'elenco e': " << round(NumeroMaggiore) << endl;
return 0;
}
Esercizio 2: Minore e Radice Quadrata
Dato un elenco di 10 numeri confrontali con un numero preimpostato (ad esempio 20), se sono inferiori sommali tra loro e calcola la radice quadrata del valore finale.
Regole:
- I 10 numeri possono essere pre-inseriti o fatti inserire dall’utente
- I numeri possono essere di qualsiasi tipo (int, double, float) scegliere quello che si preferisce
- Si può usare il ciclo che si preferisce
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double ElencoNumeri[10] = {3.56, 8.75, 4.82, 12.24, 34.81, 1.25, 45.21, 12.34, 5.68, 8.90};
double NumeroPreimpostato = 20;
double Totale = 0;
int Contatore = 0;
while (Contatore <= 10 )
{
if (min(ElencoNumeri[Contatore], NumeroPreimpostato) != NumeroPreimpostato)
{
Totale = Totale + min(ElencoNumeri[Contatore], NumeroPreimpostato);
}
Contatore++;
}
cout << "La radice quadrata del totale e': " << sqrt(Totale) << endl;
return 0;
}