Les references ..

DevGl Messages postés 151 Statut Membre -  
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

bon , mon but est d'écrire une fontion coincide qui me permet de savoir si deux vecteurs ont meme composantes , il faut faire cette fonction on utilisant une transmission par reference, j'ai pas su comment le faire , je l'ai fait a l'aide d'une transmission par valeur .
la class est nommée vecteur

d'abors c'est le fichier vecteur.h

#ifndef VECTEUR_H
#define VECTEUR_H


class vecteur
{
    public:
        vecteur(float c1=0.0 ,float c2=0.0,float c3=0.0){ x=c1 , y=c2 , z=c3;}
        void coicide ( vecteur v2);

    private:
    float x;
    float y;
    float z;
};

#endif // VECTEUR_H


                 // Le fichier vecteur.cpp


#include "vecteur.h"
using namespace std ;
#include <iostream>



void vecteur::coicide(vecteur v2){

     if(x==v2.x && y==v2.y && z==v2.z){
                    cout<<"les deux vecteurs sont coicide"<<endl;
                                     }
    else {
           cout<<"les deux vecteurs  ne sont pas coicide"<<endl;
    }

}




            //main 

#include <iostream>
#include "vecteur.h"
using namespace std;

int main()
{

    vecteur v1(1,2,3);
    vecteur v2(1,2,4);
    v1.coicide(v2);


    return 0;
}


EDIT: Ajout de la coloration syntaxique.

et voila , le programme me donne des resultats vai , mais ce que je dois faire , et de faire tout ca en utilisant une transmission par reference dans la fonction coicide , s'ils vous plait , comment ?

2 réponses

  1. sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   50
     
    Bonsoir
    Il n'est pas préférable d'écrire pour la fonction coïncide ainsi :
    bool f_Coincide( cVecteur *vY ){
      if( (this->x == vY->f_GetX() ) && (this->y == vY->f_GetY()) && (this->z == vY->f_GetZ() ) )
    	return ( true );
      else
    	return ( false );
    }
    

    au lieu (ci-dessous) avec un accès direct a le variable privé (qui est pas conforme )
    void vecteur::coicide(vecteur v2){
    
         if(x==v2.x && y==v2.y && z==v2.z){
                        cout<<"les deux vecteurs sont coicide"<<endl;
                                         }
        else {
               cout<<"les deux vecteurs  ne sont pas coicide"<<endl;
        }
    
    }
    

    Bref, ça donnerait:
    #include <iostream>
    
    //Classe vecteur
    class cVecteur;
    
    class cVecteur{
    
    public:
    
    	//Constructeur
    	cVecteur( void ){
    		this->x = 0;
    		this->y = 0;
    		this->z = 0;
    	}
    
    	//Destructeur
    	~cVecteur( void ){
    		this->x = 0;
    		this->y = 0;
    		this->z = 0;
    	}
    
    	//Fonction Coincide
    	bool f_Coincide( cVecteur *vY ){
    
    		if( (this->x == vY->f_GetX() ) && (this->y == vY->f_GetY()) && (this->z == vY->f_GetZ() ) )
    			return ( true );
    		else
    			return ( false );
    	}
    
    	//Quelque Setter
    	void f_SetX( float fX ){
    		this->x = fX;
    	}
    
    	void f_SetY( float fY ){
    			this->y = fY;
    	}
    
    	void f_SetZ( float fZ ){
    			this->z = fZ;
    	}
    
    	//Setter global
    	void f_SetGlobalVar( float fX, float fY, float fZ ){
    		this->x = fX;
    		this->y = fY;
    		this->z = fZ;
    	}
    
    	//Quelque Getter
    	float const f_GetX( void ){
    		return ( this->x );
    	}
    
    	float const f_GetY( void ){
    		return ( this->y );
    	}
    
    	float const f_GetZ( void ){
    		return( this->z );
    	}
    
    private:
    	float x;
    	float y;
    	float z;
    };
    
    //Fonction Principale
    int main( void ){
    
    	cVecteur vX;
    	cVecteur vY;
    
    	//Affectation
    	vX.f_SetGlobalVar(1,2,3);
    	vY.f_SetGlobalVar(1,2,3);
    
    	//cas 1
    	if( vX.f_Coincide(&vY) )
    		std::cout<< "Les elements coincide (Cas 1)" <<std::endl;
    	else
    		std::cout<< "Les elements coincide pas (Cas 1)" <<std::endl;
    
    	//Cas 2
    	vX.f_SetY(5);
    	if( vX.f_Coincide(&vY) )
    		std::cout<< "Les elements coincide (Cas 2)" <<std::endl;
    	else
    		std::cout<< "Les elements coincide pas (Cas 2)" <<std::endl;
    
    	return( 0 );
    }
    

    à bientôt
    0
  2. ranxerox
     
    Bonjour,

    Pour passer une référence, il faut passer l'adresse de l'objet comme paramètre de la fonction.

    class vecteur 
    { 
     public: 
     vecteur(float c1=0.0 ,float c2=0.0,float c3=0.0){ x=c1 , y=c2 , z=c3;} 
     void coicide ( vecteur* lpv2); le paramètre est l'adresse ( la référence)
    ...
    }
    
    ...
    void vecteur::coicide(vecteur* lpv2){ 
     if(x==lpv2->x && y==lpv2->y && z==lpv2->z){ 
     cout<<"les deux vecteurs sont coicide"<<endl; 
     } 
     else { 
     cout<<"les deux vecteurs ne sont pas coicide"<<endl; 
     } 
    } 
    
    
    ...
    int main() 
    { 
     vecteur v1(1,2,3); 
     vecteur v2(1,2,4); 
     v1.coicide(&v2); // on passe l'adresse de v2
     return 0; 
    }


    EDIT: Ajout de la coloration syntaxique.
    -1