178 votes

Quelle est la fonction C++ permettant d'élever un nombre à une puissance ?

Comment élever un nombre à une puissance ?

2^1

2^2

2^3

etc...

2voto

Kartikey Tewari Points 61

Utiliser la fonction pow() dans la bibliothèque cmath, tgmath ou math.h.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int a,b;
cin >> a >> b;
cout << pow(a,b) << endl; // this calculates a^b

return 0;
}

notez que si vous donnez l'entrée à power comme un type de données autre que long double, la réponse sera promue à celle de double. c'est-à-dire qu'il prendra l'entrée et donnera la sortie comme double. pour les entrées de long double, le type de retour est long double. pour changer la réponse en int, utilisez, int c=(int)pow(a,b)

Mais gardez à l'esprit que pour certains nombres, le résultat peut être inférieur à la réponse correcte. Par exemple, si vous devez calculer 5^2, la réponse peut être retournée sous la forme 24.99999999999 sur certains compilateurs. Si vous changez le type de données en int, la réponse sera 24 au lieu de 25, la réponse correcte. Donc, faites ceci

int c=(int)(pow(a,b)+0.5)

Maintenant, votre réponse sera correcte. De plus, pour les très grands nombres, on perd des données en changeant le type de données double en long long int. Par exemple, vous écrivez

long long int c=(long long int)(pow(a,b)+0.5);

et donnez l'entrée a=3 et b=38 alors le résultat sera 13508517672992000 alors que la réponse correcte est 13508517672992089, ceci parce que la fonction pow() renvoie 1.35085e+18 qui est promu en int comme 13508517672992000. Je suggère d'écrire une fonction de puissance personnalisée pour de tels scénarios, comme:-

long long int __pow (long long int a, long long int b)
{
long long int q=1;
for (long long int i=0;i<=b-1;i++)
{
q=q*a;
}

return q;
}

et ensuite l'appeler quand vous voulez, comme,

int main()
{
long long int a,b;
cin >> a >> b;

long long int c=__pow(a,b);
cout << c << endl;

return 0;
}

Pour les nombres supérieurs à la plage de long long int, utilisez la bibliothèque boost ou les chaînes de caractères.

1voto

nmuntz Points 815

pow

1voto

Viktor Points 21
int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
    if (ow > 1)
    {
         i = i * power (i, ow - 1);
    }
    return i;
}

cout << power(6,7); //you can enter variables here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X