Imparare a programmare in C++ – #8 – cmath e operazioni matematiche

Imparare a programmare in C++ - cmath e operazioni matematiche

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

Mostra soluzione

#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

Mostra soluzione

#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;
}

Video

author avatar
Claudio Masci
Sono innanzitutto un appassionato di informatica e tecnologia in generale. Lavoro in ambito informatico da circa 16 anni, spaziando in diversi campi, andando dalla programmazione web, allo sviluppo di software, dalla grafica alla modellazione 3d ed al video editing, ho sempre voluto approfondire ogni aspetto e questo mi ha permesso di lavorare in diversi ambiti informatici.