Puissances négatives en C avec boucles

Bonjour,
j'ai fai un prog pour éle ver un nombre n à la puissance p. Mai pour les puissances négativ, ça marche pa.
poutant il parait intact. Ya-t-il une erreur?
Où ça!
Merci!

#include <stdio.h>
#include <stdlib.h>
int main ()
{
float i, n, p, res;
res=1;
printf ("Saisissez un nombre: ");
scanf ("%f", &n);
printf ("Saisissez la puissance que vous voulez lui affecter: ");
scanf ("%f", &p);
if (p>0) for (i=0; i<p; i++)
{
res=res*n;
}
else
{
for (i=0; i<p; i++)
{
res=res*n;
}
}
printf ("%f a la puissance %f = %f\n", n, p, res);
system ("pause");
return 0;
}
Configuration: Windows XP
Safari 532.0

2 réponses

  1. je ne vois pas pourquoi ce code devrait marcher pour les puissances négatives...
    if (p>0) for (i=0; i<p; i++) {
      res=res*n;
    }
    else {
      for (i=0; i<p; i++) {
        res=res*n;
      }
    } 


    c'est exactement le meme code que pour les positifs que tu as indiqué !

    La définition a puissance n = a*a*a*...*a n fois n'est valable que pour les positifs.
    Revois ta définition mathématique de la puissance.

    D'autre part la définition que tu as n'a pas de sens non plus pour les nombres à virgules, p devrait être déclaré en tant qu'entier.
    0
    1. en fait tu mets deux faute grave: *1/res=res*i si la puissance negative!!!!!!!!!!!!
      *02/la puissance tu l'as declare de type reel!
      ;en plus tu dois s'habituer a pa mettre tout ces parenthese: C ne le demande pas
      si le block contient un seul instuction. enfin essaye toujours d'ameliorer l'affichage.

      et voila la réponse

      #include <stdio.h>
      #include <conio.h>
      #include <stdlib.h>
      int main ()
      {
      float i, n, res=1;int p;

      printf ("Saisissez un nombre: ");
      scanf ("%f", &n);
      printf ("Saisissez la puissance que vous voulez lui affecter \n");
      scanf ("%d", &p);
      if (p>0) for (i=0; i<p; i++) res=res*n;

      else for (i=0; i<(-p); i++) res=res/n;

      printf ("%10.3f^%d = %10.3f", n, p, res);
      getch();
      system ("pause");
      return 0;
      }
      0