Augmenter le nombre à la puissance en C++

  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

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 <iostream>
#include <vector>
#include <iterator>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;
using std::pow; using std::ostream_iterator;

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 <iostream>
#include <vector>
#include <iterator>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;
using std::pow; using std::ostream_iterator;

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 <iostream>
#include <vector>
#include <iterator>
#include <cmath>

using std::cout; using std::endl;
using std::vector; using std::copy;
using std::pow; using std::ostream_iterator;

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;