Aumentar o número ao poder em C++

Jinku Hu 12 outubro 2023
  1. Utilizar a função std::pow para elevar um número à potência em C++
  2. Utilizar a função personalizada para elevar um vector de números ao poder de 2 em C++
  3. Utilize a função personalizada para elevar um Vector de Números à potência em C++
Aumentar o número ao poder em C++

Este artigo irá demonstrar múltiplos métodos de como elevar um número ao poder em C++.

Utilizar a função std::pow para elevar um número à potência em C++

A função std::pow pode ser utilizada para calcular o produto de um dado número base elevado à potência de n, onde n pode ser um valor integral ou de ponto flutuante. Note-se que esta função tem múltiplas excepções e casos especiais que precisam de ser tratados pelo programador ou implementados utilizando a função separada fornecida no cabeçalho da biblioteca C++ <cmath>. Por exemplo, pow não pode ser utilizado para calcular a raiz de um número negativo, e em vez disso, devemos utilizar std::sqrt ou std::cbrt. No exemplo seguinte, elevamos cada elemento de um vector int ao poder arbitrário 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;
}

Resultado:

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

Utilizar a função personalizada para elevar um vector de números ao poder de 2 em C++

Em alternativa ao método anterior, podemos implementar várias funções personalizadas utilizando a função pow para alargar a funcionalidade padrão. Este exemplo demonstra uma função Pow2Vector que pega num contentor vector e eleva os seus elementos à potência de 2. Repare que, a função PrintVector produz elementos vectoriais para a consola, e pode levar qualquer vector de tipos de dados incorporados.

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

Resultado:

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

Utilize a função personalizada para elevar um Vector de Números à potência em C++

Como continuação do método anterior, podemos afinar a função subjacente para tomar um argumento adicional de valor exponencial. Desta forma, implementamos basicamente a função que leva os elementos dados no vector ao poder que fornecemos. Note-se que para que a dedução do tipo de modelo funcione, seria necessário inicializar a variável float/double como valor exponencial e depois passá-la para a função 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;
}

Resultado:

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

Artigo relacionado - C++ Math