cs_aylan
Messages postés13Date d'inscriptionlundi 17 novembre 2008StatutMembreDernière intervention12 juin 2012
-
23 févr. 2009 à 13:57
cs_aylan
Messages postés13Date d'inscriptionlundi 17 novembre 2008StatutMembreDernière intervention12 juin 2012
-
2 mars 2009 à 16:50
voila le code que j'ai pour une seule table hash
// Constructeur de la classe TableHash
CTableHash::CTableHash()
{
maliste=new (dblist);
}
//initialisation de la table
void CTableHash::init(CTableHash *a)
{
a->liste->first=NULL;
a->liste->last=NULL;
for(int i=0;i<=NGmax;i++)
for(int j=0;j<=i;j++)
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 24 févr. 2009 à 13:10
Salut,
D'une part, ce n'est pas du C, d'autre part tu ne montre pas la déclaration de la classe.
Sinon, pour créer plusieurs hashtables, comme n'importe quelle autre variable :
Non ?
Par contre, je crois que tu n'utilises pas ta classe correctement : pour y a t-il un pointeur sur CTableHash à chaque méthode ? Le but d'une méthode est de modifier l'instance courante, symbolisée par (*this).
Ainsi, par exemple :
if (this->liste->last) this->liste->last->next=nouv;
else this->liste->first=nouv;
this->liste->last=nouv;
nbelem++;
}
Et encore, je ne sais pas à quoi correspond t->t[][] (ça a l'air assez improbable), vu que tu ne montres pas la déclaration de la classe.
Au cas où, voici un simple exemple de classe :
//Déclaration de la classe
class CPersonne {
public:
void Changer_age(int Age);
private:
int age;
char* nom[25];
};
//Constructeur
CPersonne:CPersonne(int Age,char* Nom) {
this->age=Age;
strcpy(this->nom,Nom);
}
//Méthode Changer_Age()
void CPersonne::Changer_Age(int Age) {
this->age=Age;
}
//Déclaration de 2 instances
CPersonne personne1(28,"Simon");
CPersonne personne2(41,"Pierre");
//Changement de l'age de la 2eme personne
personne2.Changer_Age(56);
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 24 févr. 2009 à 13:13
Oups, j'ai oublié le constructeur dans la déclaration de la classe :
//Déclaration de la classe
class CPersonne {
public:
Cpersonne(int Age,char* Nom); void Changer_age(int Age);
private:
int age;
char* nom[25];
};
cs_aylan
Messages postés13Date d'inscriptionlundi 17 novembre 2008StatutMembreDernière intervention12 juin 2012 26 févr. 2009 à 12:54
salut uaip, tu n es pas vraiment hors sujet.mais ,moi je veux afficher plusieur table au meme temps.ça veut dire plusieurs listes.
cordialement, aylan.
uaip
Messages postés1466Date d'inscriptionmardi 20 février 2007StatutMembreDernière intervention 7 février 2011 26 févr. 2009 à 18:25
Salut,
Le "en même temps" en programmation n'existe pas.
Et ta question était de savoir comment programmer plusieurs hashtables, et là tu me dis que tu veux juste les afficher "en même temps". Ça n'a rien à voir.
Il suffit que tu déclares une méthode afficher(); et, en imaginant que tu aies ouvert 2 instances i1 et i2, il suffit d'écrire :
i1.afficher();
i2.afficher();
Si je suis encore hors-sujet, alors tu t'exprimes mal
(mes remarques concernant la programmation de ta classe restent néanmoins valables).
Cordialement, uaip.
Vous n’avez pas trouvé la réponse que vous recherchez ?
void CTableHash::afficher_liste(CTableHash *TableHash,class TInfoListeMat *InfoListeMat)
{
int i=1;double s=0;
InfoListeMat->ListBox1->Clear();
ListeNode *pliste=TableHash->maliste->first;
InfoListeMat->ListBox1->Items->Add("La longeur de la Liste est:"+IntToStr(nbelem));
while(pliste)
{
s=s+(pliste->prob);
InfoListeMat->ListBox1->Items->Add(IntToStr(i)+" la paire : ("+IntToStr(pliste->x1)+","+IntToStr(pliste->x2)+") cooccurrence :"""+FloatToStr(pliste->prob));
pliste=pliste->next;
i++;
}
InfoListeMat->ListBox1->Items->Add(" La somme de cooccurrence :" +FloatToStr(s));
};
//pour CTableHash.h
#ifndef CTableHashH
#define CTableHashH
//---------------------------------------------------------------------------
#endif
/*Classe pour la table de hachage*/
class CTableHash
{
public:
struct dblist *maliste;
struct ListeNode *t[256][256];
int nbelem;
public:
CTableHash();
~CTableHash();
void init(CTableHash *);