IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Triangle appelant point.h


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut Triangle appelant point.h
    Bonjour

    Je suis nouveau en C++ et j'ai un souci. J'ai du dans un premier temps creer un header file nommé point.h et un fichier point.cpp pour creer un point

    Mon point.h contient cela notamment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    // header file for this class point
     
    #include <cstdlib>
    #include <iostream>
    #ifndef POINT_H
    #define POINT_H
    #include <cmath>
     
     
    using namespace std;
     
    const double X_MAX=100.0;   //declaration of the constant X_MAX
    const double Y_MAX=100.0;   //declaration of the constant Y_MAX
     
    //Class Point represents points in the Cartesian coordinate
    class point
    {
        private:
            double x_coord, y_coord;    //coordinates of the point
            double dx, dy;              //for the translation over (dx,dy)
            double x1,x2,y1,y2;         //require for translate
     
        public:
            //pre: -X_MAX < x < X_MAX and -Y_MAX < y < Y_MAX
            //post: construct a Point object with x_coord = x and y_coord=y
            point(double, double);
    --------------
    Mon fichier point.cpp contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // definition file for this class point
     
    #include <iostream>
    #include <cstdlib>
    #include "point.h"
     
    using namespace std;
     
    point::point(double x, double y){
        x_coord=x;
        y_coord=y;
    }
    --------
    Pour appeler mon point, j'ai juste à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <cstdlib>
    #include <iostream>
    #include "triangle.h"
     
    int main()
    {
        //we start with a point equal with x_coord = 20 and y_coord = 20
      //  point p=point(20,20);
       // cout << "The contents of the object are: " ;
      //  p.write();
    Mais maintenant je dois creer un triangle utilisant ce fichier point.h et là je suis perdu ..

    J'ai créer un fichier triangle.h où j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    // header file for this class point
     
    #include <cstdlib>
    #include <iostream>
    #include "point.h"
    #ifndef TRIANGLE_H
    #define TRIANGLE_H
    #include <cmath>
     
     
    using namespace std;
     
     
    //Class Triangle represents a triangle
    class triangle
    {
    private:
    const point p1_coord;
    const point p2_coord;
    const point p3_coord;
     
     
    public:
     
    //post:constructs a triangle object containing p1, p2 and p3
    triangle(const point, const point, const point);
    }:
    #endif
    --------------------
    Pour le fichier triangle.cpp j'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    // definition file for this class point
     
    #include <iostream>
    #include <cstdlib>
    #include "triangle.h"
     
    using namespace std;
     
    triangle::triangle(const point p1, const point p2,const point p3){
    p1_coord=p1;
    p2_coord=p2;
    p3_coord=p3;
    }
    -------------
    et pour appeler, j'ai créer main2.cpp où j'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    #include <cstdlib>
    #include <iostream>
    #include "triangle.h"
     
    int main()
    { cout << "The contents of the triangle is: ";
    point p1=point(20,20);
    point p2=point(-10,-10);
    point p3=point(-10,30);
    triangle T=triangle(p1,p2,p3);
     
    system("PAUSE");
     
    }
    Naturellement, ça ne marche pas. Pourriez vous svp m'aider à créer ce triangle en utilsant point.h?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Utilise les balises [codeX] ton code [/code] (en enlevant le 'X') pour rendre ton code plus lisible.

    Tu as oublié la fin de de certains fichier^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    point::point(double x, double y) : x_coord(x), y_coord(y)
    }
    cela initialisera directement les variables avec les valeurs que tu souhaites plutôt que d'initialiser les variables puis de leur affecter une valeur.

    Edit :

    Et bien tu problème vient de ce que j'ai dit plus haut^^

    Tu ne peux affecter une valeur à des variables constante que lors de leur initialisation mais pas après.
    Donc évidemment ça plante^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    triangle::triangle(const point p1, const point p2,const point p3)
          : p1_coord(p1), p2_coord(p2), p3_coord(p3)
    {}

  3. #3
    Membre régulier
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut
    Ok, merci pour ce point. Mais maintenant comment je fais pour appeler cette fonction triangle dans main.cpp?

    Je voudrais également que
    P1 soit 20 et 20
    p2 soit -10 et -10
    p3 soit -10 et 30

    JE définis ça où ? Dans triangle.h ou main.cpp?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Généralement, les noms de classes commencent par une majuscule.


    dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    triangle  monTriangle(point(20, -20), point(10, -10), point (5, -5) );

  5. #5
    Membre régulier
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut
    Merci

    Je voudrais imprimer le résultat sous la forme <Triangle<Point(20,20)>,<Point(-10,-10)>,<Point(-10,-30)>>

    J'ai écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void triangle::write(){
        cout << "<Triangle";
        p1_coord;
        cout << ",";
        p2_coord;
        cout << ",";
        p3_coord ;
        cout << ">" << endl;}
    mais ça me retourne seulement <Triangle,,>

    Je fais comment pour faire apparaître les valeurs des 3 points?

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Il faut que tu surcharge l'opérateur <<
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ostream & operator<<(ostream & flux, const point & p)
    {
           flux << p.attribut1 << "-"  << "Hello Word!";
           return flux;
    }
    N'oublie pas de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class point
    {
        public :
         .....
         private :
        friend ostream & operator<<(ostream & flux, const point & p);
    };

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par commodoreevic Voir le message
    Je voudrais imprimer le résultat sous la forme <Triangle<Point(20,20)>,<Point(-10,-10)>,<Point(-10,-30)>>

    J'ai écrit

    void triangle::write(){
    cout << "<Triangle";
    p1_coord;
    cout << ",";
    p2_coord;
    cout << ",";
    p3_coord ;
    cout << ">" << endl;}

    mais ça me retourne seulement <Triangle,,>

    Je fais comment pour faire apparaître les valeurs des 3 points?
    Les lignes p1_coord; p2_coord; p3_coord; ne servent à rien.
    Puisque tu as triangle::write(), as-tu aussi point::write() ? Si non, il semblerait logique de la posséder pour, justement, écrire les coordonnées d'un point.

    Et tu aurais alors juste à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void triangle::write(){
        cout << "<Triangle";
        p1_coord.write();
        cout << ",";
        p2_coord.write();
        cout << ",";
        p3_coord.write();
        cout << ">" << endl;}
    Tu peux aussi passer par la surcharge de l'opérateur << pour parvenir à une écriture ressemblant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void triangle::write(){
        cout << "<Triangle"<<p1_coord<< ","<<p2_coord<< ","<<p3_coord<< ">"<< endl;}
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre régulier
    Inscrit en
    Juin 2012
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2012
    Messages : 9
    Par défaut
    Bonjour
    Merci pour votre réponse. Je n'ai pas surchargé l'opérateur, ça me semblait bien trop compliqué pour un exercice de ce type. J'avais fini l'exercice avant de voir votre réponse avec write(), merci pour cette réponse mais j'ai finalement en fait utilisé get_x et get_y pour afficher les différentes coordonnées

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Point à l'intérieur d'un triangle ?
    Par remi77 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 15/05/2017, 14h49
  2. Interpolation "linéaire" sur un point dans triangle (3D)
    Par Vol dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 09/07/2006, 22h34
  3. Test: point au dessus d'un triangle
    Par NailMaker dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 12/06/2006, 19h55
  4. Bordures triangles et point de vue
    Par vdumont dans le forum OpenGL
    Réponses: 9
    Dernier message: 13/04/2006, 20h29
  5. [Algo] Point appartenant au triangle
    Par alexthomas dans le forum OpenGL
    Réponses: 12
    Dernier message: 05/03/2004, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo