Salve a tutti,
questo è il mio primo post in questo forum e sono anche alle prime armi con la programmazione quindi spero di non chiedere un' ovvietà
È da poco che ho cominciato a "studiare" il manuale "C. Corso completo di programmazione" di HM e PJ Dietel e ho incontrato la prima difficoltà nel scrivere un programma che legga in input un numero e restituisca la costante di Euler (2.7182...) elevata a quel numero utilizando la formula

e^x = 1 + (x/1!) + (x^2/2!) + (x^3/3!) + ...

Ho scritto il seguente codice (che non funziona...) ma non riesco a trovare dove sbaglio:


/*visualizza e^x*/

#include <stdio.h>
#include <math.h>

int main ()
{
int cont = 5, cont_num = 5, cont_den = 5;
int p, d, m, x;
float e = 1;

printf("Inserisci un numero: ");
scanf("%d", &x);

while (cont > 0) {

/*numeratore*/
p = pow(x, cont_num);
cont_num--;

/*denominatore*/
d = cont_den;
m = cont_den;
while (cont_den >= 1) {
d = d * --m;
}
cont_den--;

/*e^x*/

e = e + ((float) p / (float) d);

printf("e^%d = %f", x, e);
cont--;
}

system("PAUSE");
return 0;
}


Mi scuso se il codice dovesse essere incasinato o completamente sbagliato.

Come compilatore utilizzo DevC++.
Spero che qualcuno riesca ad aiutarmi a trovare dove sbaglio, in tal caso ringrazio anticipatamente.

saluti
cyimus

P.S.: purtroppo guardando l'anteprima mi sono accorto che il codice non mantiene il layot che ho utilizzato per scriverlo quindi risulterà pressochè illeggibile...