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