2009-05-10 44 views

risposta

93

pow() nella libreria cmath. Maggiori informazioni here. Non dimenticare di includere #include nella parte superiore.

+4

hell, yes .. è davvero così semplice .. –

13

Utilizzare il pow (x, y) la funzione: See Here

Basta includono math.h ed è tutto pronto.

3

E 'pow o powf in <math.h>

Non v'è alcun operatore infisso speciale come in Visual Basic o Python

+1

powf() è una funzione C99 che non è in C++. – newacct

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

Il titolo domanda iniziale è fuorviante. A solo square, utilizzare 2*2.

10

Dovresti essere in grado di utilizzare i normali metodi C in matematica.

#include <cmath>

pow(2,3)

se siete su un sistema unix-like, man cmath

E 'questo quello che stai chiedendo?

Sujal

9

Mentre pow(base, exp) è un ottimo suggerimento, essere consapevoli che tipicamente funziona in virgola mobile.

Questo può o non può essere quello che vuoi: su alcuni sistemi un ciclo semplice che si moltiplica su un accumulatore sarà più veloce per i tipi interi.

E per il quadrato in modo specifico, si potrebbe anche solo moltiplicare insieme i numeri, virgola mobile o intero; non è in realtà una diminuzione della leggibilità (IMHO) e si evita il sovraccarico delle prestazioni di una chiamata di funzione.

+0

E sì, questo potrebbe rientrare nella categoria "ottimizzazione prematura", ma trovo sempre utile essere consapevoli di cose come questa - specialmente se devi programmare in ambienti con risorse limitate. – leander

62

std::pow nell'intestazione <cmath> ha questi sovraccarichi:

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); 

Ora non si può solo fare

pow(2, N) 

con N è un int, perché non sa quale di galleggiante, la doppia o la doppia versione lunga dovrebbe richiedere e si otterrebbe un errore di ambiguità. Tutti e tre avrebbero bisogno di una conversione da int a virgola mobile, e tutti e tre sono ugualmente costosi!

Pertanto, assicurarsi di avere il primo argomento digitato in modo che corrisponda perfettamente a uno di questi tre. Io di solito uso double

pow(2.0, N) 

qualche avvocato merda da me ancora una volta. Sono spesso caduto in questa trappola, quindi ti avverto.

+0

'int N; pow (2.0, N) 'sarebbe ancora ambiguo: ' potrebbe essere 'pow (double, int)' o 'pow (double, double)' ': -/→ cast – Marvin

+0

@marvin mi raccomando di leggere la mia risposta prima di aggiungere un commento. ho spiegato che non dà un'ambiguità. –

+3

Mi raccomando di leggere il mio commento prima di aggiungere un commento. ;-) Ho spiegato che dà un'ambiguità. (Compilatore di 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); 
} 

// definizione della funzione 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

La tua risposta dovrebbe contenere una spiegazione del tuo codice e una descrizione di come risolve il problema. – AbcAeffchen

9

In C++ l'operatore "^" è un OR bit a bit. Non funziona per elevare a un potere. Lo x < < n è uno spostamento a sinistra del numero binario che equivale a moltiplicare x per 2 n numero di volte e che può essere utilizzato solo quando si alza 2 a una potenza. La funzione POW è una funzione matematica che funzionerà genericamente.

6

Non ho abbastanza reputazione per commentare, ma se ti piace lavorare con QT, hanno la loro versione.

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

Oppure se non si utilizza QT, cmath ha praticamente la stessa cosa.

#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

Sto usando la libreria cmath o math.h al fine di utilizzare le funzioni di libreria pow() che si prende cura dei poteri

#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

Questa risposta era già stata fornita anni fa, non è vero? –

+0

Ma come eseguire senza utilizzare la funzione pow() manualmente. – Sushant

Problemi correlati