[c]mettre des structure ds un tableau
informaticienne
-
informaticienne -
informaticienne -
Bonjour,
j'aimerais savoir comment mettre plusieurs structures dans un tableau.
voici mon programme.
#include <iostream>
#define nmax 30
typedef char chaine[nmax];
typedef enum{homme,femme}sexe;
typedef enum{libere,exempte,reforme,incorporable}sit_mit;
typedef union{sit_mit sitmit;
chaine nomjf;}complement;
typedef struct adresse{
unsigned int num;
chaine rue;
unsigned int code;
chaine localite;
}adresse;
typedef struct employe{
chaine nom;
chaine prenom;
sexe sex;
complement comp;
adresse ad;
}employe;
void saisie_structure(){
int s,m;
employe *emp;
emp=(employe*)malloc(sizeof(employe*));
printf("taper le nom\n");
gets(emp->nom);
printf("taper le prenom\n");
gets(emp->prenom);
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
while ((s!=0)&&(s!=1)){
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
}
switch(s){
case 0:emp->sex=homme;
break;
case 1:emp->sex=femme;
}
if (emp->sex==femme){
printf("taper le nom de jeune fille\n");
gets(emp->comp.nomjf);
}
else
printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n");
scanf("%d",&m);
fflush(stdin);
switch(m){
case 0:emp->comp.sitmit=libere;
break;
case 1:emp->comp.sitmit=exempte;
break;
case 3:emp->comp.sitmit=reforme;
break;
case 4:emp->comp.sitmit=incorporable;
break;
}
printf("taper votre adresse\n");
printf("taper le numero de la rue\n");
scanf("%ud",&emp->ad.num);
fflush(stdin);
printf("taper le nom de la rue\n");
gets(emp->ad.rue);
printf("taper le code postale");
scanf("%ud",&emp->ad.code);
fflush(stdin);
printf("taper la localite\n");
gets(emp->ad.localite);
}
int main(){
int n,i;
employe tab[30];
printf("taper le nombre de personnes\n");
scanf("%d",&n);
fflush (stdin);
for(i=0;i<n;i++){
saisie_structure();
}
}
merci
j'aimerais savoir comment mettre plusieurs structures dans un tableau.
voici mon programme.
#include <iostream>
#define nmax 30
typedef char chaine[nmax];
typedef enum{homme,femme}sexe;
typedef enum{libere,exempte,reforme,incorporable}sit_mit;
typedef union{sit_mit sitmit;
chaine nomjf;}complement;
typedef struct adresse{
unsigned int num;
chaine rue;
unsigned int code;
chaine localite;
}adresse;
typedef struct employe{
chaine nom;
chaine prenom;
sexe sex;
complement comp;
adresse ad;
}employe;
void saisie_structure(){
int s,m;
employe *emp;
emp=(employe*)malloc(sizeof(employe*));
printf("taper le nom\n");
gets(emp->nom);
printf("taper le prenom\n");
gets(emp->prenom);
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
while ((s!=0)&&(s!=1)){
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
}
switch(s){
case 0:emp->sex=homme;
break;
case 1:emp->sex=femme;
}
if (emp->sex==femme){
printf("taper le nom de jeune fille\n");
gets(emp->comp.nomjf);
}
else
printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n");
scanf("%d",&m);
fflush(stdin);
switch(m){
case 0:emp->comp.sitmit=libere;
break;
case 1:emp->comp.sitmit=exempte;
break;
case 3:emp->comp.sitmit=reforme;
break;
case 4:emp->comp.sitmit=incorporable;
break;
}
printf("taper votre adresse\n");
printf("taper le numero de la rue\n");
scanf("%ud",&emp->ad.num);
fflush(stdin);
printf("taper le nom de la rue\n");
gets(emp->ad.rue);
printf("taper le code postale");
scanf("%ud",&emp->ad.code);
fflush(stdin);
printf("taper la localite\n");
gets(emp->ad.localite);
}
int main(){
int n,i;
employe tab[30];
printf("taper le nombre de personnes\n");
scanf("%d",&n);
fflush (stdin);
for(i=0;i<n;i++){
saisie_structure();
}
}
merci
A voir également:
- [c]mettre des structure ds un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
11 réponses
tout les structur qui tu a fais ne change pas mais tu ajoute une autre structure de pointeur comme ca :
struct point
{
adresse ad;
employe eml;
complement comp;
};
typedef struct point pointeur;
//pour declare le tableau
pointeur tab[30];
//pour aller a la nom de emplayer par exemple
tab[i].eml.nom
struct point
{
adresse ad;
employe eml;
complement comp;
};
typedef struct point pointeur;
//pour declare le tableau
pointeur tab[30];
//pour aller a la nom de emplayer par exemple
tab[i].eml.nom
et comme ca c'est juste?
#include <iostream>
#define nmax 30
typedef char chaine[nmax];
typedef enum{homme,femme}sexe;
typedef enum{libere,exempte,reforme,incorporable}sit_mit;
typedef union{sit_mit sitmit;
chaine nomjf;}complement;
typedef struct adresse{
unsigned int num;
chaine rue;
unsigned int code;
chaine localite;
}adresse;
typedef struct employe{
chaine nom;
chaine prenom;
sexe sex;
complement comp;
adresse ad;
}employe;
void saisie_structure( employe emp[]){
int s,m;
printf("taper le nom\n");
gets(emp->nom);
printf("taper le prenom\n");
gets(emp->prenom);
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
while ((s!=0)&&(s!=1)){
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
}
switch(s){
case 0:emp->sex=homme;
break;
case 1:emp->sex=femme;
}
if (emp->sex==femme){
printf("taper le nom de jeune fille\n");
gets(emp->comp.nomjf);
}
else
printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n");
scanf("%d",&m);
fflush(stdin);
switch(m){
case 0:emp->comp.sitmit=libere;
break;
case 1:emp->comp.sitmit=exempte;
break;
case 3:emp->comp.sitmit=reforme;
break;
case 4:emp->comp.sitmit=incorporable;
break;
}
printf("taper votre adresse\n");
printf("taper le numero de la rue\n");
scanf("%ud",&emp->ad.num);
fflush(stdin);
printf("taper le nom de la rue\n");
gets(emp->ad.rue);
printf("taper le code postale");
scanf("%ud",&emp->ad.code);
fflush(stdin);
printf("taper la localite\n");
gets(emp->ad.localite);
}
int main(){
int n,i;
employe emp[30];
printf("taper le nombre de personnes\n");
scanf("%d",&n);
fflush (stdin);
for(i=0;i<n;i++){
saisie_structure(emp);
}
}
#include <iostream>
#define nmax 30
typedef char chaine[nmax];
typedef enum{homme,femme}sexe;
typedef enum{libere,exempte,reforme,incorporable}sit_mit;
typedef union{sit_mit sitmit;
chaine nomjf;}complement;
typedef struct adresse{
unsigned int num;
chaine rue;
unsigned int code;
chaine localite;
}adresse;
typedef struct employe{
chaine nom;
chaine prenom;
sexe sex;
complement comp;
adresse ad;
}employe;
void saisie_structure( employe emp[]){
int s,m;
printf("taper le nom\n");
gets(emp->nom);
printf("taper le prenom\n");
gets(emp->prenom);
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
while ((s!=0)&&(s!=1)){
printf("taper %d pour homme et %d pour femme\n",0,1);
scanf("%d",&s);
}
switch(s){
case 0:emp->sex=homme;
break;
case 1:emp->sex=femme;
}
if (emp->sex==femme){
printf("taper le nom de jeune fille\n");
gets(emp->comp.nomjf);
}
else
printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n");
scanf("%d",&m);
fflush(stdin);
switch(m){
case 0:emp->comp.sitmit=libere;
break;
case 1:emp->comp.sitmit=exempte;
break;
case 3:emp->comp.sitmit=reforme;
break;
case 4:emp->comp.sitmit=incorporable;
break;
}
printf("taper votre adresse\n");
printf("taper le numero de la rue\n");
scanf("%ud",&emp->ad.num);
fflush(stdin);
printf("taper le nom de la rue\n");
gets(emp->ad.rue);
printf("taper le code postale");
scanf("%ud",&emp->ad.code);
fflush(stdin);
printf("taper la localite\n");
gets(emp->ad.localite);
}
int main(){
int n,i;
employe emp[30];
printf("taper le nombre de personnes\n");
scanf("%d",&n);
fflush (stdin);
for(i=0;i<n;i++){
saisie_structure(emp);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tu ne peut pas cas si tu declare une tableau tout les cas de ce tableau est de meme type.
mais tu peut faire une tableau de stucture dans tuot les case 3 strecture.......
mais tu peut faire une tableau de stucture dans tuot les case 3 strecture.......
L'indentation n'existant pas, je n'ai pas pris la peine de tout détailler.
L'art de la programmation est de faire quelque chose qui marche, mais il est inutile d'en rajouter des km car ensuite il est plus difficile de trouver les erreurs.
Exemple
devient
Ne pas oublier de traiter les erreurs de saisie, c'est très très important.
L'art de la programmation est de faire quelque chose qui marche, mais il est inutile d'en rajouter des km car ensuite il est plus difficile de trouver les erreurs.
Exemple
printf ("taper %d pour homme et %d pour femme\n",0,1); scanf ("%d",&s); switch(s) { case 0: emp->sex=homme; break; case 1: emp->sex=femme; } if (emp->sex==femme) { printf ("taper le nom de jeune fille\n"); gets (emp->comp.nomjf); } else { printf("taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n"); scanf("%d",&m); fflush(stdin); switch(m) { case 0: emp->comp.sitmit=libere; break; case 1: emp->comp.sitmit=exempte; break; case 3: emp->comp.sitmit=reforme; break; case 4: emp->comp.sitmit=incorporable; break; } }
devient
printf ("Taper %d pour homme et %d pour femme\n", 0, 1); scanf ("%d", &s); emp->sex = s; // Il serait bon de traiter l'erreur de saisie si != 0 et != 1 if (emp->sex==femme) { printf (Taper le nom de jeune fille\n"); gets (emp->comp.nomjf); } else { printf ("Taper la situation militaire:taper un pour libere,deux pour exempte,trois pour reforme et quatre pour incorporable\n"); scanf ("%d", &m); fflush (stdin); emp->comp.sitmit = m-1; // Il serait bon de traiter l'erreur de saisie si != 1 et != 2 et != 3 et != 4 }
Ne pas oublier de traiter les erreurs de saisie, c'est très très important.
A la place de "emp->sex = s;" mettre "emp->sex = s - '0';"
A la place de "emp->comp.sitmit = m-1;" mettre "emp->comp.sitmit = m - '1';"
Mille excuses.
Et puis:
printf ("Taper %d pour homme et %d pour femme\n", 0, 1);
peut avantageusement se remplacer par:
printf ("Taper'0' pour homme et '1' pour femme\n");
A la place de "emp->comp.sitmit = m-1;" mettre "emp->comp.sitmit = m - '1';"
Mille excuses.
Et puis:
printf ("Taper %d pour homme et %d pour femme\n", 0, 1);
peut avantageusement se remplacer par:
printf ("Taper'0' pour homme et '1' pour femme\n");