Construction de structure

Fermé
firk - 20 juin 2008 à 10:44
 firk - 20 juin 2008 à 13:32
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");}

6 réponses

kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 11:55
oups comme ceci c'est mieu

f(struct L.statut[0]==1){blalbla}
else if(struct L.statut[0]==2){balbal2}
1
ca correspond à quoi ton ==1, ==2?
0
kazouu, peux-tu me donner ton mail ou préfères-tu que je donne le mien?
0
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
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 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 10:47
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
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
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 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 11:42
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
struct indiv
{char nom, char prénom, int nombre, char adresse du lot, int loyer};
0
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 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 11:45
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
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 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 11:48
je ne comprends rien a ton code, explique moi avec tes mots si tu veux que je comprenne
0
kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
20 juin 2008 à 11:54
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