Augmenter le nombre à la puissance en C++
-
Utiliser la fonction
std::pow
pour élever un nombre à la puissance en C++ - Utilisez la fonction personnalisée pour élever un vecteur de nombres à la puissance 2 en C++
- Utiliser la fonction personnalisée pour élever un vecteur de nombres à la puissance de C++
Cet article présente plusieurs méthodes pour augmenter la puissance d’un nombre en C++.
Utiliser la fonction std::pow
pour élever un nombre à la puissance en C++
La fonction std::pow
peut être utilisée pour calculer le produit d’un nombre de base donné élevé à la puissance de n
, où n
peut être une valeur intégrale ou à virgule flottante. Notez que cette fonction a de multiples exceptions et cas spéciaux qui doivent être traités par le programmeur ou implémentés en utilisant la fonction séparée fournie dans l’en-tête de la bibliothèque C++ <cmath>
. Par exemple, pow
ne peut pas être utilisé pour calculer la racine d’un nombre négatif, et à la place, nous devrions utiliser std::sqrt
ou std::cbrt
. Dans l’exemple suivant, nous élevons chaque élément d’un vecteur int
à la puissance arbitraire de 3
.
#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;
template <typename T>
void PrintVector(vector<T> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
cout << endl;
}
constexpr int POWER = 3;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
PrintVector(arr);
for (auto &item : arr) {
item = pow(item, POWER);
}
PrintVector(arr);
return EXIT_SUCCESS;
}
Production :
1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 8; 27; 64; 125; 216; 343; 512; 729; 1000;
Utilisez la fonction personnalisée pour élever un vecteur de nombres à la puissance 2 en C++
Alternativement à la méthode précédente, on peut mettre en œuvre diverses fonctions personnalisées en utilisant la fonction pow
pour étendre les fonctionnalités standard. Cet exemple montre une fonction Pow2Vector
qui prend un conteneur vector
et élève ses éléments à la puissance 2. Notez que, le modèle de fonction PrintVector
produit des éléments vectoriels à la console, et il peut prendre n’importe quel vecteur des types de données intégrés.
#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;
template <typename T>
void PrintVector(vector<T> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
cout << endl;
}
template <typename T>
vector<T> &Pow2Vector(vector<T> &arr) {
for (auto &i : arr) {
i = pow(i, 2);
}
return arr;
}
constexpr int POWER = 3;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
PrintVector(Pow2Vector(arr));
return EXIT_SUCCESS;
}
Production :
1; 4; 9; 16; 25; 36; 49; 64; 81; 100;
Utiliser la fonction personnalisée pour élever un vecteur de nombres à la puissance de C++
Dans le prolongement de la méthode précédente, on peut modifier la fonction sous-jacente pour prendre un argument supplémentaire de la valeur de l’exposant. De cette façon, nous avons essentiellement mis en œuvre la fonction qui prend les éléments donnés dans le vector
à la puissance que nous fournissons. Notez que pour que la déduction de type modèle fonctionne, vous devez initialiser la variable float
/double
comme valeur d’exposant et la passer ensuite à la fonction PowVector
.
#include <cmath>
#include <iostream>
#include <iterator>
#include <vector>
using std::copy;
using std::cout;
using std::endl;
using std::ostream_iterator;
using std::pow;
using std::vector;
template <typename T>
void PrintVector(vector<T> &arr) {
copy(arr.begin(), arr.end(), ostream_iterator<T>(cout, "; "));
cout << endl;
}
template <typename T>
vector<T> &PowVector(vector<T> &arr, T power) {
for (auto &i : arr) {
i = pow(i, power);
}
return arr;
}
constexpr int POWER = 3;
int main() {
vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<float> arr2 = {1.2, 2.3, 3.2, 4.5, 5.5, 6.2, 7.1, 8.2, 9.0, 10.1};
float power = 2.0;
PrintVector(PowVector(arr, 5));
PrintVector(PowVector(arr2, power));
return EXIT_SUCCESS;
}
Production :
1; 32; 243; 1024; 3125; 7776; 16807; 32768; 59049; 100000;
1.44; 5.29; 10.24; 20.25; 30.25; 38.44; 50.41; 67.24; 81; 102.01;
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook