Programmation en langage c++

Fermé
mane96 Messages postés 3 Date d'inscription dimanche 16 août 2020 Statut Membre Dernière intervention 20 août 2020 - 16 août 2020 à 16:53
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 - 29 août 2020 à 14:31
bonjour, je suis étudiant et un débutant en langage C++ . Je veux faire une programmation qui permet de faire une liste c'est à dire avoir la possibilité d'ajouter un nom à l'infini puis à la fin d'afficher les noms inscrit.

j'ai réussi à faire un code qui fait tous cela mais mon seul problème c'est l'affichage, il affiche que le dernier nom ajouter. j'arrive pas a faire l'allocation dynamique .
j'aimerai bien que vous m'aidez à trouver une solution.
A voir également:

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
29 août 2020 à 14:31
Comme ça, je dirai que comme tu enregistre dans ton tableau le pointeur vers un objet"string" et ce cette objet est réutilisé, en gros, tu ne fais qu'ajouter le même objet et donc ça ne conserve que la dernière saisie.
1
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 330
16 août 2020 à 17:34
0
mane96 Messages postés 3 Date d'inscription dimanche 16 août 2020 Statut Membre Dernière intervention 20 août 2020
Modifié le 20 août 2020 à 10:53
oui désoler c'est vrai, voila donc mon code est ne tenais pas compte des noms des dossiers.
///////////////////////////////pointeur.cpp////////////////////////////////
#include<iostream>
#include<string>
#include"pointeur.hpp"
using namespace std;

char encore;
int c=0;
string tab[5][5];
int main(){
pointeur p;
 
 string b;
           string *a{new string()};
           a=&b;
   do
   { 
    p.remplir(tab);
    cout<<"ecrivez un mot"<<endl;
    
    cin>>b;
    
    tab[c][0]=*a;
  c=c+1; 
     
     if (c==5)
     {
       p.affiche(tab);
       return 0;
     }
      else
      {
        
      }
   
  p.affiche(tab);
      cout<<"encore un mot?"<<endl;
    cin>>encore;
   } while (encore=='o');
   
p.affiche(tab);
  
   
    return 0;
}
///////////////////////////////pointeur.hpp////////////////////////////////
#include <iostream>
#include <string>
using namespace std;

class pointeur
{
private:
    /* data */
public:
    pointeur();
    void affiche(string tab[5][5]);
    void remplir(string tab[5][5]);
    
};

pointeur::pointeur()
{
}
void pointeur::affiche(string tab[5][5]){
    system("clear");
    for (int i = 0; i < 5; i++){
    for(int j = 0; j < 5; j++){
      cout<< tab[i][j]<<' ';
}
cout<< endl ;
}
}
void pointeur::remplir(string tab[5][5]){

    for (int i=0 ; i<5 ;i++){
 for (int j=0 ; j<5 ; j++){
tab[i][j]=' ';
}
}
}
0
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
20 août 2020 à 10:46
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mane96 Messages postés 3 Date d'inscription dimanche 16 août 2020 Statut Membre Dernière intervention 20 août 2020
20 août 2020 à 15:16
#include<iostream>
#include<string>
#include"pointeur.hpp"
using namespace std;

char encore;
int c=0;
string tab[5][5];
int main(){
pointeur p;
 
 string b;
           string *a{new string()};
           a=&b;
   do
   { 
    p.remplir(tab);
    cout<<"ecrivez un mot"<<endl;
    
    cin>>b;
    
    tab[c][0]=*a;
  c=c+1; 
     
     if (c==5)
     {
       p.affiche(tab);
       return 0;
     }
      else
      {
        
      }
   
  p.affiche(tab);
      cout<<"encore un mot?"<<endl;
    cin>>encore;
   } while (encore=='o');
   
p.affiche(tab);
  
   
    return 0;
}

///////////////////////////////pointeur.hpp////////////////////////////////
#include <iostream>
#include <string>
using namespace std;

class pointeur
{
private:
    /* data */
public:
    pointeur();
    void affiche(string tab[5][5]);
    void remplir(string tab[5][5]);
    
};

pointeur::pointeur()
{
}
void pointeur::affiche(string tab[5][5]){
    system("clear");
    for (int i = 0; i < 5; i++){
    for(int j = 0; j < 5; j++){
      cout<< tab[i][j]<<' ';
}
cout<< endl ;
}
}
void pointeur::remplir(string tab[5][5]){

    for (int i=0 ; i<5 ;i++){
 for (int j=0 ; j<5 ; j++){
tab[i][j]=' ';
}
}
}
0