Augmenter le nombre à la puissance en C++

Jinku Hu 12 octobre 2023
  1. Utiliser la fonction std::pow pour élever un nombre à la puissance en C++
  2. Utilisez la fonction personnalisée pour élever un vecteur de nombres à la puissance 2 en C++
  3. Utiliser la fonction personnalisée pour élever un vecteur de nombres à la puissance de C++
Augmenter le nombre à la puissance en 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;
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - C++ Math