Tableau de caracteres en 2D

Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007 - 4 déc. 2005 à 12:00
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 4 déc. 2005 à 15:17
Salut,

je cherche a creer un tableau de caracteres en 2D en programmation objet. Le programme doit stocker des noms, on pourrait en ajouter et en supprimer. Je remercie toutee personne susceptible de m'aider.

11 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2005 à 12:14
Ca dépend déja, programmes-tu en C ou en C++
C++ va te simplifier la tache, avec un vector<string> ou list<string>. Peut-être aussi que set<string> pourrait faire l'affaire...
En C c'est puut-être plus efficace, mais c'est un peu la galère (notamment si tu veux supprimer une chaine en plein milieu, il faudra tout décaler les suivantes). Il faudra aussi gérer l'allocation dynamique a la main (sauf si tu connais une borne supérieure du nombre de noms à stocker).
Explique donc plus clairement ton problème
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 12:18
je deja fait des tests en c++ mais je n'aboutit a rien,


Pourrais-je t'envoyer mon code afin de m'expliquer ce qui cloche?


Merci de ton aide
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2005 à 13:16
Tu peux le mettre ici, mais si c'est long ne mets pas tout
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 13:25
Voici la declaration de la classe:
class TableauCaracteres
{
int NbImage,TailleNomImage;
char* PtTableau;


public :


TableauCaracteres(int NbIm,int TaNomIm);
TableauCaracteres(char* tabcar );
~TableauCaracteres();
int LireNbImage ( ) const;
int LireTailleNomImage () const ;
char & operator [] (int i);
TableauCaracteres & operator=(const TableauCaracteres & tab);
0

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

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2005 à 13:26
Je comprends pas bien, pourquoi tu n'utilises pas string à la place de TableauCaracteres?
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 13:27
Ainsi que la definition des methodes

TableauCaracteres::TableauCaracteres(int NbIm,int TaNomIm)
{
int i;
NbImage=NbIm;
TailleNomImage=TaNomIm;
PtTableau=new char [NbImage+1];


for (i=0;i<NbIm;i++) PtTableau=new char [TailleNomImage+1];
}


TableauCaracteres::TableauCaracteres(char *tabcar)
{
TailleNomImage=strlen(tabcar);
PtTableau=new char [TailleNomImage+1];
if (tabcar!=NULL) strcpy(PtTableau, tabcar);
else PtTableau[0]=0;
}



TableauCaracteres::~TableauCaracteres()
{
int i;
for (i=0;i<NbImage;i++) delete [] PtTableau;
delete[] PtTableau;
}



int TableauCaracteres::LireNbImage ( ) const
{
return NbImage;
}


int TableauCaracteres::LireTailleNomImage () const
{
return TailleNomImage;
}


char &TableauCaracteres::operator [] (int i)
{
int j=0;
int TaNomImage=0;
if (i<0 || i>=NbImage )//|| j<0 || j>=TaNomImage)
{
cout<<endl;
cerr<<"Depassement d'indice : i= "<<i;
cerr<<"Depassement d'indice : j= "<<j;
abort();
}


return PtTableau[i];//[j];
}


TableauCaracteres & TableauCaracteres ::operator =(const TableauCaracteres & tab)
{
// int i;
if(TailleNomImage!=tab.TailleNomImage)
{
delete[] PtTableau;
PtTableau=new char [tab.TailleNomImage+1];
TailleNomImage=tab.TailleNomImage;
}


strcpy (PtTableau,tab.PtTableau);
return *this;
}
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 13:55
TableauCaracteres est le nom de l'objet
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2005 à 14:39
Pourquoi tu n'utilise pas les conteneurs de la STL comme je te l'ai suggéré?

Comme donnée dans ta classe, tu n'a que set<string> noms;

L'interface de ta classe TableauCaracteres ne correspond pas avec ce que tu as décrit plus haut (tu parlais d'insertion par exemple). Essaie donc déja d'écrire proprement toute l'interface (pas l'implémentation), ca aidera à choisir les bonnes structures de données à utiliser
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 14:44
C'est gentil de m'aider. A propos des conteneurs de la STL , je ne sais pas ce que c'est.
0
Jedi_Yoda Messages postés 13 Date d'inscription samedi 3 décembre 2005 Statut Membre Dernière intervention 23 janvier 2007
4 déc. 2005 à 14:50
Cette classe est utilisee en quant qu'intermediaire. Le but est la manipulation d'images. Et la classe TableauCaracteres permet de stocker les images a utiliser. Le choix de chaque image remplira le tableau. Il serait possible d'en supprimer une
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
4 déc. 2005 à 15:17
Excuse moi mais je n'y comprends rien. Tu parlais de noms, pas d'images au début... Pour les conteneurs:
http://casteyde.christian.free.fr/cpp/cours/index.html
0
Rejoignez-nous