Algorithme de calcule de puissance!!!

ibihel -  
ccm81 Messages postés 11033 Statut Membre -
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. Pacorabanix Messages postés 4122 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
    1. ibihel
       
      j'ai testée mais il n'a pas marcher et je ne sais pas ou est la faute
      0
    2. Pacorabanix Messages postés 4122 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
  2. ibihel
     
    il y a un problème avec les nombres impaire
    j'obtient une résultat fausse
    0
    1. Pacorabanix Messages postés 4122 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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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