J'essaie de créer une fonction permettant d'élever un nombre à une puissance.
Voila la fonction
// Declaration fonction poweredNumber
int result = 1, number, exposant;
int poweredNumber(number,exposant)
{
while (exposant != 0)
{
result *= number;
exposant --;
return result;
}
}
Lorsque je l'utilise ensuite avec ce code
// Demander à user un nombre et un exposant - lui afficher le nombre après calcul
int main()
{
printf("Quel est votre nombre ?\n");
scanf("%d", &number);
printf("A quelle puissance voulez vous l'élever? \n");
scanf("%d", &exposant);
poweredNumber(number, exposant);
printf("%d puissance de %d, est égal à %d. \n", number, exposant, result);
return 0;
}
Bonjour ! C'est une erreur classique : tu appelles la fonction sans récupérer sa valeur.
Il faut faire :
result = poweredNumber(number, exposant);
Cela dit il y a d'autres erreurs qui suggèrent que tu as mal compris le rôle des différentes variables.
Je corrige la fonction :
// Declaration fonction poweredNumber
int poweredNumber(int number, int exposant) // les deux paramètres doivent être déclarés ici !
{
int result = 1; // la valeur à retourner doit être déclarée ici !
while (exposant != 0)
{
result *= number;
exposant --;
}
return result;
}
Attention : tu as utilisé une seule variable 'result' en variable globale, c'est à éviter (un coup à tout mélanger...) Pour le 'main', je pense qu'il faire ainsi :
int main(void)
{
int result; // le 'result' du programme principal (pas le même que dans la fonction) doit être déclaré ici !
/* les printf et les scanf... */
result = poweredNumber(number, exposant);
/* la fin */
}
Mais à mon avis il serait plus judicieux de ne pas donner les mêmes noms à l'appel et lors de la définition de la fonction.
Note que je viens de corriger l'emplacement du « return result » dans la fonction : tu l'avais mis dans la boucle. Non, c'est une fois sorti de la boucle, lorsque le calcul est complètement terminé, qu'on retourne le résultat.
Évites des puissances aussi élevées. Pour un int tu n'as que 32 bits et même avec un long long tu n'as que 64 bits.
2^64 est environ 10^19.
Autrement, il faudra utiliser des float ou des double.
Le Tout est souvent plus grand que la somme de ses parties.
Home made fnctn pour éléver nmbre à une puissance
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.