Algorithme de calcule de puissance!!!

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

  1. 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
    1. il y a un problème avec les nombres impaire
      j'obtient une résultat fausse
      1. 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.
    2. 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. j'ai testée mais il n'a pas marcher et je ne sais pas ou est la faute
      2. tu pourrais nous dire qu'est-ce que tu obtiens ? Qu'est-ce qui ne "marche pas" ?