Puissances négatives en C avec boucles

Fermé
Vlàdmir - 27 déc. 2009 à 13:28
XX3 Messages postés 5 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 20 novembre 2012 - 27 déc. 2009 à 14:29
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;
}

2 réponses

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
27 déc. 2009 à 13:42
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
XX3 Messages postés 5 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 20 novembre 2012
27 déc. 2009 à 14:29
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