Problème Logarithme

Fermé
Ella - 8 janv. 2007 à 18:24
 ouz - 18 déc. 2007 à 17:50
Bonjour, j'ai un petit probkème.
Voila, j'ai un algo en C qui tourne très bien.
Seulement, je dois calculer le logarithme d'un résultat de ce programme et je sais qu'il faut utiliser le prototype : double log(double x).
Mais le probl-me c'est comment l'utiliser et où ?
A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 janv. 2007 à 08:31
Salut.
tu n'a pas besoin de metttre double log(double x)
la fonction est deja defini dans math.h !
double log(double x)
{double y=0;
y=log(x);
return(y);
}
cré forcement une erreur de segmentation, car tu fait une fonction défini de manière récursive sans point de sortie !
à chaque appel de log(x) tu appel log(x) qui appel log (x) qui .... (tu as compris?)
la solu de manu devrai fonctionner, si ce n'ai pas le cas, tu as un problème d'installation.
Pour le link avec l'option -lm c'est pas obligatoire : certain compilo le font par défaut, mais à mettre si ça ne compil pas sans.
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 janv. 2007 à 09:00
je voi pas ou est le problème.
tu veux le log de x dans y :
y=log(x);
Rien de plus simple... Ou alors tu n'en dit pas assez
0
Non justement ca ne marche pas.

J'ai tenté de faire un petit programme pour avoir le log neperien d'un nombre et j'ai toujours le même message "Erreur de segmentation" a l'execution.

Voila le programme :
#include <math.h>
#include <stlib.h>
#include <stdio.h>

double log(double x);

int main ()
{double f=2;
double resultat = 0;

resultat = log(f);
}

double log(double x)
{double y=0;
y=log(x);

return(y);
}

Je ne comprends pas d'où vient le problème.
0
doc manu Messages postés 6 Date d'inscription samedi 28 octobre 2006 Statut Membre Dernière intervention 10 janvier 2007
10 janv. 2007 à 00:02
Salut, essaie plutot :

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

int main()
{
  double a,b ;
  b = 2.;
  a = log(b);
  printf("le logarithme de %f vaut %f \n",b,a);
}


Il ne faut pas oublier de linker avec la lib math :
cc test.c -lm
0
C'est clair, rien à ajouté
0