Construction de structure

firk -  
 firk -
Comment créer une structure indiv avec les champs char nom[], char prénom[], adresse,
la taille à allouer indiv I?
j'ai fait qqch du genre :

struct locataires{
{ int nombre;
char nom[];char prénom[];
char statut[];
};

struct locataire L; /*à mettre dans main()?*/
L.nombre=%d;
L.nom=%s;
L.prénom=%s;
L.statut=*statut[];/*pointeur sur tableau qui donne directement le statut du client*/
}

dans main()
struct locataire L=malloc((*int)10 sizeof (struct locataire));
{ L.nombre=&d;
L.nom=&s;
L.prénom=&s;
L.statut=*statut[6];/*pointeur sur tableau qui donne directement le statut du client*/
}
if(!=L)
{ printf("malloc failed");}
A voir également:

6 réponses

kazouu Messages postés 466 Statut Membre 12
 
oups comme ceci c'est mieu

f(struct L.statut[0]==1){blalbla}
else if(struct L.statut[0]==2){balbal2}
1
firk
 
ca correspond à quoi ton ==1, ==2?
0
firk
 
kazouu, peux-tu me donner ton mail ou préfères-tu que je donne le mien?
0
firk
 
regarde attentivement le programme suivant et indique moi les corrections à apporter :
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define TRUE 1
#define FALSE 0

void cautsol( int r, int l) /*Examen de solvabilité du client : cas les plus simples*/
{ if(r>=3*l)
printf("vous pouvez soumettre votre dossier\n");
else{

if(r<2*l)
printf("Impossibilité de soumettre votre dossier\n");

else{ if(r>=2*l && r<3*l)
printf("Demande de caution solidaire\n");
}
}
}

char *statut[]={ "CDI hors période d'essai ou préavis de licenciement",
"CDD, CNE, ou CDI en période d'essai",
"Etudiant",
"TNS",
"Retraités et autres pensionnés",
"En place depuis 12 mois, sans incident de paiement"};

struct locataires{
{ int nombre;
char *nom[20];char *prénom[20];char *adresslot[60];
char *statut[];
};

struct locataire L; /*à mettre dans main()?*/
{scanf("%d",&L.nombre);
scanf("%s",&*L.nom);
scanf("%s",&*L.prénom);
scanf("%s",&*L.statut);/*pointeur sur tableau qui donne directement le statut du client*/
}

/*Intéressons-nous au revenu net cumulé du client

char nommois[]={"Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre"};

/*Ensuite je veux r(*date[i]) pour indiquer précisément le montant du revenu net pour tel mois.*/


/*affichrevenu(int r1,int r2,int r3)
{ scanf("%d",&r1);
scanf("%d",&r2);
scanf("%d",&r3);
printf("Votre revenu initial vaut %d\n",r1);
printf("Votre revenu intermédiaire vaut %d\n",r2);
printf("Votre revenu final vaut %d\n",r3);
}

int cumul( int r1,int r2, int r3)
{ int i;int result;
while(r3!=r2 && r3!=r1)
result=(r1+r2+r3)/3; /*dois-je sauvegarder r3 via r3=result;result=%d; ou mettre directement result=(r1+r2+r3)/3;?
}return result;

/*Exposition des coordonnées bancaires du client
int affichRIB(int tab[], int i)
{ for(i=0;i<=23;i++)
scanf("%d",&tab[i]);
}/*int j;
for(i=0;i<=23;i++)
{ for(j=0;j<=9;j++)
V[i]=j;
}

int triRIB(int tab[])
{ int i;
for(i=0;i<23;i++)
{ if(i==5||i==10||i==20)
printf(" ");
printf("%d",tab[i]);
}
}
*/

struct dossier
{ char *A;char *B;char *C;
char *D;char *E;char *F;
char *G;char *H;char *I;
char *J;char *K;
}


void init_struct(dossier * D){ scanf("%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s",&dossier.A,&dossier.B,&dossier.C,&dossier.D,&dossier.E,&dossier.F,&dossier.G,
&dossier.H,&dossier.I,&dossier.J,&dossier.K);
}

{ struct dossier D
{
D.A={"3 derniers bulletins de salaire"};
D.B={"2 derniers avis d'imposition sur le revenu"};
D.C={"Contrat de travail ou Attestation d'employeur(datant de moins d'un mois)"};
D.D={"Pensions ou allocations diverses"};
D.E={"Dernier décompte de la(les) caisse de retraite(s)"};
D.F={"Fiche de renseignements"};
D.G={"R.I.B, R.I.P ou R.I.C.E"};
D.H={"Pièce d'identité"};
D.I={"Carte d'étudiant"};
D.J={"Acte de Caution Solidaire"};
D.K={"Attestation d'assurance Habitation"};
}

};

/*Mettre dans main() si j'ai tel document(==1), return(TRUE), else return(FALSE);de cette façon, on peut vérifier le nombre de documents à notre disposition*/

struct dossierstatut[0]
{ dossierstatut[0].A;
dossierstatut[0].B;
dossierstatut[0].C;
dossierstatut[0].D;
dossierstatut[0].F;
dossierstatut[0].G;
dossierstatut[0].H;
dossierstatut[0].J;
dossierstatut[0].K;
};

struct dossier statut[1]
{ dossierstatut[1].A;
dossierstatut[1].B;
dossierstatut[1].C;
dossierstatut[1].D;
dossierstatut[1].F;
dossierstatut[1].G;
dossierstatut[1].H;
dossierstatut[1].J;
dossierstatut[1].K;
}

struct dossier statut[2]
{ dossierstatut[2].C;
dossierstatut[2].D;
dossierstatut[2].F;
dossierstatut[2].G;
dossierstatut[2].H;
dossierstatut[2].I;
dossierstatut[2].J;
dossierstatut[2].K;
}

struct dossier statut[3]
{ dossierstatut[3].B;
dossierstatut[3].C;
dossierstatut[3].D;
dossierstatut[3].F;
dossierstatut[3].G;
dossierstatut[3].H;
dossierstatut[3].J;
dossierstatut[3].K;
}

struct dossier statut[4]
{ dossierstatut[4].A;
dossierstatut[4].B;
dossierstatut[4].D;
dossierstatut[4].E;
dossierstatut[4].F;
dossierstatut[4].G;
dossierstatut[4].H;
dossierstatut[4].J;
dossierstatut[4].K;
}

struct dossier statut[5]
{ dossierstatut[5].A;
dossierstatut[5].B;
dossierstatut[5].C;
dossierstatut[5].D;
dossierstatut[5].E;
dossierstatut[5].F;
dossierstatut[5].G;
dossierstatut[5].H;
dossierstatut[5].I;
dossierstatut[5].J;
dossierstatut[5].K;
}

affichpensalloc( int i, int R[])/*Se limiter à 5 ou 7 valeurs, voire moins*/
{ for(i=0;i<10; i++)
printf("%f", &R[i]);
}*/

affichdéc(int j, int V[1])
{ scanf("%d", &V[1]);
printf("Veuillez donner le montant de votre dernier décompte\n",V[1]);
}

main()
{ int i,b; int a,d;char s;struct dossier D;
scanf("%d",&a);
scanf("%d",&b);
printf("Votre revenu net est %d euros",a);
printf("Votre loyer est de %d euros",b);
cautsol(a,b);

printf("Une fois votre situation financière établie, nous allons procéder à la composition de votre dossier de location\n");

locataire Total L=(locataire*)malloc(n* sizeof ( locataire));
{ scanf("%d",&L.nombre);
scanf("%s",&L.nom);
scanf("%s",&L.prénom);
scanf("%s",&L.statut)/*pointeur sur tableau qui donne directement le statut du client*/
}
if(!=L)
{ printf("malloc failed");}
/*struct dossier statut[i]==1 va donner la totalité du dossier : mettre un switch(struct dossier[]) */
switch(struct dossier D)
{ case (*statut[0]==1)
{ if(struct dossier *statut[0]==1)
printf("Votre dossier est complet\n");

}

case (*statut[1]==1)
{ if(struct dossier *statut[1]==1)
printf("Votre dossier est complet\n");

}

case (*statut[2]==1)
{ if( struct dossier *statut[2]==1)
printf("Votre dossier est complet\n");

}

case (*statut[3]==1)
{ if( struct dossier *statut[3]==1)
printf("Votre dossier est complet\n");

}
case (*statut[4]==1)
{ if(struct dossier *statut[4]==1)
printf("Votre dossier est complet\n");

}

case (*statut[5]==1)
{ if(struct dossier *statut[5]==1)
printf("Votre dossier est complet\n");

}
0
firk
 
avec le programme que j'ai exposé, comment déclares-tu, A={" un document précis}, jusqu'à K={"k ème document"};
faudrait-il une fonction prenant en compte 2 paramètres tels qu'on a : fonction(int argv, char*argv[])

Je dois faire 6 dossiers au total!
0
kazouu Messages postés 466 Statut Membre 12
 
re firk il y a pas mal de probleme dans ton code deja L.nom=%s; ne veut rien dire
mais je ne comprend pas trop ta question et ton but
0
firk
 
je veux construire une structure avce # champs tels que le nom, le prénom, le nombre, l'adresse du lot, le loyer ttc.
Je ne m'en sors pas!
0
firk
 
Peux-tu me donner ton mail et tu verras par toi-même, kazouu.(je t'enverrai le programme).
0
kazouu Messages postés 466 Statut Membre 12
 
dis précisément ce que tu veux faire en me metant :

ma structure : ( ce que tu veux dedans )

et apres
main : ce que tu veux faire avec tes structure je pourrai peu etre t'aider la c'est beaucoup trop flou
0
firk
 
struct indiv
{char nom, char prénom, int nombre, char adresse du lot, int loyer};
0
firk
 
j'ai oublié dans la main()
main()
{

struct locataire L=malloc((*int)10 sizeof (struct locataire));
{ L.nombre=&d;
L.nom=&s;
L.prénom=&s;
L.statut=&s;/*pointeur sur tableau qui donne directement le statut du client*/
}
if(!=L)
{ printf("malloc failed");}
/*struct dossier statut[i]==1 va donner la totalité du dossier : mettre un switch(struct dossier[]) */
switch(struct dossier D)
{ case (*statut[0]==1)
{ if(struct dossier *statut[0]==1)
printf("Votre dossier est complet\n");

}

case (*statut[1]==1)
{ if(struct dossier *statut[1]==1)
printf("Votre dossier est complet\n");

}

case (*statut[2]==1)
{ if( struct dossier *statut[2]==1)
printf("Votre dossier est complet\n");

}

case (*statut[3]==1)
{ if( struct dossier *statut[3]==1)
printf("Votre dossier est complet\n");

}
case (*statut[4]==1)
{ if(struct dossier *statut[4]==1)
printf("Votre dossier est complet\n");

}

case (*statut[5]==1)
{ if(struct dossier *statut[5]==1)
printf("Votre dossier est complet\n");

}
0
kazouu Messages postés 466 Statut Membre 12
 
le problème c'est pas ton programme c'est ta façon de coder qui est peu commune et je ne comprends vraiment ce que tu veux faire, explique moi avec tes mots
0
firk
 
j'ai 6 catégories d'individus, j'essaie de composer leur dossier de location, et en fonction de l'individu choisi, établir une liste des documents qu'il a à fournir.
au fait , dans la main(), ==1, le 1 correspond à un #define TRUE 1.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kazouu Messages postés 466 Statut Membre 12
 
je ne comprends rien a ton code, explique moi avec tes mots si tu veux que je comprenne
0
kazouu Messages postés 466 Statut Membre 12
 
ahhhh ok ^^

donc si tu as 6 catégories le plus prudent est de faire 1 structure pour chaque catégories

ou alors si tu veux faire une seul structure ( comme tu as a fait )

tu dois remplir ta structure a l'aide de scanf ( je ne les vois pas dans ton code )

et pour tes case je ne trouve pas ca genial le mieu serai de faire

if(struct dossier L.statut[0]==1){blalbla}
else if(struct dossier L.statut[0]==2){balbal2}
0