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

Smallstones2 6 Messages postés samedi 18 février 2006Date d'inscription 17 novembre 2008 Dernière intervention - 13 nov. 2008 à 12:17 - Dernière réponse : coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention
- 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
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 13 nov. 2008 à 12:46
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

Merci coucou747 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

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

Merci Smallstones2 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Smallstones2
minous2005 1 Messages postés lundi 8 août 2005Date d'inscription 16 novembre 2008 Dernière intervention - 16 nov. 2008 à 23:05
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
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 16 nov. 2008 à 23:35
0
Merci
minous2005, je ne vois pas ce que tu veux dire...
Commenter la réponse de coucou747
cs_Morgz 31 Messages postés dimanche 24 décembre 2000Date d'inscription 19 juillet 2011 Dernière intervention - 17 nov. 2008 à 15:37
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
Smallstones2 6 Messages postés samedi 18 février 2006Date d'inscription 17 novembre 2008 Dernière intervention - 17 nov. 2008 à 15:56
0
Merci
Ne faudrait il pas ajouter un 

return (0);  a la fin pour ta fonction main...???
Commenter la réponse de Smallstones2
cs_Morgz 31 Messages postés dimanche 24 décembre 2000Date d'inscription 19 juillet 2011 Dernière intervention - 17 nov. 2008 à 16:00
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
cs_Morgz 31 Messages postés dimanche 24 décembre 2000Date d'inscription 19 juillet 2011 Dernière intervention - 17 nov. 2008 à 16:01
0
Merci
Il manque } après le return, sorry ;)
Commenter la réponse de cs_Morgz
Smallstones2 6 Messages postés samedi 18 février 2006Date d'inscription 17 novembre 2008 Dernière intervention - 17 nov. 2008 à 16:04
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
Smallstones2 6 Messages postés samedi 18 février 2006Date d'inscription 17 novembre 2008 Dernière intervention - 17 nov. 2008 à 16:07
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
cs_Morgz 31 Messages postés dimanche 24 décembre 2000Date d'inscription 19 juillet 2011 Dernière intervention - 17 nov. 2008 à 16:09
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
Smallstones2 6 Messages postés samedi 18 février 2006Date d'inscription 17 novembre 2008 Dernière intervention - 17 nov. 2008 à 16:12
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
coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 17 nov. 2008 à 19:09
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.