Algorithme de calcule de puissance!!!

ibihel -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je doit écrire un programme itérative qui calcule la puissance d'un entier de la façon suivante :
pour n=26
(((a²*a)²)²*a)²
ma solution est la suivante MERCI de l'avoir corriger
void puissance (int a, int n)
{
int p;
p=1;
while (n>=1)
if ((n%2)==0)
{
p=p*a;
a=a*a;
}
n=n/2;
}

3 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
salut,

pour tester ton algorithme et voir s'il est juste, fait une fonction main() ou tu testes dans une boucle ta fonction avec les puissances de 1 à 20 par exemple, et tu vérifies (avec une claculette éventuellement pour les grosses) que les résultats sont corrects.

cdlt
1
ibihel
 
j'ai testée mais il n'a pas marcher et je ne sais pas ou est la faute
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
tu pourrais nous dire qu'est-ce que tu obtiens ? Qu'est-ce qui ne "marche pas" ?
0
ibihel
 
il y a un problème avec les nombres impaire
j'obtient une résultat fausse
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
en regardant ton code, je ne comprends pas comment ta fonction peut marcher pour n'importe quel nombre, elle n'affiche rien et ne retourne rien.
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
bonjour

un code en VB a traduire en C
\ est la division entière
mod le reste dans la division entière

Function puis(ByVal a As Long, ByVal n As Long) As Long
If n = 0 Then
  puis = 1
Else
  If (n Mod 2) = 0 Then
    puis = puis(a, n \ 2) ^ 2
  Else
    puis = puis(a, n - 1) * a
  End If
End If
End Function


bon courage
0