Pb de class

cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008 - 15 mai 2002 à 19:01
cs_st1 Messages postés 13 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 29 décembre 2002 - 22 juil. 2002 à 20:14
salut !!

je suis en train de faire un programme en relation avec mendeleiev.

il se trouve que j'ai fait mon prog comme ceci (avec un squellette similaire) :

#includes

class definitions
{
public :

char temp[255];
init();
}

definition::init()
{
/*Ici, il ya le probleme*/
}

definition def;

etc.....

mon prob est que dans la table de mendeleiev, il y a 109 atomes ou quelquechos comme ca...

bref, si je vuex pas me taper 654 lignes a ecrires, il me faut la class : l'utilité est que je fais des recheches par numero atomique, nom ou symbol..

je voudrais faire come ceci :

definition::init()
{
strcpy(temp[0],"hydrogene");
strcpy(temp[1],"helium");
......
}

2 problemes ce posent : le strcpy ne veut pas faire

strcpy(temp[0],"hydrogene");

mais accepte uniquement :

strcpy(temp,"hydrogene");

second, temp[0] correspond au premier caractere de la phrase contenu dans temp....

mes questions :

comment faire en sorte, que strcpy accepte (temp[0],"hydrogene");
(ou une autre solution)

et comment mettre les 109 atomes dans un tableau(leur noms) ?

voila, donc si vous avez un autre solution... proposez.

5 réponses

jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
15 mai 2002 à 20:33
salut,

>>2 problemes ce posent : le strcpy ne veut pas
>>faire strcpy(temp[0],"hydrogene");
>>mais accepte uniquement :
>>strcpy(temp,"hydrogene");

normal, "hydrogene" est, bien sur, une chaine de caracteres et temp[0] est un seul caractère.
en effet char temp[255] ne correspond qu'a un seul mot de 255 caracteres.

>>comment faire en sorte, que strcpy accepte
>>(temp[0],"hydrogene");

pas moyen.

>>(ou une autre solution)
>>et comment mettre les 109 atomes dans un >>tableau(leur noms) ?

je te propose cela

typedef struct {
char cNom[30] ; //ou plus
char cSymbol[3];
int iNumero;
} ELEMENT;

class cMendeleiev {
private :
ELEMENT table[109];
public :
void InitTable();
... // autre methode pour acceder aux elements
};

void cMendeleiev::InitTable()
{
strcpy(this->table[0].cNom,"Hydrogene");
strcpy(this->table[0].cSymbol,"H");
this->table[0].iNumero = 1;
...
}

Mais a mon avis j'utiliserai plutot un fichier avec un boucle for.
0
cs_geantvert Messages postés 17 Date d'inscription jeudi 11 avril 2002 Statut Membre Dernière intervention 7 avril 2004
18 mai 2002 à 10:34
Géant Vert

Salut,
Pourquoi n'utilises tu pas un tableau de string :
string temp[255];

comme ça dans init() tu peux ecrire
temp[0]="hydrogène";
temp[1]="helium";
...

A++
0
cs_Xs Messages postés 368 Date d'inscription mercredi 14 novembre 2001 Statut Membre Dernière intervention 1 septembre 2008
18 mai 2002 à 18:12
merci a toi jecchi pour ta methode qui me semble pro. mais je ne sais pas a quoi sert this et comme je ne veux pas recopier betement un code sans le comprendre.....

je vais essayer de le refaire et voir si je peux l'utilisé.

sinon, je prendrai la solution de geantvert.

merci a tous deux.
0
cs_tafiscobar Messages postés 16 Date d'inscription dimanche 10 février 2002 Statut Membre Dernière intervention 17 janvier 2004
18 mai 2002 à 19:40
bon voila xs, this est utilise ds la definition des methodes de la classe seulement.this est un pointeur sur l'objet de la classe, c'est tout, tu p ne pas l'utiliser.Sinon pour le reste, jcecchi t'a bien repondu, il n'ya pas moyen de mettre une chaine de caracteres ds un caractere, a moins de faire un cast et de perdre les autres caracteres qui suivent, ie que tu recopies juste le premier caractere de ta chaine.Voila,tu connais les classes, donc tu p t'en sortir pour le reste.
seul le C/C++ vaut la peine d'etre appris.
tafiscobar.
0

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

Posez votre question
cs_st1 Messages postés 13 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 29 décembre 2002
22 juil. 2002 à 20:14
Tu as juste fais une erreur dans la declaration de ton tableau, tu as definit un tableau a une dimension de 255 caracteres, tu aurais du utiliser pour ton probleme un tableau a deux dimensions, si ton tableua ne doit que contenir les noms,
voila la declaration char temp[654][255];
Pour initialise ton tableau en une fois tu peux faire
temp[654][255]={"hydrogene","helium",.....};
mais pour le faire dans une classe tu devras utiliser une allocation dynamique pour ton tableau
0
Rejoignez-nous