PDA

Visualizza la versione completa : funzione calcolo potenza in c


ferra03
19-10-2009, 19:46
Buona sera a tutti, avrei bisogno di un'aiuto devo creare una funzione in c che dati come parametri 2 numeri ( base ed esponente) ne calcoli la potenza, ho provato a fare svariati tentativi ma non sono riuscito a scriverla correttamente.

grazie in anticipo :)

oregon
19-10-2009, 19:47
Prova a mostrarcene uno di questi tentativi ... e dicci che "algoritmo" hai cercato di seguire ...

ferra03
19-10-2009, 19:54
int potenza (int b, int e) {

int i = 0;

for (int i ; i < e; i++) {

b *= b,

return b;
}
}

l'idea iniziale era di far moltiplicare la base con se stessa tante volta quante era l'esponente...

oregon
19-10-2009, 19:58
Ok ... l'idea e' giusta ... pero' ...

1) nella for la sintassi che hai usato non e' corretta ... come va scritta la for? Il valore di partenza di i va nella for ...

2) b deve essere inizializzato prima di iniziare a moltiplicarlo ... va impostato il valore ad 1 in partenza ...

3) il valore di b che viene restituito non deve stare all'interno della for, ma esternamente, alla fine della funzione

ferra03
19-10-2009, 20:09
se inizializzo b uguale ad 1 nella dichiarazione dei parametri della funzione mi da un'errore di questo tipo:

error: expected ';' , ',' , ')' before '=' token

mostec
19-10-2009, 20:28
non si può inizializzare un parametro nella signature della funzione.. tra l'altro non ne capisco neanche il motivo, se lo inizializzi perdi il valore dato in ingresso quindi il senso del parametro svanisce..


in linea di massima a una prima occhiata la tua funzione mi sembra ok.. il return, mettilo fuori dal ciclo!!



nota:
in C puro le dichiarazioni delle variabili locali devono essere la prima cosa all'interno della funzione.
dichiara "int i;" all'inizio poi "i" lo inizializzi nella dichiarazione del for.



...
int i;
....
for (i=0;i<e;i++){
....
}
...



Se il tuo scopo è imparare a programmare io ti consiglierei di approcciare a una soluzione ricorsiva, molto più elegante e utile a fini didattici.. Sarebbe qualcosa di questo tipo:



int potenza(int b, int e){

if (e == 0)
return b;
else
return b*potenza(b, e-1);

}


L'ho buttata lì senza neanche compilarla o provarla, giusto per darti un idea di come potrebbe essere..


Ciao.

oregon
19-10-2009, 20:39
Originariamente inviato da ferra03
se inizializzo b uguale ad 1 nella dichiarazione dei parametri della funzione mi da un'errore di questo tipo:

error: expected ';' , ',' , ')' before '=' token

Volevo dirti di inizializzare ad 1 una variabile ris e calcolare il risultato in questa variabile ...

Ovvero



int potenza(int b, int e)
{
int i, ris;

ris = 1;
for(i=0; i<e; i++)
ris *= b;

return ris;
}

ferra03
19-10-2009, 21:14
ok ora ho capito grazie mille!

Loading