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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] include de librairie et conseil sur structure de main

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] include de librairie et conseil sur structure de main

n°857828
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 04:29:04  profilanswer
 

j'ai terminé un travail que j'aimerais paufiner un peu avant de le remettre. En gros j'ai 2 trucs qui me chicote l'esprit:
 

  • Diviser mon main en quelques fonctions

le main s'occupe présentement de récupérer (par paramètre si présent ou par cin) un nom de fichier, de lire les segments dans se fichier et les stocker dans un vecteur, puis faire le traitement sur le vecteur (double boucle for + if + cout)
 
le tout prend environ 50 lignes, ca vaut la peine que j'en fasse 3 fonctions ou de tout laisser dans le main est acceptable?
 
 

  • #include de mon segment.h et de mon point.h dans le tp1.cc

exemple: dans mon tp1.cc, j'ai les includes suivants
 

Code :
  1. #include <fstream>
  2. #include <iostream>
  3. #include <vector>
  4. #include "segment.h"
  5. using namespace std;


 
dans mon segment.h
 

Code :
  1. #include <iostream>
  2. #include "point.h"
  3. using namespace std;


 
si je tente de faire l'include du point.h dans mon tp1.cc, ca cause l'erreur suivante
 


In file included from segment.h:2,
                 from tp1.c:37:
point.h:4: error: redefinition of `class Point'
point.h:4: error: previous definition of `class Point'


 
alors
 
a) j'include dans mon tp1.cc mais pas dans segment.h
b) j'include dans segment.h mais pas dans tp1.cc
c) j'include dans les 2 avec une méthode X (un ifndef? ca peut marcher? comment? autres facon?)
 
edit: le segment.cc utilise 2 objets Point pour se créer. J'utilise également un objet Point dans mon tp1.cc (Point intersection), qui sera passé par référence à une méthode d'objet Segment (sIntersecteAvec) et c'est pourquoi je voulais faire l'include du point.h dans le tp1.cc aussi
 
merci


Message édité par burgergold le 26-09-2004 à 04:33:58
mood
Publicité
Posté le 26-09-2004 à 04:29:04  profilanswer
 

n°857972
Taz
bisounours-codeur
Posté le 26-09-2004 à 13:19:17  profilanswer
 

rien compris. mais tant que t'as pas mis un gardien contre l'inclusion multiple, va pas chercher ailleurs

n°857973
black_lord
Truth speaks from peacefulness
Posté le 26-09-2004 à 13:21:56  profilanswer
 

voir donc du coté des #define #ifdef etc...


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°857994
Taz
bisounours-codeur
Posté le 26-09-2004 à 14:00:33  profilanswer
 

#ifndef MACHINTRESUNIQUE
#define MACHINTRESUNIQUE
 
 
// code
 
 
#endif // MACHINTRESUNIQUE
 
 
 
pour la dernière fois ... MACHINTRESUNIQUE c'est un truc le plus unique possible. concatén tout ce que tu as : nom de fichier, projet, date, auteur, truc aléatoire
 
genre
 
GD_RENDERER_H_26_SEPT_2004
 
 
mais pas de LIST_H (pense aux millions de gens qui ont un jour fait un fichier list.h ...)
 
 
tu peux facilement te faire un petit script qui génère ce genre de squelette
 

n°857998
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 14:02:07  profilanswer
 

Taz a écrit :

rien compris. mais tant que t'as pas mis un gardien contre l'inclusion multiple, va pas chercher ailleurs


 
dans mon main j'ai 50 lignes de code, qui fait 3 traitements. Ca vaut la peine que j'en fasse 3 fonctions où c'est acceptable de tout laisser directeent dans le main?
 
gardien contre l'inclusion multiple -> kesako? je me doutais qu'il fallait utiliser des ifdef et ifndef mais jsavais pas trop comment (faut que jme place une constante dans mon segment.h et point.h et que je vérifis si celle-ci est déclaré?)
 
edit: tu viens de poster un truc pendant que j'écrivais, je regarde ca  :jap:


Message édité par burgergold le 26-09-2004 à 14:02:47
n°858003
Taz
bisounours-codeur
Posté le 26-09-2004 à 14:07:02  profilanswer
 

ça vaut la peine de séparer en fichier ? je sais pas, mais ne serait-ce que pour apprendre à le faire, oui
 
