Puissances négatives en C avec boucles
Vlàdmir
-
XX3 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
XX3 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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;
}
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
je ne vois pas pourquoi ce code devrait marcher pour les puissances négatives...
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.
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.
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;
}
*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;
}