Aide sur un programme C++
Résolu
-
-
-
Bonjour,
svp j'ai deux fonction avec leurs définition mais j'ai rien compris dans leurs défenition
est ce que quelqu'un peut m'aide svp
etudiant::etudiant(char * n,char *p, int a, int nb):personne(n,p,a){
nbre=nb;
matiers=new char*[nb*sizeof (char*)];*********************
notes=new float[nb];
}
void etudiant::saisi(){
static char * buff;**************************
buff=new char [100];***********************
for (int i=0;i<nbre;i++){
cout<<"entrer la "<< i + 1 << "eme matiers "<<endl;
cin>>buff;
*(matiers+i)=new cha[strlen(buff)+1];******************************
strcpy(*(matiers + i), buff);************************
cout << "entrer la note de la matiers "<<i +1 <<endl;
cin>>*(notes + i);
}
}
j'ai pas compris les linge où j'ai met des ************
merci d'avance
svp j'ai deux fonction avec leurs définition mais j'ai rien compris dans leurs défenition
est ce que quelqu'un peut m'aide svp
etudiant::etudiant(char * n,char *p, int a, int nb):personne(n,p,a){
nbre=nb;
matiers=new char*[nb*sizeof (char*)];*********************
notes=new float[nb];
}
void etudiant::saisi(){
static char * buff;**************************
buff=new char [100];***********************
for (int i=0;i<nbre;i++){
cout<<"entrer la "<< i + 1 << "eme matiers "<<endl;
cin>>buff;
*(matiers+i)=new cha[strlen(buff)+1];******************************
strcpy(*(matiers + i), buff);************************
cout << "entrer la note de la matiers "<<i +1 <<endl;
cin>>*(notes + i);
}
}
j'ai pas compris les linge où j'ai met des ************
merci d'avance
A voir également:
- Aide sur un programme C++
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme sur windows - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
5 réponses
matiers=new char*[nb*sizeof (char*)];*********************
cette ligne crée un tableau de chaine de caractère, de taille nb.
une chaine de caractère est un char *, un char*[] est un tableau de chaine
j'ai quand même l'impression qu'il y a une "erreur" bénigne : il faudrait juste nb dans les crochets pour créer un tableau avec nb éléments, pas besoin du nb * sizeof(char*)
static char * buff;**************************
là j'ai beaucoup de mal à comprendre pourquoi la variable buff est déclarée static.
buff=new char [100];***********************
ici on crée un nouveau tableau en mémoire dynamiquement.
je ne comprends pas pourquoi on le déclare ici avec new, il n'y en a pas besoin.
un simple char buff[100] aurait été suffisant.
d'autre part, il n'y a pas de "delete" qui supprimes cette espace mémoire réservé, donc une erreur qui ne cause pas de crash visible, mais qui rend le programme pas bon du tout ! (fuite de mémoire!)
*(matiers+i)=new cha[strlen(buff)+1];******************************
c'est comme :
matiers[i] = new cha[strlen(buff)+1];******************************
on alloue chaque case du tableau "matiers" dynamiquement. (Ici c'est justifié).
Si tu nên comprends pas plus, il faut lire un cours sur les chaines de caractères et les tableaux de chaine.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionstrcpy(*(matiers + i), buff);************************
regarde l'aide de la fonction....
http://www.cplusplus.com/reference/cstring/strcpy/