inclusion multiple : ben si un .h est incluse plusieurs fois, ça contredit la ODR (one definition rule). Ton compilateur rejète le fait qu'une structure de données soit définie plusieurs fois dans la meme unité de compilation.

n°858005
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 14:08:38  profilanswer
 

Taz a écrit :

ça vaut la peine de séparer en fichier ? je sais pas, mais ne serait-ce que pour apprendre à le faire, oui
 
inclusion multiple : ben si un .h est incluse plusieurs fois, ça contredit la ODR (one definition rule). Ton compilateur rejète le fait qu'une structure de données soit définie plusieurs fois dans la meme unité de compilation.


 
tu voulais bien dire en fonction? :D

n°858013
Taz
bisounours-codeur
Posté le 26-09-2004 à 14:21:08  profilanswer
 

je comprends pas

n°858028
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 14:49:42  profilanswer
 

Taz a écrit :

je comprends pas


 
ok
 
j'ai mon main qui fait 3 trucs
 
- Récupérer un nom de fichier (si recu en parametre, il l'utilise, sinon je demande à l'utilisateur)
- Lire le fichier, stocker tous les segments dans un vector
- Traiter le vector (vérifier quel segment s'intersecte avec un autre, en utilisant une methode de mon objet segment)
 
le tout fait 50 lignes voir moins, ca vaut la peine que je fasse 3 fonctions
- get_nom_de_fichier
- lecture_du_fichier
- traiter_les_segments
 
ou laisser ca dans le main c'est acceptable

n°858031
black_lord
Truth speaks from peacefulness
Posté le 26-09-2004 à 14:54:29  profilanswer
 

au vu de ton énoncé de sujet et de ce que tu viens de dire tu confonds fonction et fichier inclus :)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
mood
Publicité
Posté le 26-09-2004 à 14:54:29  profilanswer
 

n°858033
Taz
bisounours-codeur
Posté le 26-09-2004 à 14:55:43  profilanswer
 

mais ça dépend de ce que tu veux faire ... si c'est un simple programme de 3 lignes, ça va, si tu veux faire une bibliothèque, un gros projet modulaire, etc non
 
je vois pas ce que ça change pour toi, à par que tu te prends la tête avec des conneries 'est-ce que je demande un sac plastique supplémentaire à la caissière ....'

n°858065
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 15:59:05  profilanswer
 

black_lord a écrit :

au vu de ton énoncé de sujet et de ce que tu viens de dire tu confonds fonction et fichier inclus :)


 
bin javais 2 demandes au départ:
 
diviser mon main en 3 fonctions, c'est plus sympa ou non pour un prof?
fichier inclus à 2 endroits, comment faire (avec les ifdef)
 
mais comme Taz a dit, jcrois que je m'embête pour rien pour le premier, vu que y'a tellement pas de code que ca sert pas à grand chose

n°858256
burgergold
5$? va chez l'diable!
Posté le 26-09-2004 à 20:11:42  profilanswer
 

jviens de bencher les 2 binaires du prof avec le mien
 


fichier de 9999 segments
22.47u 0.00s 0:22.49 99.9% tp1
26.70u 0.02s 0:26.77 99.8% Sseg1
 0.84u 0.03s 0:00.90 96.6% Sseg2
 
fichier de 49999 segments
561.21u 1.02s  9:24.66 99.5% tp1
665.65u 0.02s 11:08.90 99.5% Sseg1
  4.34u 0.02s  0:04.39 99.3% Sseg2


 
son Sseg1 utilise le même algo que nous (glouton), alors que Sseg2 a un algo sweep line, c'est assez clair que ca bouffe l'autre :D
 
mais jsuis quand même heureux de voir qu'avec le même algo, mon tp est quand meme plus rapide :)


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

  [C++] include de librairie et conseil sur structure de main

 

Sujets relatifs
prob librairielibrairie php pour faire du RTF ou du doc
Erreur avec librairie Pearconseil pour debutants
[C++] Librairie mathématique Structure d'une base donnée (ODBC)
Menu ds include asp ?Pb de portée de variable sur fichiers include
AWK : faire un includeinstallation librairie graphique GD2
Plus de sujets relatifs à : [C++] include de librairie et conseil sur structure de main


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