Calcul d'une puissance en C avec pow() [Résolu]

Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
- - Dernière réponse : coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
- 17 nov. 2008 à 19:09
Bonjour, pourriez vous m'aider. Voici mon programme mais celui ci ne marche pas:

#include <stdio.h>
#include <math.h>

main () {

float x, y,z;

printf ("Entrez x : ");
scanf ("%f",&x);
printf ("Entrez y : ");
scanf ("%f",&y);

z = pow(x,y);

printf ("x ^ y = %f \n",z);

}



Message d'erreur pendant la compilation

utilisateur@c402-15:~$ gcc -o td2 td2.c
/tmp/ccAfMwK4.o: In function `main':
td2.c:(.text+0x5f): référence indéfinie vers « pow »
collect2: ld returned 1 exit status

Merci beaucoup :super:
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
3
Merci
salut

gcc -o td2 td2.c -lm

l'option -lm permet de linker la librairie mathematique (qui correspond au header <math.h>)

recompile avec -lm et ca devrait fonctionner

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de coucou747
Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
3
Merci
Merci beaucoup ca marche.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Smallstones2
Messages postés
1
Date d'inscription
lundi 8 août 2005
Dernière intervention
16 novembre 2008
0
Merci
Bonjour Monsieur,
Je suis débutant en C++
J'ai tester ce code mais il affiche des erreurs alors j'ai coorigé les erreurs comme ça :

------------------------------  Le nouveau code C++  ------------------------------------------------
#include <stdio.h>
#include <math.h>

void main ()
{

float x, y;
double z;
printf ("Entrez x : ");
scanf ("%f",&x);
printf ("Entrez y : ");
scanf ("%f",&y);

z = pow(x,y);

printf ("x ^ y = %f \n",z);

}
---------------------------------------------------------------------------------------------------------
Merci
Commenter la réponse de minous2005
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
minous2005, je ne vois pas ce que tu veux dire...
Commenter la réponse de coucou747
Messages postés
31
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
19 juillet 2011
0
Merci
Salut minous2005, tu es vraiment obligé de te servir de la fonction pow()? parce que la faire toi même ne te prendra que 3 ligne.
Commenter la réponse de cs_Morgz
Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
0
Merci
Ne faudrait il pas ajouter un 

return (0);  a la fin pour ta fonction main...???
Commenter la réponse de Smallstones2
Messages postés
31
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
19 juillet 2011
0
Merci
Tiens j'ai fais ça en cours la semaine dernière :

#include <stdio.h>
#include<stdlib.h>

int main()
{
     int x,y,result;
     int i;

     printf("Entrer X : ");
     scanf("%d",&x);

     result = x;

     printf("Entrer Y : ");
     scanf("%d",&y);

     for(i=0; i<y; i++)
     {
           result = result * x;
     }
    
     printf("%d ^ %d  = %d",x,y,result);
      return 0;

Normalement ça devrait etre bon, si tu veux utiliser des floats à mon avis remplace les int par des float et les %d par des %f et ça devrait passer.
Commenter la réponse de cs_Morgz
Messages postés
31
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
19 juillet 2011
0
Merci
Il manque } après le return, sorry ;)
Commenter la réponse de cs_Morgz
Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
0
Merci
Pour ma part, le but était de ne pas utiliser de boucles.
Sinon je ne vois pas pourquoi le prog de minous2005 ne marche pas....

Moi aussi en cours la semaine derniere... Peut etre que l'on suit la meme formation ....lol:
Commenter la réponse de Smallstones2
Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
0
Merci
Il semble que pow() ne prenne en charge que les float.
Si minous2005 veut garder la fonction pow() il faut garder les float.
Commenter la réponse de Smallstones2
Messages postés
31
Date d'inscription
dimanche 24 décembre 2000
Dernière intervention
19 juillet 2011
0
Merci
Il est pas obligé d'utiliser un return 0 vu qu'il à fait un void main(), essaye de mettre int main() et le return 0;
Mais avec quoi tu compiles?

Moi je suis en 3eme année de licence webmaster, et toi? :)
Commenter la réponse de cs_Morgz
Messages postés
6
Date d'inscription
samedi 18 février 2006
Dernière intervention
17 novembre 2008
0
Merci
Personellement avec gcc peut etre a t il le meme probleme que moi...  (voir message précédent)


Sinon je suis en 1 ere année de M.A.S.S
Commenter la réponse de Smallstones2
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
0
Merci
il a resolu son probleme... c'etait un probleme de link, pas de compilation

encore une fois, sans tes messages d'erreurs, on ne peut pas deviner l'erreur.

pour calculer a^b, avec b entier, idealement, on utilise une exponentielle dichotomique

http://www.codyx.org/snippet_exponentiation-dichotomique_384.aspx#1773
Commenter la réponse de coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.