[C++] bibliothèque math ?!
Fermé
Utilisateur anonyme
-
27 janv. 2008 à 23:20
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 févr. 2008 à 14:11
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 févr. 2008 à 14:11
A voir également:
- Bibliothèque math c++
- Formule math - Télécharger - Études & Formations
- Photo math - Télécharger - Études & Formations
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Logiciels
- Point d'entrée introuvable dans KERNEL32.dll ✓ - Forum Windows
8 réponses
Pacorabanix
Messages postés
3248
Date d'inscription
jeudi 23 août 2007
Statut
Membre
Dernière intervention
19 mai 2013
661
28 janv. 2008 à 01:53
28 janv. 2008 à 01:53
Bonjour,
1)indique les erreurs que tu obtiens stp !
2)Dans le standard c++ la bibliotheque des fonctions mathématiques est <cmath> il me semble.
Mais par contre, je ne vois nul part où tu utilises une quelconque fonctions issue de la bibliothèque maths !
1)indique les erreurs que tu obtiens stp !
2)Dans le standard c++ la bibliotheque des fonctions mathématiques est <cmath> il me semble.
Mais par contre, je ne vois nul part où tu utilises une quelconque fonctions issue de la bibliothèque maths !
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
28 janv. 2008 à 08:52
28 janv. 2008 à 08:52
Pacorabanix a raison.
Soit tu inclu <cmath> soit <math.h>, et tu lie ensuite avec -lm (libm.a, la bibliothèque mathématique)
Soit tu inclu <cmath> soit <math.h>, et tu lie ensuite avec -lm (libm.a, la bibliothèque mathématique)
Utilisateur anonyme
2 févr. 2008 à 23:25
2 févr. 2008 à 23:25
Salut,
Pour la bibliothèque math, je l'ai ajoutée car je voulais calculer quelques fonctions trigonométriques à l'aide des vecteurs, mais c'était dur..
Les erreurs qu'on me fasse sortir sont :
main.cpp(6) : error C2065: 'vecteur_3D' : undeclared identifier
main.cpp(6) : error C2146: syntax error : missing ';' before identifier 'V1'
main.cpp(6) : error C2065: 'V1' : undeclared identifier
main.cpp(7) : error C2146: syntax error : missing ';' before identifier 'V2'
main.cpp(7) : error C2065: 'V2' : undeclared identifier
main.cpp(8) : error C2146: syntax error : missing ';' before identifier 'VRES'
main.cpp(8) : error C2065: 'VRES' : undeclared identifier
main.cpp(15) : error C2146: syntax error : missing ';' before identifier 'cout'
main.cpp(14) : error C3861: 'deplacement': identifier not found
Merci par l'avance.
Pour la bibliothèque math, je l'ai ajoutée car je voulais calculer quelques fonctions trigonométriques à l'aide des vecteurs, mais c'était dur..
Les erreurs qu'on me fasse sortir sont :
main.cpp(6) : error C2065: 'vecteur_3D' : undeclared identifier
main.cpp(6) : error C2146: syntax error : missing ';' before identifier 'V1'
main.cpp(6) : error C2065: 'V1' : undeclared identifier
main.cpp(7) : error C2146: syntax error : missing ';' before identifier 'V2'
main.cpp(7) : error C2065: 'V2' : undeclared identifier
main.cpp(8) : error C2146: syntax error : missing ';' before identifier 'VRES'
main.cpp(8) : error C2065: 'VRES' : undeclared identifier
main.cpp(15) : error C2146: syntax error : missing ';' before identifier 'cout'
main.cpp(14) : error C3861: 'deplacement': identifier not found
Merci par l'avance.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 févr. 2008 à 08:39
4 févr. 2008 à 08:39
Compris.
Tu ne déclare pas vecteur_3D dans main.cpp, il ne peut pas deviner à quoi ce type se rapporte si tu ne lui dit pas.
Il te suffit d'inclure vecteur_3.h dans main.cpp, et ça devrais passer.
des conseils sur ton prog :
* n'inclu pas math.h dans vecteur_3D.h mais dans vecteur_3D.cpp. En effet, tu n'en a pas besoin dans le premier fichier, mais seulement dans le deuxième. Ce n'est pas obligatoire, mais c'est plus propre.
* inclus des "chiens de garde" dans ton .h ! ça évite les inclusions multiple qui peuvent déclanchés des erreurs de compilation :
Pour l'instant ton programme est simple, mais si un jour tu as un programme plus complexe ça te sera utile, c'est une bonne habitude à prendre.
Tu ne déclare pas vecteur_3D dans main.cpp, il ne peut pas deviner à quoi ce type se rapporte si tu ne lui dit pas.
Il te suffit d'inclure vecteur_3.h dans main.cpp, et ça devrais passer.
des conseils sur ton prog :
* n'inclu pas math.h dans vecteur_3D.h mais dans vecteur_3D.cpp. En effet, tu n'en a pas besoin dans le premier fichier, mais seulement dans le deuxième. Ce n'est pas obligatoire, mais c'est plus propre.
* inclus des "chiens de garde" dans ton .h ! ça évite les inclusions multiple qui peuvent déclanchés des erreurs de compilation :
#ifndef _VECTEUR_3D #define _VECTEUR_3D ...// ton .h tel quell #endif
Pour l'instant ton programme est simple, mais si un jour tu as un programme plus complexe ça te sera utile, c'est une bonne habitude à prendre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
7 févr. 2008 à 21:38
7 févr. 2008 à 21:38
Bonsoir,
J'ai supprimé au fait le header <cmath> car je m'en servirai pas pour le moment. J'ai aussi inclu le #include"vecteur_3D.h" dans mon fichier main (je me suis pas aperçue que je l'ai omis, c'est bête de ma part ). Enfin, j'ai ajouté les "chiens de garde" comme tu me l'as conseillé, et je veillerai à ce que je les mette toujours dans mes fichiers .h, merci !
Juste me reste une petite question, on m'affiche toujours des erreurs et elles se situent toutes au niveau de cette ligne :
Elle est mal écrite ?
Bonne soirée :)
J'ai supprimé au fait le header <cmath> car je m'en servirai pas pour le moment. J'ai aussi inclu le #include"vecteur_3D.h" dans mon fichier main (je me suis pas aperçue que je l'ai omis, c'est bête de ma part ). Enfin, j'ai ajouté les "chiens de garde" comme tu me l'as conseillé, et je veillerai à ce que je les mette toujours dans mes fichiers .h, merci !
Juste me reste une petite question, on m'affiche toujours des erreurs et elles se situent toutes au niveau de cette ligne :
friend ostream &operator<<(ostream &, vecteur_3D &);
Elle est mal écrite ?
Bonne soirée :)
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 févr. 2008 à 08:56
8 févr. 2008 à 08:56
Salut.
Je ne vois pas d'où viens le problème. C'est quoi l'erreur ?
Autre remarque sur void operator=(vecteur_3D &V);.
je te conseil plutôt const vecteur_3D operator=(const vecteur_3D &V);
Le type retourné est vecteur_3D, car en C il est possible d'écrire "A=B=C;", donc pour être cohérent, retourne la valeur, ce qui te permettra de faire pareil.
pour le const devant l'argument V, c'est parceque V n'est pas sensé être modifié par cette fonction. Je crois alors que si tu lui passe un const vecteur_3D ça devrai planter, car le & rend modifiable la variable, ce qui est incompatible avec le type const.
Par exemple, en general si tu écris : A=B+C; en fait tu fais A.operator=(operator+(B,C)); , et operator+ renvoie dans le cas général un const vecteur_3D (ce qui est logique, B+C n'a pas vocation à être modifier B+C=D n'a pas vraiment de sens).
J'espère que tu comprends ce que j'ai voulu t'expliquer, je me rends compte que ce n'es pas surper clair.
Je ne vois pas d'où viens le problème. C'est quoi l'erreur ?
Autre remarque sur void operator=(vecteur_3D &V);.
je te conseil plutôt const vecteur_3D operator=(const vecteur_3D &V);
Le type retourné est vecteur_3D, car en C il est possible d'écrire "A=B=C;", donc pour être cohérent, retourne la valeur, ce qui te permettra de faire pareil.
pour le const devant l'argument V, c'est parceque V n'est pas sensé être modifié par cette fonction. Je crois alors que si tu lui passe un const vecteur_3D ça devrai planter, car le & rend modifiable la variable, ce qui est incompatible avec le type const.
Par exemple, en general si tu écris : A=B+C; en fait tu fais A.operator=(operator+(B,C)); , et operator+ renvoie dans le cas général un const vecteur_3D (ce qui est logique, B+C n'a pas vocation à être modifier B+C=D n'a pas vraiment de sens).
J'espère que tu comprends ce que j'ai voulu t'expliquer, je me rends compte que ce n'es pas surper clair.
Utilisateur anonyme
13 févr. 2008 à 13:19
13 févr. 2008 à 13:19
Resalut,
Il y a une chose que je n'arrive pas à comprendre, la méthode operator= pour la classe vecteur_3D a t-il un type de retour qui est const, void ou bien vecteur_3D ? Ca me parait que ça devrait être vecteur_3D....
J'ai modifié la ligne
Pas question que ce programme ne tourne pas :)
Faut-il que je renvoie mon code jusqu'à cette heure-ci ?
Mille merci.
Il y a une chose que je n'arrive pas à comprendre, la méthode operator= pour la classe vecteur_3D a t-il un type de retour qui est const, void ou bien vecteur_3D ? Ca me parait que ça devrait être vecteur_3D....
J'ai modifié la ligne
void operator=(vecteur_3D &V);pour être :
vecteur_3D operator=(const vecteur_3D &V);
Pas question que ce programme ne tourne pas :)
Faut-il que je renvoie mon code jusqu'à cette heure-ci ?
Mille merci.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
13 févr. 2008 à 14:11
13 févr. 2008 à 14:11
ce que je te dit, ce ne sont que des conseils.
Pour moi, il vaut mieux de operator= retourne un const vecteur_3D car la valeur retournée n'a pas vocation à être modifier mais juste fourni éventuellement à l'affectation suivante.
D'un autre coté, ça empéche le passage par référence en même temps que l'affectation dans une fonction (ex : cos (a=3); qui ferai a=cos(3))
mais à ce moment là, je mettrais alors plutôt vecteur_3D& comme type de retour.
à toi de voir.
Pour moi, il vaut mieux de operator= retourne un const vecteur_3D car la valeur retournée n'a pas vocation à être modifier mais juste fourni éventuellement à l'affectation suivante.
D'un autre coté, ça empéche le passage par référence en même temps que l'affectation dans une fonction (ex : cos (a=3); qui ferai a=cos(3))
mais à ce moment là, je mettrais alors plutôt vecteur_3D& comme type de retour.
à toi de voir.