Erhöhen einer Zahl auf die Potenz in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden Sie die Funktion std::pow, um eine Zahl in C++ hochzupotenzieren
  2. Verwenden der benutzerdefinierten Funktion zum Erhöhen eines Vektors von Zahlen auf die Potenz von 2 in C++
  3. Verwenden der benutzerdefinierten Funktion zum Erhöhen eines Vektors von Zahlen auf die Potenz in C++
Erhöhen einer Zahl auf die Potenz in C++

Dieser Artikel demonstriert mehrere Methoden, wie eine Zahl in C++ hochgepotenzt werden kann.

Verwenden Sie die Funktion std::pow, um eine Zahl in C++ hochzupotenzieren

Die Funktion std::pow kann verwendet werden, um das Produkt einer gegebenen Basiszahl hoch n zu berechnen, wobei n ein ganzzahliger Wert oder eine Fließkommazahl sein kann. Beachten Sie, dass diese Funktion mehrere Ausnahmen und Sonderfälle hat, die vom Programmierer gehandhabt oder mit der separaten Funktion implementiert werden müssen, die im Header der C++-Bibliothek <cmath> bereitgestellt wird. Z. B. kann pow nicht verwendet werden, um die Wurzel aus einer negativen Zahl zu berechnen, und stattdessen sollten wir std::sqrt oder std::cbrt verwenden. Im folgenden Beispiel heben wir jedes Element eines int-Vektors auf die beliebige Potenz von 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;
}

Ausgabe:

1; 2; 3; 4; 5; 6; 7; 8; 9; 10;
1; 8; 27; 64; 125; 216; 343; 512; 729; 1000;

Verwenden der benutzerdefinierten Funktion zum Erhöhen eines Vektors von Zahlen auf die Potenz von 2 in C++

Alternativ zur vorherigen Methode kann man mit der Funktion pow verschiedene benutzerdefinierte Funktionen implementieren, um die Standardfunktionalität zu erweitern. Dieses Beispiel demonstriert eine Funktion Pow2Vector, die einen vector-Container annimmt und dessen Elemente auf die Potenz von 2 erhöht. Beachten Sie, dass die Funktionsvorlage PrintVector Vektorelemente auf der Konsole ausgibt, und dass sie einen beliebigen Vektor eingebauter Datentypen annehmen kann.

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

Ausgabe:

1; 4; 9; 16; 25; 36; 49; 64; 81; 100;

Verwenden der benutzerdefinierten Funktion zum Erhöhen eines Vektors von Zahlen auf die Potenz in C++

Als Fortsetzung der vorherigen Methode kann man die zugrundeliegende Funktion so anpassen, dass sie ein zusätzliches Argument des Exponentenwertes annimmt. Auf diese Weise haben wir im Grunde die Funktion implementiert, die die gegebenen Elemente im vector auf die von uns angegebene Potenz bringt. Beachten Sie, dass Sie die Variable float/double als Exponentenwert initialisieren und dann an die Funktion PowVector übergeben müssen, damit die Ableitung vom Vorlagentyp funktioniert.

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

Ausgabe:

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;
Autor: 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

Verwandter Artikel - C++ Math