()
Newbie
Messaggi:
Iscritto:
|
Scusate l'ignoranza, ma potete spiegarmi dove sta scritta nella funzione math.h la parte di codice che descrive il calcolo della potenza di un numero...
Perché l'ho cercata e non la trovo, o forse la trovo senza capirla
|
|
edo42 (Member)
Pro
Messaggi: 102
Iscritto: 30/07/2009
|
Si in effetti non l'avevo provato e l'avevo solo buttato giù sul momento
Comunque questo è un codice più complesso e che dovrebbe funzionare meglio (non l'ho scritto io):
Codice sorgente - presumibilmente C# |
long double Pow(const long double x, const int power) { // x ^ 0 is 1 if (power == 0) return 1; // x ^ 1 is x if (power == 1) return x; int c, i, k; long double res; long double px; // We observe that x ^ power could be written as a product of // factors, in which we may find: x ^ 1, x ^ 2, x ^ 4, x ^ 8 ... // A factor appears in the product if in the binary representation // of "power", the corresponding digit is 1. The result is multiplied // with "power", only if the digit is 1. E.g: x ^ 13 = x ^ 8 + x ^ 4 + x ^ 1, // because 13 in binary is 1101. // To convert the power to binary, we must divide it with 2 at every iteration. for (i = 1, px = x, res = 1, k = power; k; k /= 2) { c = k % 2; // Obtain the digit // Check if the digit is 1. Only if it is 1 then we // multiply res with px if (c) res *= px; px *= px; } return res; }
|
|
|
The Newbie (Member)
Pro
Messaggi: 175
Iscritto: 14/07/2010
|
1 --> math.h non è una funzione, bensì una libreria
2 --> Questo e' il codice corretto per utilizzare la funzione pow(x,y)
la x e' la base e la y l'esponente
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <math.h> // Nota che tra queste dichiarazioni trovi math.h using namespace std; int main () { int a; a = pow(2, 3); // 2 e' la base e 3 e' l'esponente cout << a; system("Pause"); // Presupponendo che usi windows return 0; }
|
3 --> Cio che tu chiami "parte di codice" in questo caso è la vera funzione!
Ultima modifica effettuata da The Newbie il 03/09/2010 alle 8:23 |
|
D@vide (Member)
Expert
Messaggi: 450
Iscritto: 30/06/2010
|
Postato originariamente da anthony015:
Scusate l'ignoranza, ma potete spiegarmi dove sta scritta nella funzione math.h la parte di codice che descrive il calcolo della potenza di un numero...
Perché l'ho cercata e non la trovo, o forse la trovo senza capirla |
math.h contiene solo la definizione della funzione, la differenza è abissale. |
|
The Newbie (Member)
Pro
Messaggi: 175
Iscritto: 14/07/2010
|
Postato originariamente da D@vide:
E' contenuta nella "libreria standard" del C.
|
corretto |
|
()
Newbie
Messaggi:
Iscritto:
|
@ The Newbie
Magari mi sono spiegato male, ma lo so che math.h è una libreria, volevo sapere il codice della funzione pow.
@D@vide
Se math.h contiene solo la definizione della funzione, dove è il codice di quest'ultima che le permette di elevare un numero a potenza?
|
|
The Newbie (Member)
Pro
Messaggi: 175
Iscritto: 14/07/2010
|
l'invocazione della funzione pow l'ho scritta già nella riga 12 del codice che ho postato (con tanto di commento) e d'altra parte anche alla fine della nota 2
Codice sorgente - presumibilmente C/C++ |
n = pow(x,y)
// x e' la base
// y è l'esponente
|
tutto chiaro?
Ultima modifica effettuata da The Newbie il 03/09/2010 alle 12:43 |
|
D@vide (Member)
Expert
Messaggi: 450
Iscritto: 30/06/2010
|
Postato originariamente da anthony015:
@D@vide
Se math.h contiene solo la definizione della funzione, dove è il codice di quest'ultima che le permette di elevare un numero a potenza? |
E' contenuta nella "libreria standard" del C.
Edit: stai usando C++, non sò per quale motivo tu non stia utilizzando cmath. Ultima modifica effettuata da D@vide il 03/09/2010 alle 12:48 |
|
()
Newbie
Messaggi:
Iscritto:
|
non usavo cmath perchè nella mia ignoranza non ne conoscevo l'esistenza.
chiedo nuovamente scusa se sto per scrivere una ca***ta, ma si può leggere nella libreria standard del C?
|
|