N à la puissance P

Fermé
Vlàdmir - 20 déc. 2009 à 12:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 20 déc. 2009 à 16:16
Bonjour, je veux élever le nombre "n" à la puissance "p" mai mon résulta est faux. Pourquoi, s'il vous plait?

#include<stdio.h>
#include<stdlib.h>
int main ()
{
long double i, n, p, res=n;
printf ("Entrez un nombre");
scanf ("%lf", &n);
printf ("Enrez la puissance que vous voulez lui affecter");
scanf ("%lf", &n);
for (i=0; i>p; i++)
{
res=res*n;
}
printf ("Le resultat est: %lf", res);
system ("pause");
return 0;
}
Merci, d'avance!

4 réponses

naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
20 déc. 2009 à 12:11
printf ("Enrez la puissance que vous voulez lui affecter");
scanf ("%lf", &n);

tu as remis &n alors que ça devrait etre &p !
0
vladivostok Messages postés 228 Date d'inscription samedi 6 septembre 2008 Statut Membre Dernière intervention 8 février 2010 20
20 déc. 2009 à 12:17
Bonjour,

Voilà d'une part une puissance n'est jamais à virgule donc t'a variable p ne peut pas être un double mais juste un int.
Dans le même sens ton nombre n doit être un int et non un double.

Encore autre chose essaye de remplacer return 0; par return EXIT_SUCCESS; sa fait un peu plus pro (sa donne toujours l'impression que l'on si connait devant les autres que de marquer 0 c'est juste histoire de ce faire voir je te rassure que cela ne sert strictement a rien;-)

sinon je suis en train de voir. tu essaye d'affecter une variable a une autre variable en ensuite de multiplier cette variable par elle même ?

Un conseil : déjà aère un peu plus ton code (en sautant des lignes avant la fin de ta fonction et juste après le début de ta fonction
int main()
{

/* tu saute une ligne */
/* ton code */
/* tu re-saute une ligne */

}
/* et la c'est obligatoire tu saute au moins une ligne voir un peu plus sinon cela risque de causer de très gros problème à la compilation.*/

encore autre chose essaye en c++ et aussi une librairie existe spécifique au math qui s'appelle devine bien math.h ou maths.h je ne sait plus exactement.

Je regarde sa de mon coté et je poste la réponse au problème en C++ surement.

Bonne chance.
0
deja g revien pas sur ce qui les erreurs ki ont relevé mai y'en a une tres grosse qui reste et ce celleci

for (i=0; i>p; i++)

ce qui voudra dire ke soit tu cherche a calculer par des puissance negatives: seule pour i = 0 detre plus grand que p. ou sinon c 'est une erreur et tu me la corrige en mettant i < p et les problemes par les autres avant moi.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
20 déc. 2009 à 16:16
Salut,

Pas mal d'erreurs.
int main ()
C'est int main(void) qu'il vaut mieux mettre.

long double i, n, p, res=n;
Tu définis tes variables comme des long double alors que tu les traites comme des double dans tes scanf.
Donc par exemple, tu peux définir juste tes variables en double et non en long double (ce que je vais considérer ici) ou alors tu modifies le format de tes scanf et printf.
De plus, tu as mis res=n, mais comme n n'est pas initialisée, res ne contiendra pas une valeur exploitable. Pour la puissance, il faut initialiser res à 1 tout simplement.

printf ("Enrez la puissance que vous voulez lui affecter");
scanf ("%lf", &n);

Tu voulais probablement mettre scanf("%lf",&p); sinon tu écrases la précédente valeur

for (i=0; i>p; i++)
i<p est la bonne condition et non i>p (comme dit dans ton autre post).

printf ("Le resultat est: %lf", res);
Si res est un double, il faut mettre %f et non %lf

system ("pause");
Attention, ce n'est pas portable.

Et enfin, un petit conseil : tu devras mettre la boucle for dans une fonction intitulée puissance, cela rendrait le code plus propre et tu pourrais réutiliser cette fonction par la suite.

Si t'as des questions, n'hésite pas.

Cdlt
0