[linux]librairie math.h

librairie math.h [linux] - C - Programmation

Marsh Posté le 24-01-2005 à 20:01:08    

Bonjour, j'ai un petit probleme, je souhaite utiliser la fonction sqr, ou sqrf sous anjura, le probleme etant que je ne trouve pas dans quelle librairie elle se situe, sous windows elle se trouve dans "math.h", aperement, la non, si quelqu'un peut m'aider ;)  
Merci d'avance !!! :)

Reply

Marsh Posté le 24-01-2005 à 20:01:08   

Reply

Marsh Posté le 24-01-2005 à 20:03:00    

c'est pas plutot sqrt ??


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 24-01-2005 à 20:03:25    

NAME
       sqrt, sqrtf, sqrtl - square root function
 
SYNOPSIS
       #include <math.h>
 
       double sqrt(double x);
 
       float sqrtf(float x);
 
       long double sqrtl(long double x);
 
       Link with -lm.


 
Comme dit le man, "Link with -lm".

Reply

Marsh Posté le 24-01-2005 à 20:13:54    

sqrt powa, tgmath de C99 faisant tout le travail (pas la peine d'avoir 1 nom différent par fonction)

Reply

Marsh Posté le 24-01-2005 à 20:35:12    

Merci, mais comment le faire fonctionner je me prend la tete pour le faire fonctionner, et comme mon prof aime pas linux, il n'a pas pu m'aider ..., si voulez bien jetter un oeil sur mon programe :)
Je doit faire un programe qui calcul une equation du second degrée, avec DELTA :
 
#include <stdio.h>
#include <math.h>
 
main()
{
   int a,b,c;
   float x,x1,x2,delt;
   float sqrt;
   printf("saisir les reelles a,b,c" );
   scanf("%d",&a);
   scanf("%d",&b);
   scanf("%d",&c);
   delt=((b*b)-4*(a*c));
   
   if(delt>0)
   {
      x1=-b-sqrt(delt)/(2*a);
      x2=-b+sqrt(delt)/(2*a);
      printf("delta= %f\n",delt);
      printf("x1= %f\n",x1);
      printf("x2= %f\n",x2);
   }
 
   if(delt=0)
   {
       x=(-b/2*a)
       printf("delta= %f\n",delt);
       printf("x= %f\n",x);
   }
   else
   {
 
       printf("pas de solution" );
 
   }
}
 
MERCI !!!

Reply

Marsh Posté le 24-01-2005 à 20:49:47    

Personne pour m'aider :( ?

Reply

Marsh Posté le 24-01-2005 à 20:57:39    

et c'est quoi le programme ?

Reply

Marsh Posté le 24-01-2005 à 21:01:34    

Comme ecrit dans mon post c'est un programme qui calcul les equations du second degré, je voudrais savoir coment emplyer la fonction SQRT, merci :)

Reply

Marsh Posté le 24-01-2005 à 21:02:05    

et ben c'est bon là non ?

Reply

Marsh Posté le 24-01-2005 à 21:10:24    

tiens j'avais pas ... t'as oublié de déclaré 'int printf;' comme variable

Reply

Marsh Posté le 24-01-2005 à 21:10:24   

Reply

Marsh Posté le 24-01-2005 à 22:46:24    

Atomos a écrit :

et comme mon prof aime pas linux, il n'a pas pu m'aider ...,


 
Rien à voir avec Linux, c'est du code standard...
 

Citation :

si voulez bien jetter un oeil sur mon programe :)
Je doit faire un programe qui calcul une equation du second degrée, avec DELTA :
 
#include <stdio.h>
#include <math.h>
 
main()


[C99] main() doit retourner le type int explicitement.

Citation :


{
   int a,b,c;
   float x,x1,x2,delt;


Les calculs sont plus précis avec le type 'double'

Citation :


   float sqrt;


Euh, non. La fonction sqrt() est déclarée dans math.h. Mieux vaut éviter les conflits!

Citation :


   printf("saisir les reelles a,b,c" );


Manque un espace (lisibilité) et un fflush (stdout) (pas de '\n')

Citation :


   scanf("%d",&a);
   scanf("%d",&b);
   scanf("%d",&c);


Peu de gens savent utiliser *scanf() correctement (tape 'a' pour voir...)
Les autres utilisent fgets() et la fonction de conversion qui va bien.
 
http://mapage.noos.fr/emdel/notes.htm#saisie
 

Citation :


   delt=((b*b)-4*(a*c));
   
   if(delt>0)
   {
      x1=-b-sqrt(delt)/(2*a);
      x2=-b+sqrt(delt)/(2*a);
      printf("delta= %f\n",delt);
      printf("x1= %f\n",x1);
      printf("x2= %f\n",x2);
   }


La logique est fausse. (manque un else)

Citation :


 
   if(delt=0)


La syntaxe est fausse. ('==' et non '=')

Citation :


   {
       x=(-b/2*a)


La syntaxe est fausse. (manque un ; ) C'est dur à voir ça ?

Citation :


       printf("delta= %f\n",delt);
       printf("x= %f\n",x);
   }
   else
   {
       printf("pas de solution" );


manque un \n.

Citation :


   }


Il manque un  
   return 0;

Citation :


}


Message édité par Emmanuel Delahaye le 24-01-2005 à 22:57:33

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 24-01-2005 à 22:52:49    

En vrac :
 
int main(void) au lieu de main. Rajoutes return 0; à la fin du main.
 

Code :
  1. if(delt=0)
  2.    {
  3.        x=(-b/2*a)


Il manque un ;
 

Code :
  1. if(delt=0)


 
C'est == et non =
 

Code :
  1. float sqrt;


 
Et vires ca
 
 
P.S. Tu le compiles ton code ??
Si oui regardes les warnings
 
Edit : Emmanuel tu m'as grillé mais pas sur tout ;)


Message édité par fafounet le 24-01-2005 à 22:54:28
Reply

Marsh Posté le 25-01-2005 à 00:21:13    

à la compilation il faut que tu indique que tu as besoin de la lib math :  
 
gcc -Wall -lm -fichier.c  
 
on avait eu ce probléme en tp, il fallait indiquer à gcc d'utiliser la lib bien qu'elle soit en include


---------------
LoD 4 ever && PWC spirit|Le topak de l'iMP-450|inDATOUNEwe trust
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed