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 :

[DEBUTANT]Question sur la Gestion Dynamique


Sujet :

C++

  1. #1
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut [DEBUTANT]Question sur la Gestion Dynamique
    Bonjour à tous, j'ai une petite question, j'ai fais un exercice en C++ me demandant de remplir dynamiquement un vecteur ( je vous met le code ), maintenant je dois faire la même chose en demandant a l'utilisateur de rentrer le nombre d'element que je veux dans le tableau et je bloque un peu, voici mon code, merci de votre aide.

    Main :
    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
     
    #include <iostream>
    #include "GestDyn.h"
     
    using namespace std;
     
    int main(void)
    {
    	Vecteur Vect;	
    	char c;
     
    	Saisie( Vect );
     
    	Affichage( Vect );
     
    	cout << "\n\nAppuyez sur une touche pour continuer ";
    	cin >> c;
     
    	return (0);
    }
    .H
    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
     
    #ifndef VECTEUR_H
    #define VECTEUR_H
    #define VECTLEN 5
     
    class Vecteur
    {
    protected:
    	      int *pVect=NULL;
     
    public:					
     
    	  Vecteur(void); // Appel du constructeur
          ~Vecteur(void); // Appel du destructeur
     
    	  int SetVect(int N, int & Elem);
    	  int GetVect(int N, int & Elem);
     
     
    };
          int Saisie ( Vecteur & Vect );
          int Affichage ( Vecteur & Vect );
     
     
    #endif
    .CPP
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    #include <iostream>
    #include <string>
     
    #include "GestDyn.h"
     
    using namespace std;
     
    Vecteur::Vecteur(void)	// Constructeur sans parametre
    {
    	pVect = new int[VECTLEN]; // Initialisation dynamique
     
    	for (int i = 0; i < VECTLEN; ++i)
    	{
    		pVect[i] = 0;
    	}
    }
     
    Vecteur::~Vecteur(void)	// Destructeur
    {
    	delete [] pVect;
    }
     
    int Vecteur::SetVect(int N, int & Elem)
    {
    	pVect[N] = Elem;
    	return (0);
    }
     
    int Vecteur::GetVect(int N, int & Elem)
    {
    	 Elem = pVect[N];
    	 return (0);
    }
     
    int Saisie ( Vecteur & Vect ) // Méthode de saisie du vecteur
    {
    	int Nbr;
     
    	for ( int i = 0; i < VECTLEN; ++i )
    	{
    		cout << "Entrer l'element " << i << " du vecteur : ";
    		cin  >> Nbr;
     
    		Vect.SetVect(i, Nbr);
    	}
    	return (0);
    }
     
    int Affichage ( Vecteur & Vect ) // Méthode d'affichage du vecteur
    {
    	int Nbr;
     
    	for ( int i = 0; i < VECTLEN; ++i )
    	{
    		Vect.GetVect(i, Nbr);
    		cout << "Element " << i << " du vecteur : " << Nbr << "\n";
    	}
     return (0);
    }

  2. #2
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Tout d'abord : pourquoi Saisie() et Affichage() ne sont pas des methodes de la classe Vecteur?

    Ensuite, pour ton pb, tu pourrai faire :

    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
    #ifndef VECTEUR_H
    #define VECTEUR_H
    #define VECTLEN 5
     
    class Vecteur
    {
    protected:
    	      int *pVect=NULL;
     
    public:					
     
    	  Vecteur(void); // Appel du constructeur
              Vecteur(int nbElements);
          ~Vecteur(void); // Appel du destructeur
     
    	  int SetVect(int N, int & Elem);
    	  int GetVect(int N, int & Elem);
     
     
    };
          int Saisie ( Vecteur & Vect );
          int Affichage ( Vecteur & Vect );
     
     
    #endif
    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
    Vecteur::Vecteur(void)	// Constructeur sans parametre
    {
    	pVect = new int[VECTLEN]; // Initialisation dynamique
     
    	for (int i = 0; i < VECTLEN; ++i)
    	{
    		pVect[i] = 0;
    	}
    }
     
    Vecteur::Vecteur(int nbElements)	
    {
    	pVect = new int[nbElements]; 
     
    	for (int i = 0; i < nbElements; ++i)
    	{
    		pVect[i] = 0;
    	}
    }
    Il faudrait aussi que ta classe aie une nouvelle variable membre qui contient la taille du Vecteur.

  3. #3
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut
    Merci pour votre réponse, oui c'est vrai j'aurai pu mettre ces deux méthodes Saisie() et Affichage() dans la classe vecteur, pour la suite j'ai pas bien compris la nouvelle méthode que vous avez ajouté, merci pour ta réponse.

  4. #4
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Ben dans une classe, tu peux définir plusieurs constructeurs. Toi tu a écrit le constructeur par défaut, qui est appelé automatiquement quand on fait :

    Et qui crée un tableau de 5 cases.

    Moi je t'ai écrit un autre constructeur, qui te permet de définir une taille précise à ton tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vecteur mon_vecteur(10); // Crée un tableau de 10 cases
    Vecter mon_vecteur_par_defaut; // Crée un tableau de 5 cases
    Si tu comprends pas ça, je te conseille de relire les cours.

    Petit détail : au lieu de faire deux constructeur différents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vecteur(void); // Appel du constructeur
    Vecteur(int nbElements);
    Tu peux faire un constructeur qui accepte un paramètre optionel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vecteur(int nbElements = VECTLEN); // Appel du constructeur
    Ainsi, tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vecteur un_vecteur; // Crée un tableau de 5 cases
    Vecteur un_autre_vecteur(10); // Crée un tableau de 10 cases

    PS: Les #define, c'est assez mal vu en C++ (sauf pour éviter la multi-inclusion).

  5. #5
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut
    D'accord j'ai bien compris cela, dans ce programme c'est moi qui doit définir le nombre d'éléments et je ne sais pas bien comment déclarer ma variable qui va prendre le nombre d'éléments, je dois la mettre dans protected ou public, c'est mon troisièmes programmes en C++ ( si on peut parler de programme bien sur )

  6. #6
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Pour especteur l'encapsulation, il faudrai la mettre un protected :

    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
    #ifndef VECTEUR_H
    #define VECTEUR_H
    #define VECTLEN 5
     
    class Vecteur
    {
    protected:
    	      int *pVect=NULL;
                  int m_taille;
     
    public:					
     
              Vecteur(int nbElements = VECTLEN);
          ~Vecteur(void); // Appel du destructeur
     
    	  int SetVect(int N, int & Elem);
    	  int GetVect(int N, int & Elem);
     
     
    };
          int Saisie ( Vecteur & Vect );
          int Affichage ( Vecteur & Vect );
     
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Vecteur::Vecteur(int nbElements)	
    {
            m_taille = nbElements
    	pVect = new int[nbElements]; 
     
    	for (int i = 0; i < nbElements; ++i)
    	{
    		pVect[i] = 0;
    	}
    }
    Et tu pourrai mettre des accesseurs, comme ceux de la classe std::vector :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    size() { return m _taille;};
    resize(int taille) { m_taille = taille;};

  7. #7
    IDE
    IDE est déconnecté
    Membre régulier Avatar de IDE
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 238
    Points : 89
    Points
    89
    Par défaut
    Super je te remercie de toutes ces réponses, c'est sympa de ta part.

  8. #8
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 82
    Points : 72
    Points
    72
    Par défaut
    a la place du define , tu peux ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const int VECTLEN = 5;

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

Discussions similaires

  1. [debutant] question sur JCreator ? (son classpath)
    Par easyman dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 3
    Dernier message: 25/10/2005, 08h56
  2. [Debutant] Question sur la redéfinition de getPreferredSize
    Par etiennegaloup dans le forum Débuter
    Réponses: 1
    Dernier message: 23/09/2005, 20h02
  3. [Debutant] Question sur le system.out.print
    Par thom02 dans le forum Langage
    Réponses: 8
    Dernier message: 19/07/2005, 18h19
  4. Question sur la gestion des fenetres MDI
    Par RémiONERA dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2005, 07h58
  5. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49

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