[C, C++] typedef j'ai pas tout compris

typedef j'ai pas tout compris [C, C++] - C++ - Programmation

Marsh Posté le 12-01-2003 à 11:40:55    

bon j'ai l'algorithme suivant à réaliser :
 

type Bloc = structure
        nom  : Chaîne // sert uniquement dans le programme appelant  
               coef : Naturel  // coefficient
            fstruct
 
Représentation choisie pour le domaine : un tableau de 3 éléments de type Bloc (les notes obtenues), indicé par les constantes énumérées MA11,AD11,AN11.  
énumération { MA11, AD11, AN11 }
 
type Domaine = tableau [MA11..AN11] de Bloc


 
Alors pour le moment j'ai fait :
 

Code :
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. typedef struct bloc{
  4. char nom;
  5. int coef;
  6. }Bloc;
  7. typedef enum {MA11,AD11,AN11};


 
Je ne vois pas comment définir mon tableau indicé par MA11,AD11,AN11 ; qui doit s'appeler Domaine et qui doit contenir des Blocs.
 
comment fait-on ??  :??:  
 
Merci !  :jap:


Message édité par ceyquem le 12-01-2003 à 11:42:00
Reply

Marsh Posté le 12-01-2003 à 11:40:55   

Reply

Marsh Posté le 12-01-2003 à 12:16:22    

c'est bon j'ai finalement trouvé :
 

Code :
  1. typedef Bloc Domaine[3];

Reply

Marsh Posté le 12-01-2003 à 12:40:29    

Si j'ai bien compris l'énoncé, essaie:
 

Code :
  1. typedef struct bloc{
  2. char nom;
  3. int coef;
  4. }Bloc;
  5. typedef enum {MA11,AD11,AN11}; // Liste enumérée
  6. typedef struct Domaine {
  7. Bloc elt[3]; // Tableau de 3 éléments de type Bloc
  8. } Domaine;


 
Après tu accèdes aux valeurs par:
 
Domaine.elt[MA11].nom (ou coef)
Domaine.elt[AD11].nom (ou coef)
Domaine.elt[AN11].nom (ou coef)


Message édité par kfman le 12-01-2003 à 13:16:06

---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 12-01-2003 à 16:57:27    

Tiens j'ai bricolé ça:
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. typedef struct bloc {
  4.   char nom[20];
  5.   int coef;
  6. } Bloc; 
  7. enum indice {MA11,AD11,AN11}; // Liste enumérée
  8. typedef struct domaine { // Création domaine incluant 3 éléments Bloc
  9.   Bloc elt[3]; // Tableau de 3 éléments de type Bloc
  10. } Domaine;
  11. Domaine dom;
  12. int main(int argc, char * argv[]) {
  13.  
  14.   int i;
  15.    
  16.   for (i=MA11;i<(AN11+1);i++) {
  17.     printf("\nElement %d\n",i);
  18.     printf("Nom: " );
  19.     scanf("%s",dom.elt[i].nom);
  20.     printf("coeff: " );
  21.     scanf(" %d",&dom.elt[i].coef);
  22.  
  23.   }
  24.  
  25.   printf("\n" );
  26.   printf("Elements du domaine:\n" );
  27.   printf("--------------------\n" );
  28.   printf("\n" );
  29.   for (i=MA11;i<(AN11+1);i++) {
  30.     printf("[%d]\n",i);
  31.     printf("Nom  : %s\n",dom.elt[i].nom);
  32.     printf("Coeff: %d\n",dom.elt[i].coef);
  33.     printf("\n" );
  34.   }
  35.  
  36.   return(0);
  37. }


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 13-01-2003 à 12:50:00    

merci pour le code, je commence à comprendre un peu mieux la commande typedef...  :)
 
 :hello:

Reply

Marsh Posté le 13-01-2003 à 12:52:13    

Simple... Si une expression déclares une variable/fonction, mettre typedef devant déclares un synonyme de son type.

Code :
  1. Bloc nom[3]; //nom est une variable
  2. typedef Bloc nom[3]; //nom est le type de la variable précédente


 

Citation :

Code :
  1. typedef enum {MA11,AD11,AN11};


Je savais même pas qu'on pouvais faire ça.
Le typedef ne sert à rien vu qu'il n'y a pas de nom.
 
Je te proposes:

Code :
  1. struct Bloc{
  2. char nom; //ou char* ou char[nn]
  3. int coef;
  4. };
  5. typedef struct Bloc Bloc; //simplifie la vie en C
  6. enum {MA11, AD11, AN11, NumBlocs}; //0, 1, 2, 3
  7. //grâce à la numérotation automatique à partir de 0, le dernier vaut le nombre d'éléménts utiles: 3.
  8. typedef Bloc Domaine[NumBlocs];


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

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