Algorithme de calcule de puissance!!!

Fermé
ibihel - 31 mars 2011 à 13:16
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 - 31 mars 2011 à 15:20
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
Modifié par Pacorabanix le 31/03/2011 à 13:18
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
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
31 mars 2011 à 13:25
tu pourrais nous dire qu'est-ce que tu obtiens ? Qu'est-ce qui ne "marche pas" ?
0
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 jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
31 mars 2011 à 13:41
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 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
31 mars 2011 à 15:20
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