Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2850 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] message d erreur a la compilation (linking)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] message d erreur a la compilation (linking)

n°297189
TiTan91
Posté le 30-01-2003 à 17:30:33  profilanswer
 


mon 1er pb est resolu mais j en ai un autre (voir sous les deux premiers messages avec code source)
je laisse le meme sujet pour les codes ;)
 
_____________________________________________

 
j avais un prog qui marchait, g change qq printf et ca marche plus  :??:  
 
je pense que l erreur vient des variable qui ont pour la plupart kom valeurs (qd je les affiche)
-1.#IND00 et 1.#QNAN0
 
ca veux dire koi ???
c du a koi ???
comment reparer ???
 
 
 
merci


Message édité par TiTan91 le 30-01-2003 à 22:16:47
mood
Publicité
Posté le 30-01-2003 à 17:30:33  profilanswer
 

n°297193
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-01-2003 à 17:32:55  profilanswer
 

poste le code qui foire stp


---------------
J'ai un string dans l'array (Paris Hilton)
n°297215
TiTan91
Posté le 30-01-2003 à 17:44:57  profilanswer
 

le pb c ke g pas mis bcp de commentaire et k il y a 6 fichiers avec des formules assez lourdes...
 
je peux tjs mettre qq fich seulement (le pb semble deja etre presnt la)
 
deuxieme.c

Code :
  1. #include<math.h>
  2. #define delta b*b-4*a*c
  3. #define epsilon 1e-6
  4. static double rDbl, rRe1, rRe2, rIm1, rIm2;
  5. int deuxieme(double a, double b, double c)
  6. {
  7. if (fabs(delta)<=epsilon)
  8. {
  9.  rDbl=-b/(2*a);
  10.  return 3;
  11. }
  12. else if (delta>epsilon)
  13. {
  14.  rRe1=(-b+sqrt(delta))/(2*a);
  15.  rRe2=(-b-sqrt(delta))/(2*a);
  16.  return 2;
  17. }
  18. else if (delta<-epsilon)
  19. {
  20.  if (fabs(b)<=epsilon)
  21.  {
  22.   rIm1=sqrt(-c/a);
  23.   rIm2=-sqrt(-c/a);
  24.   return 4;
  25.  }
  26.  else
  27.  {
  28.   rRe1=-b/(2*a);
  29.   rIm1=sqrt(delta)/(2*a);
  30.   rRe2=-b/(2*a);
  31.   rIm2=-sqrt(delta)/(2*a);
  32.   return 6;
  33.  }
  34. }
  35. else
  36. {
  37.  return -1;
  38. }
  39. }
  40. // fonctions de retour des solutions
  41. double getDbl()
  42. {
  43. return rDbl;
  44. }
  45. double getRe1()
  46. {
  47. return rRe1;
  48. }
  49. double getIm1()
  50. {
  51. return rIm1;
  52. }
  53. double getRe2()
  54. {
  55. return rRe2;
  56. }
  57. double getIm2()
  58. {
  59. return rIm2;
  60. }


 
