prob de pointeur

prob de pointeur - C - Programmation

Marsh Posté le 26-11-2004 à 12:19:55    

Bonjour ,j'ai un ppetit prb avec les liste chainées:
 
je dois pouvoir inserer autant de atiere par eleve et calculer leur moyenne ,pour cela j'ai defini deux structures :
 
typedef struct Televe /* structure gerant les eleves */
{
  struct Tmatiere *pt_tete;  
 
}Televe;
 
typedef struct Tmatiere /* tableau contenant les notes */
{
  int tab_notes [16];
  struct Tmatiere *pt_matiere_suivante; // gerant les matieres
}Tmatiere;
 
Ensuite , j'initialise plusieur eleve et plusiurs matieres
 
// nouveaux eleve
 
// Instantiation des structure Televes
 
Televe jean;
Televe jacques;
Televe cecile;
 
// Instantiation des structure Tmatiere
 
Tmatiere math;
Tmatiere hist_geo;
 
// initialisation des pointeurs de tete dans les structures Televe
 
jean.pt_tete=NULL;
jacques.pt_tete=NULL;
cecile.pt_tete=NULL;
 
// initialisation des valeur des pointeurs
 
francais.pt_matiere_suivante=NULL;
math.pt_matiere_suivante=NULL;
hist_geo.pt_matiere_suivante=NULL;
 
math.tab_notes ={5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16};
hist_geo.tab_notes={15,0,1,12,9,16,20,1,13,10,17,6,13,17,4,6};
 
// initialisation des valeurs de chaques matieres
 
math.tab_notes []={5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16}; // ERREUR
hist_geo.tab_notes={15,0,1,12,9,16,20,1,13,10,17,6,13,17,4,6}; // ERREUR
 
hors je n'arrive pas a compiler ,pourtant j'ai bien definie un tableau dans la structure Tatiere ,quelqu'un peu il m'expliquer l'ereur que j'ai pu faire ,Merci d'avance ...


Message édité par bigmama le 26-11-2004 à 12:22:15
Reply

Marsh Posté le 26-11-2004 à 12:19:55   

Reply

Marsh Posté le 26-11-2004 à 12:38:30    

Tmatiere math = { {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16}, NULL };
 
ou (c99)
 
Tmatiere math = { .tab_notes = {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16},  
.pt_matiere_suivante = NULL };
 
 

Reply

Marsh Posté le 26-11-2004 à 13:25:17    

désolé mais ça ne marche pas;

Reply

Marsh Posté le 26-11-2004 à 13:30:33    

comment ca ??
 
tu fais quoi exactement et c'est quoi le message d'erreur ?

Reply

Marsh Posté le 26-11-2004 à 14:16:42    

bigmama a écrit :

désolé mais ça ne marche pas;


 
:pfff: ben si çà marche, au moins la première des 2 solutions si ton compilateur ne gère pas le C99.
Ton problème vient du fait que tu tentes d'initialiser un tableau en dehors de sa définition, hors c'est le compilateur qui initialise (çà se fait pas au runtime, un tableau est une l-value non modifiable) d'où erreur...

Reply

Marsh Posté le 26-11-2004 à 15:10:25    

pour Tmatiere math = { .tab_notes = {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16},  
.pt_matiere_suivante = NULL };  sous c++builderX
 
 : E2188 Syntaxe de l'expression dans la fonction main en ligne 123

Reply

Marsh Posté le 26-11-2004 à 15:10:42    

pour Tmatiere math = { .tab_notes = {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16},  
.pt_matiere_suivante = NULL };  sous c++builderX
 
 : E2188 Syntaxe de l'expression dans la fonction main en ligne 123

Reply

Marsh Posté le 26-11-2004 à 15:10:47    

pour Tmatiere math = { .tab_notes = {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16},  
.pt_matiere_suivante = NULL };  sous c++builderX
 
 : E2188 Syntaxe de l'expression dans la fonction main en ligne 123

Reply

Marsh Posté le 26-11-2004 à 15:17:52    

et comment tu lui dis à ton c++builderX que tu compiles du c et pas du c++ ?

Reply

Marsh Posté le 26-11-2004 à 15:18:25    

cris56 a écrit :

et comment tu lui dis à ton c++builderX que tu compiles du c et pas du c++ ?


Du C99 [:aloy]

Reply

Marsh Posté le 26-11-2004 à 15:18:25   

Reply

Marsh Posté le 26-11-2004 à 15:19:34    

bigmama a écrit :

pour  
Tmatiere math = {  
  .tab_notes = {5,20,18,2,9,6,12,19,3,11,17,6,13,17,14,16},  
  .pt_matiere_suivante = NULL  
};  sous c++builderX
 
 : E2188 Syntaxe de l'expression dans la fonction main en ligne 123


 
Ca marche avec gcc 3.4, essaye avec mingw

Reply

Marsh Posté le 26-11-2004 à 15:20:55    


 
non, a mon avis c++builderX supporte c99 (quand meme)


Message édité par cris56 le 26-11-2004 à 15:21:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed