kollibar
Messages postés45Date d'inscriptionsamedi 7 juin 2003StatutMembreDernière intervention31 janvier 2006
-
23 déc. 2004 à 01:18
pmbala
Messages postés30Date d'inscriptionsamedi 4 décembre 2004StatutMembreDernière intervention 2 avril 2008
-
27 déc. 2004 à 11:23
je debute en C et donc je vais poser une question con...
avec une chaine de caractère CHAR* comment je peut faire pour récupérer une sous chaine allant du caractère x(!=0) au caractère y??
j'ai un bouquin qui date de longtemps mais j'ai pas trouvé!
cs_Nashua
Messages postés48Date d'inscriptionlundi 29 novembre 2004StatutMembreDernière intervention16 mars 2005 23 déc. 2004 à 07:00
en premier tu doit savoir qu'un char * est un pointeur sur chaine de char.
il est donc preferable de noter char [n] qui est un string de n char.
dans ta question on va creer un pointeur sur char *
puis on le deplace dans le string d 'x' position
on va enfin lire le string jusque y en avancant le ptr.
exemple :
char string ={a,b,c,d,e,f,g};
char *ptr;
int x = 2,
y = 6; ptr string; // ou tu peux mettre ptr &string[0] qui est plus explicite
if ( x < strlen (string) ) // testons que x est < a la longueur de string
ptr = ptr + x;
if ( y < strlen (string)) { // meme chose pour y
while (ptr < string + y ) {
// je recupere le contenu de ptr (*ptr)
ptr ++ ; // incrementons ptr
}
pmbala
Messages postés30Date d'inscriptionsamedi 4 décembre 2004StatutMembreDernière intervention 2 avril 2008 24 déc. 2004 à 20:55
Bonsoir à ts et joyeux noel!!!
Voilà j'ai un petit pb en c++ sur les arbres, il s'agit de creer un arbre qui contient plusieurs champs de type differents ds chaque noeud...Je sais le faire pr un arbre qui contient seulement un caractere ou un entier,je vous donne une partie de mon code...
/*je declares des struct pr chaque champ */
#include
using namespace std;
struct DATE {
int jj,mm,aa; // jour mois année
};
struct ADRESSE{
int Num_piste; //numero de piste oqp par file...
int Num_Sect; // ...... - .... secteur...
};
struct Noeud{
char * Nom_file,*Type_file;
ADRESSE * Adr;
DATE * date;
Noeud *gauche,*droite,*pere ; //sous arbres gauche et droit...
};
class Repertoire{
public:
Noeud * Racine;
void CreerFile( );
Noeud * InsererFile(char *nom,Noeud* courant);
.....
};
void repertoire::CreerFile() {
char reponse,*nom;
Racine=new(Noeud);
Racine->gauche=Racine->droite->Racine->pere=Null;
courant->Nom_file= "toto" ????
/* là je bloque,parce que j'ai +sieurs champs,je me demande si pr le premier noeud il faut initialiser directemt tous les champs,du genre: Racine->X= "Y"; /*
Avec un arbre dont le noeud comprend un seul champ,j'aurais fais simplement Racine->X=element pr stocker element dans X;
J'espère que vs allez comprendr de koi je parle et que vs allez m'aider le + tôt possible,merci...
Vous n’avez pas trouvé la réponse que vous recherchez ?
pmbala
Messages postés30Date d'inscriptionsamedi 4 décembre 2004StatutMembreDernière intervention 2 avril 2008 24 déc. 2004 à 20:55
Bonsoir à ts et joyeux noel!!!
Voilà j'ai un petit pb en c++ sur les arbres, il s'agit de creer un arbre qui contient plusieurs champs de type differents ds chaque noeud...Je sais le faire pr un arbre qui contient seulement un caractere ou un entier,je vous donne une partie de mon code...
/*je declares des struct pr chaque champ */
#include
using namespace std;
struct DATE {
int jj,mm,aa; // jour mois année
};
struct ADRESSE{
int Num_piste; //numero de piste oqp par file...
int Num_Sect; // ...... - .... secteur...
};
struct Noeud{
char * Nom_file,*Type_file;
ADRESSE * Adr;
DATE * date;
Noeud *gauche,*droite,*pere ; //sous arbres gauche et droit...
};
class Repertoire{
public:
Noeud * Racine;
void CreerFile( );
Noeud * InsererFile(char *nom,Noeud* courant);
.....
};
void repertoire::CreerFile() {
char reponse,*nom;
Racine=new(Noeud);
Racine->gauche=Racine->droite->Racine->pere=Null;
courant->Nom_file= "toto" ????
/* là je bloque,parce que j'ai +sieurs champs,je me demande si pr le premier noeud il faut initialiser directemt tous les champs,du genre: Racine->X= "Y"; /*
Avec un arbre dont le noeud comprend un seul champ,j'aurais fais simplement Racine->X=element pr stocker element dans X;
J'espère que vs allez comprendr de koi je parle et que vs allez m'aider le + tôt possible,merci...
pmbala
Messages postés30Date d'inscriptionsamedi 4 décembre 2004StatutMembreDernière intervention 2 avril 2008 27 déc. 2004 à 11:09
Merci pr ta reponse,je vais essayer tt à l'heure! je suppose que tu veux parler de new pr allouer la memoire,car je suis en c++,mais dis moi pr stocker les autres infos dans le noeud est ce que je vais à chaque fois utiliser strcpy(...)? J'ai pensé à creer une fction Arbre * Saisi_Info() qui fait ce travail pr ttes les variables et puis je ne fais que l'appeler ds InsererFile(... ),merci encore pr ta reponse...
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 27 déc. 2004 à 11:20
strcpy est à utiliser pour toutes les chaînes de caractères, pour les autres, c'est une affectation directes. Met directement des structure ADRESSE et DATE dans le noeud plutôt que des pointeurs (cela évitera de faire des allocations multiples d'un noaud, puis des chaînes, puis des sous-structure => faire directement une allocation globales du noeud) :
struct Noeud{
char Nom_file[256];
char Type_file[256];
ADRESSE Adr;
DATE date;
Noeud *gauche,*droite,*pere ; //sous arbres gauche et droit...
};
pour créer et initialisaer un nouveau noeud :
Noeud* Creer()
{
Noeud* n = new Noeud;
strcpy(n->Nom_file, "nom fich");
strcpy(n->Type_file, 'Type fich");
n->Adr.Num_piste = 1234;
n->Adr.Num_Sect = 4567;
n->date.jj = 27;
n->date.mm = 12;
n->date.aa = 2004;