testDeuxieme.c

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>   // contient la fonction "rand()"
  3. #include <math.h>
  4. #include "deuxieme.h"
  5. #define epsilon 1e-6
  6. static double a, b, c, rDbl, rRe1, rRe2, rIm1, rIm2;
  7. static int i;
  8. // fonction de definition des coefficients pour les tests
  9. void test2()
  10. {
  11. // test d une racine double
  12. a=1;
  13. b=2;
  14. c=1;
  15. testDeuxieme();
  16. // test de 2 racines reelles
  17. a=1;
  18. b=4;
  19. c=1;
  20. testDeuxieme();
  21. // test de 2 racines imaginaires
  22. a=1;
  23. b=0;
  24. c=2;
  25. testDeuxieme();
  26. // test de 2 racines complexes
  27. a=2;
  28. b=-1;
  29. c=2;
  30. testDeuxieme();
  31. // 10000 tests aleatoires
  32. for (i=0 ; i<10000 ; i++)
  33. {
  34.  a=rand()%2000-1000;
  35.  b=rand()%2000-1000;
  36.  c=rand()%2000-1000;
  37.  testDeuxieme();
  38. }
  39. printf("Programme de test du deuxieme degre termine\n" );
  40. }
  41. // fonction de test des valeurs retournees
  42. int testDeuxieme()
  43. {
  44. if (3==deuxieme(a,b,c))
  45. {
  46.  rDbl=getDbl();
  47.  if (fabs(a*rDbl*rDbl+b*rDbl+c) > epsilon)
  48.  {
  49.   printf("test racine double echoue\n a=%lf\n b=%lf\n c=%lf\n", a, b, c);
  50.  }
  51. }
  52. else if (2==deuxieme(a,b,c))
  53. {
  54.  rRe1=getRe1();
  55.  rRe2=getRe2();
  56.  if (fabs(a*rRe1*rRe1+b*rRe1+c) > epsilon ||
  57.   fabs(a*rRe2*rRe2+b*rRe2+c) > epsilon)
  58.  {
  59.   printf("test racines reelles echoue\n a=%lf\n b=%lf\n c=%lf\n", a, b, c);
  60.  }
  61. }
  62. else if (4==deuxieme(a,b,c))
  63. {
  64.  rIm1=getIm1();
  65.  rIm2=getIm2();
  66.  if (fabs(-a*rIm1*rIm1+c) > epsilon ||
  67.   fabs(b*rIm1) > epsilon ||
  68.   fabs(-a*rIm2*rIm2+c) > epsilon ||
  69.   fabs(b*rIm2) > epsilon)
  70.  {
  71.   printf("test racines imaginaires echoue\n a=%lf\n b=%lf\n c=%lf\n", a, b, c);
  72.  }
  73. }
  74. else if(6==deuxieme(a,b,c))
  75. {
  76.  rRe1=getRe1();
  77.  rRe2=getRe2();
  78.  rIm1=getIm1();
  79.  rIm2=getIm2();
  80.  if (fabs(a*rRe1*rRe1-a*rIm1*rIm1+b*rRe1+c) > epsilon ||
  81.   fabs(2*a*rRe1*rIm1+b*rIm1) > epsilon ||
  82.   fabs(a*rRe2*rRe2-a*rIm2*rIm2+b*rRe2+c) > epsilon ||
  83.   fabs(2*a*rRe2*rIm2+b*rIm2) > epsilon)
  84.  {
  85.   printf("test racines complexes echoue\n a=%lf\n b=%lf\n c=%lf\n", a, b, c);
  86.  }
  87. }
  88. else
  89. {
  90.  printf("erreur d'execution du deuxieme degre" );
  91. }
  92. return 0;
  93. }


Message édité par TiTan91 le 30-01-2003 à 17:48:31
n°297300
youdontcar​e
Posté le 30-01-2003 à 18:40:23  profilanswer
 

titan91 a écrit :

ca veux dire koi ???
c du a koi ???
comment reparer ???

NaN = Not a Number
IND = indéfini (je pense)
 
bref, tu divises qq part par zéro, tu essayes de calculer une racine négative, bref tu fais des trucs pas catholiques. -> debuggues !

n°297480
TiTan91
Posté le 30-01-2003 à 20:48:00  profilanswer
 

vi en fait ca m avance pas...
y a avais bien un cas d erreur dans le deuxieme.c (a=0)
mais le pb c dans le fichier pour le degre suivant...
 
