Oppure

Loading
26/02/09 9:05
gigisoft
Postato originariamente da HeDo:

Postato originariamente da trenta3:

Grazie a tutti, ho già rimediato:

Sono andato nell'header Math.h e ho preso le funzioni inerenti a pow(), ora il programma và alla perfezione.




Grazie a tutti!

:D:D:D


beh ovvio, con i prototipi delle funzioni già pronte stai usando le built-in, bravo bravo

non hai risolto il tuo problema, lo hai aggirato


beh in effetti non e' cosi' che si risolvono i problemi...
comunque, se puo' servire, basta ricordarsi che:

a^b = e^(b*ln(a)) per ogni a e b con a > 0

ciao.
aaa
26/02/09 18:23
trenta3
Postato originariamente da gigisoft:

beh in effetti non e' cosi' che si risolvono i problemi...
comunque, se puo' servire, basta ricordarsi che:

a^b = e^(b*ln(a)) per ogni a e b con a > 0

ciao.



Il mio problema è proprio questo:
come faccio ad elevare e (che corrisponde a 2,71828183...) alla (b*ln(a)):-?
Cioè a me andrebbe ancora meglio una funzione che calcoli la potenza di numeri double ma, essendo e = 2,71828183... come posso elevarlo alla (b*ln(a)):-?
Avrei bisogno di una funzione che prenda come base un double e come esponente un double e ciò mi farebbe imbattere in un ciclo infinito.
Se anche (b*ln(a)) dovesse venire intero non riuscirei con tutti i numeri.

Spero di non aver detto cavolate dicendo che (b*ln(a)) viene double, mi sono documentato su wikipedia ma non ci ho capito molto.

Grazie comunque per l'interessamento, gigisoft.
Ultima modifica effettuata da trenta3 26/02/09 18:25
aaa
26/02/09 18:30
theprogrammer
Ma non avevi risolto con la pow ?
aaa
27/02/09 10:06
gigisoft
Postato originariamente da trenta3:

Postato originariamente da gigisoft:

beh in effetti non e' cosi' che si risolvono i problemi...
comunque, se puo' servire, basta ricordarsi che:

a^b = e^(b*ln(a)) per ogni a e b con a > 0

ciao.



Il mio problema è proprio questo:
come faccio ad elevare e (che corrisponde a 2,71828183...) alla (b*ln(a)):-?
Cioè a me andrebbe ancora meglio una funzione che calcoli la potenza di numeri double ma, essendo e = 2,71828183... come posso elevarlo alla (b*ln(a)):-?
Avrei bisogno di una funzione che prenda come base un double e come esponente un double e ciò mi farebbe imbattere in un ciclo infinito.
Se anche (b*ln(a)) dovesse venire intero non riuscirei con tutti i numeri.

Spero di non aver detto cavolate dicendo che (b*ln(a)) viene double, mi sono documentato su wikipedia ma non ci ho capito molto.

Grazie comunque per l'interessamento, gigisoft.


beh... scusa, forse la mia risposta non era completa, il fatto e' che e^x e' una funzione nota, esiste un algoritmo per calcolarla numericamente ( tra l'altro nella libreria "math" dovrebbe esserci la funzione exp(x) che usa tale algoritmo )
dopodiche' puoi procedere come dicevo nell'altro post.

Ciao.
aaa
27/02/09 19:26
trenta3
Penso di essere ad un passo dalla soluzione:

Mi era venuto un dubbio, quindi ho provato a compilare ed a eseguire questo codice:
#include <stdio.h>
#include <conio.h>

int main(){
double f = 44.6;
int fd = (int)f; 
printf("%f\n %f\n ",f,fd);
getch();
return 0;
}



Provate a vedere cosa succede: a me stampa:

44.60000000
qui dopo poi mi stampa un numero inscrivibile, che non è affatto 44.

Penso che questo sia il problema principale, visto che nel mio pezzo di codice faccio molte conversioni da double a int ed a long int.

Chiedo a voi: come potrei risolvere questo:-?
aaa
27/02/09 19:30
theprogrammer
Fai attenzione ... un intero va visualizzato con lo switch %d e non con lo switch %f

Deve essere

printf("%f\n %d\n ",f,fd);

e non

printf("%f\n %f\n ",f,fd);
aaa
03/03/09 17:21
vincent_vega
    for (i=1; i<=exp; i++){
         n*=base;
    }
il corpo della funzione int integerpower(base,exp) il return decidi te dove inserirlo.
inizializza n=1 come variabile globale.
Se cercava la funzione pow non credo sarebbe stato un esercizio molto interessante ai fini didattici.
ciao
aaa