2009-05-10 11 views

Répondre

93

pow() dans la bibliothèque cmath. Plus d'infos here. N'oubliez pas d'avoir le #include en haut.

+4

hell, yes .. c'est vraiment aussi simple .. –

13

Utilisez le pow (x, y) fonction: See Here

comprennent Juste math.h et vous êtes tous ensemble.

3

Il est prisonnier de guerre ou powf dans <math.h>

Il n'y a pas d'opérateur infixe spécial comme dans Visual Basic ou Python

+1

powf() est une fonction C99 qui n'est pas en C++. – newacct

3
pow(2.0,1.0) 
pow(2.0,2.0) 
pow(2.0,3.0) 

Votre titre de la question originale est trompeuse. Pour seulement carré, utilisez 2*2.

10

Vous devriez pouvoir utiliser les méthodes C normales en mathématique.

#include <cmath>

pow(2,3)

si vous êtes sur un système unix, man cmath

Est-ce que vous demandez?

Sujal

9

Alors que pow(base, exp) est une excellente suggestion, sachez que cela fonctionne généralement en virgule flottante. Cela peut être ou ne pas être ce que vous voulez: sur certains systèmes, une simple boucle multipliant sur un accumulateur sera plus rapide pour les types entiers.

Et pour le carré en particulier, vous pourriez tout aussi bien multiplier les nombres ensemble, en virgule flottante ou en nombre entier; ce n'est pas vraiment une diminution de la lisibilité (IMHO) et vous évitez les frais généraux de performance d'un appel de fonction.

+0

Et oui, cela peut tomber dans la catégorie "optimisation prématurée", mais je trouve toujours bon d'être au courant de choses comme ça - surtout si vous devez programmer dans des environnements à ressources limitées. – leander

62

std::pow dans l'en-tête <cmath> a ces: surcharges

pow(float, float); 
pow(float, int); 
pow(double, double); // taken over from C 
pow(double, int); 
pow(long double, long double); 
pow(long double, int); 

Maintenant, vous ne pouvez pas le faire

pow(2, N) 

N étant un entier, car il ne sait pas quel flotteur, double ou double version longue, il devrait prendre, et vous obtiendrez une erreur d'ambiguïté. Tous les trois auraient besoin d'une conversion de int à virgule flottante, et tous les trois sont également coûteux! Par conséquent, veillez à saisir le premier argument afin qu'il corresponde parfaitement à l'un de ces trois arguments. J'utilise habituellement double

pow(2.0, N) 

Une certaine merde d'avocat de moi encore. Je suis souvent tombé moi-même dans ce piège, alors je vais vous en avertir.

+0

'int N; pow (2.0, N) 'serait toujours ambigu: ' pourrait être 'pow (double, int)' ou 'pow (double, double)' ': -/→ cast – Marvin

+0

@marvin je recommande de lire ma réponse avant d'ajouter un commentaire J'ai expliqué que cela ne donne pas d'ambiguïté. –

+3

Je recommande de lire mon commentaire avant d'ajouter un commentaire. ;-) J'ai expliqué que cela DONNE une ambiguïté. (Compilateur de VS2008) – Marvin

5
#include <iostream> 
#include <conio.h> 

using namespace std; 

double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int) 

void main() 
{ 
    double x; //initializing the variable x and i 
    int i; 
    cout<<"please enter the number"; 
    cin>>x; 
    cout<<"plese enter the integer power that you want this number raised to"; 
    cin>>i; 
    cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i); 
} 

// définition de la fonction raiseToPower

double raiseToPow(double x, int power) 
{ 
    double result; 
    int i; 
    result =1.0; 
    for (i=1, i<=power;i++) 
    { 
     result = result*x; 
    } 
    return(result); 
} 
+2

Votre réponse doit contenir une explication de votre code et une description de la façon dont il résout le problème. – AbcAeffchen

9

En C++ l'opérateur "^" est une opération de bits OR. Cela ne fonctionne pas pour élever à un pouvoir. Le x < < n est un décalage vers la gauche du nombre binaire qui est le même que multiplier x par 2 n nombre de fois et qui ne peut être utilisé lors de l'augmentation de 2 à une puissance. La fonction POW est une fonction mathématique qui fonctionnera de manière générique.

6

Je n'ai pas assez de réputation pour commenter, mais si vous aimez travailler avec QT, ils ont leur propre version.

#include <QtCore/qmath.h> 
    qPow(x, y); // returns x raised to the y power. 

Ou si vous n'utilisez pas QT, cmath a fondamentalement la même chose.

#include <cmath> 
    double x = 5, y = 7; //As an example, 5^7 = 78125 
    pow(x, y); //Should return this: 78125 
0
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 
0

J'utilise la bibliothèque cmath ou math.h afin d'utiliser les fonctions de la bibliothèque pow() qui prend soin des pouvoirs

#include<iostream> 
#include<cmath> 

int main() 
{ 
    double number,power, result; 
    cout<<"\nEnter the number to raise to power: "; 
    cin>>number; 
    cout<<"\nEnter the power to raise to: "; 
    cin>>power; 

    result = pow(number,power); 

    cout<<"\n"<< number <<"^"<< power<<" = "<< result; 

    return 0; 
} 
+0

Cette réponse a déjà été fournie il y a des années, n'est-ce pas? –

+0

Mais comment effectuer sans utiliser la fonction pow() manuellement. – Sushant

Questions connexes