mais la y a tt un pb mathematique avant... :(

n°297508
TiTan91
Posté le 30-01-2003 à 21:13:42  profilanswer
 

voial le code de mon troisieme.c
 
le pb c que la variable yIm1 (parmis d autres) prend pour valeur l un des  exemple ci dessus
yIm1=zIm1 et zIm1 est defini vers la fin de ce code
 

Code :
  1. #include <math.h>
  2. #include "deuxieme.h"
  3. #define epsilon 1e-6
  4. #define Pi 3.14159265
  5. static int cas0, cas1, cas2;
  6. static double zDbl, zRe, zRe1, zRe2, zIm1, zIm2, yDbl, yRe, yRe1, yRe2, yIm1, yIm2;
  7. // fonction pour l equation en y
  8. int troisieme1(double b3, double b2, double b1, double b0)
  9. {
  10. cas0=troisieme2( b1/b3 - (b2*b2)/(3*b3*b3) , b0/b3 + 2*pow(b2/(3*b3),3) - (b2*b1)/(3*b3*b3) );
  11. if (cas0==24)
  12. {
  13.  yRe = zRe - b2/(3*b3);
  14.  yRe1 = zRe1 - b2/(3*b3);
  15.  yIm1 = zIm1;
  16.  yRe2 = zRe2 - b2/(3*b3);
  17.  yIm2 = zIm2;
  18.  if (fabs(yRe1) < epsilon && fabs(yRe2) < epsilon)
  19.  {
  20.   return 16;
  21.  }
  22.  else
  23.  {
  24.   return 24;
  25.  }
  26. }
  27. if (cas0==16)
  28. {
  29.  yRe = zRe - b2/(3*b3);
  30.  yRe1 = -b2/(3*b3);
  31.  yIm1 = zIm1;
  32.  yRe2 = -b2/(3*b3);
  33.  yIm2 = zIm2;
  34.  if (fabs(yRe1) < epsilon && fabs(yRe2) < epsilon)
  35.  {
  36.   return 16;
  37.  }
  38.  else
  39.  {
  40.   return 24;
  41.  }
  42. }
  43. if (cas0==9)
  44. {
  45.  yRe = zRe - b2/(3*b3);
  46.  yDbl = zDbl - b2/(3*b3);
  47.  return 9;
  48. }
  49. if (cas0==8)
  50. {
  51.  yRe = zRe - b2/(3*b3);
  52.  yRe1 = zRe1 - b2/(3*b3);
  53.  yRe2 = zRe2 - b2/(3*b3);
  54.  return 8;
  55. }
  56. return -1;
  57. }
  58. // fonction pour l equation en z
  59. int troisieme2(double p, double q)
  60. {
  61. // definition du cas a appliquer grace a la fonction du second degre
  62. if (p>=0)
  63. {
  64.  cas1=deuxieme(1, q, -pow(p/3, 3));
  65. }
  66. else
  67. {
  68.  cas1=deuxieme(1, q, pow(-p/3, 3));
  69. }
  70. if (cas1==2)  // 1er cas : 1 racine reelle et 2 racines complexes
  71. {
  72.  if (getRe1()>=0 && getRe2()>=0)
  73.  {
  74.   zRe = pow(getRe1(), 1./3.) + pow(getRe2(), 1./3.);
  75.  }
  76.  else if (getRe1()>=0 && getRe2()<0)
  77.  {
  78.   zRe = pow(getRe1(), 1./3.) - pow(-getRe2(), 1./3.);
  79.  }
  80.  else if (getRe1()<0 && getRe2()>=0)
  81.  {
  82.   zRe = -pow(-getRe1(), 1./3.) + pow(getRe2(), 1./3.);
  83.  }
  84.  else
  85.  {
  86.   zRe = -pow(-getRe1(), 1./3.) - pow(-getRe2(), 1./3.);
  87.  }
  88.  cas2=deuxieme(1, zRe, p+zRe*zRe);
  89.  if (cas2==6)
  90.  {
  91.   zRe1=getRe1();
  92.   zIm1=getIm1();
  93.   zRe2=getRe2();
  94.   zIm2=getIm2();
  95.   return 24;
  96.  }
  97.  else if (cas2==4)
  98.  {
  99.   zIm1=getIm1();
  100.   zIm2=getIm2();
  101.   return 16;
  102.  }
  103.  else
  104.  {
  105.   return -1;
  106.  }
  107. }
  108. else if (cas1==3)  // 2eme cas : 1 racine reelle et 1 racine double
  109. {
  110.  if (q>=0)
  111.  {
  112.   zDbl = pow(q/2, 1./3.);
  113.   zRe = -2*pow(q/2, 1./3.);
  114.  }
  115.  else
  116.  {
  117.   zDbl = -pow(-q/2, 1./3.);
  118.   zRe = 2*pow(-q/2, 1./3.);
  119.  }
  120.  return 9;
  121. }
  122. else if (cas1==6)  // 3eme cas : 3 racines reelles
  123. {
  124.  zRe = 2 * sqrt(-p/3)
  125.    * cos(atan(fabs(getIm1())/getRe1())/3);
  126.  zRe1 = 2 * sqrt(-p/3)
  127.     * cos((atan(fabs(getIm1())/getRe1())+2*Pi)/3);
  128.  zRe2 = 2 * sqrt(-p/3)
  129.     * cos((atan(fabs(getIm1())/getRe1())+4*Pi)/3);
  130.  return 8;
  131. }
  132. else if (cas1==4)  // 3eme cas (avec partie reelle nulle pour la solution du 2e degre) : 3 racines reelles
  133. {
  134.  zRe = 2 * sqrt(-p/3) * cos(Pi/6);
  135.  zRe1 = 2 * sqrt(-p/3) * cos(Pi/6 + 2*Pi/3);
  136.  zRe2 = 2 * sqrt(-p/3) * cos(Pi/6 + 4*Pi/3);
  137.  return 8;
  138. }
  139. else
  140. {
  141.  return -1;
  142. }
  143. }
  144. // fonctions de retour des solutions
  145. double getyDbl()
  146. {
  147.  return yDbl;
  148. }
  149. double getyRe()
  150. {
  151.  return yRe;
  152. }
  153. double getyRe1()
  154. {
  155.  return yRe1;
  156. }
  157. double getyRe2()
  158. {
  159.  return yRe2;
  160. }
  161. double getyIm1()
  162. {
  163.  return yIm1;
  164. }
  165. double getyIm2()
  166. {
  167.  return yIm2;
  168. }


Message édité par TiTan91 le 30-01-2003 à 21:16:59
n°297529
TiTan91
Posté le 30-01-2003 à 22:14:23  profilanswer
 

g trouve d ou ca vient  :D  
 
mais g un autre pb
 
quand je remplace ca :

Code :
  1. if (fabs(b3*Re*Re*Re+b2*Re*Re+b1*Re+b0) > epsilon ||
  2.   fabs(b3*Re1*Re1*Re1-3*b3*Re1*Im1*Im1+b2*Re1*Re1-b2*Im1*Im1+b3*Re1+b0) > epsilon ||
  3.   fabs(3*b3*Re1*Re1*Im1-b3*Im1*Im1*Im1+2*b2*Re1*Im1+b1*Im1) > epsilon ||
  4.   fabs(b3*Re2*Re2*Re2-3*b3*Re2*Im2*Im2+b2*Re2*Re2-b2*Im2*Im2+b3*Re2+b0) > epsilon ||
  5.   fabs(3*b3*Re2*Re2*Im2-b3*Im2*Im2*Im2+2*b2*Re2*Im2+b1*Im2) > epsilon)
  6.  {
  7.   printf("test troisieme degre echoue avec 1 racine reelle et 2 racines complexes retournees\n" );
  8.   printf("coefficients testes :\n b3=%lf\n b2=%lf\n b1=%lf\n b0=%lf\n", b3, b2, b1, b0);
  9.   printf("racines retournees :\n %lf\n %lf + %lfj\n %lf + %lfj\n\n", Re, Re1, Im1, Re2, Im2);
  10.  }


 
par ca :

Code :
  1. if (fabs(b3*Re*Re*Re+b2*Re*Re+b1*Re+b0) > epsilon)
  2.  {
  3.   printf("Re %lf\n", Re);
  4.  }


 
ca me met ces erreurs :
Linking...
premier.obj : error LNK2005: _premier already defined in deuxieme.obj
premier.obj : error LNK2005: _getSol already defined in deuxieme.obj
Debug/resolution d equation.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

 
ca veux dire quoi ?


Message édité par TiTan91 le 30-01-2003 à 22:17:39
n°297672
Musaran
Cerveaulté
Posté le 31-01-2003 à 04:18:55  profilanswer
 

Code :
  1. printf("%f" //afficher un double
  2. printf("%lf" //afficher un long double, si ce type existe

Le piège, c'est que c'est pas les mêmes pour scanf.
 
Cela dit, je ne vois pas le rapport avec tes messages d'erreur.
Le dernier signifie que tu défnis deux fois ces fonctions ou variables globales, probablement en les mettant dans un header inclus deux fois.
Les 'const' globales ne sont pas partageables par header en C.
 
Conseils:
-Une modification à la fois.
-Compiler à chaque fois.
-N'ignorer aucune alerte.
-Augmenter le niveau d'alerte.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] message d erreur a la compilation (linking)

 

Sujets relatifs
[ORACLE][PHP] erreur ORA-12154 intermittente[Tomcat] Erreur lors du déploiement d'une web-app
[C] Erreur 'multiple definition' à la compiliation !!?[VB6] erreur 430 avec Windows 98 et le FileSystemObject
Avertir d'un nouveau message par clignotement dans la barre des tâchesErreur en pascal, je pige pas???
Où est l'erreur??[JS] aidez moi a trouver l'erreur svp
[PHP] Erreur dans MyNews v1.2 ! [Résolu]Arrrghh elle est ou l'erreur ???
Plus de sujets relatifs à : [C] message d erreur a la compilation (linking)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR