Fonction ajouter une personne dans une liste chainné
Nillyla
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, Svp je comprend pas le role de la fonction vérification_ ide utilisée dans la fonction add(list*list)
void add(List *list)
{
int test=0,i;
do
{
int id;
Person new_person;
Element * new_element=(Element*) malloc(sizeof(Element));
printf("Enter your last name :\n");
scanf("%s",new_person.last_name);
printf("Enter your first name :\n");
scanf("%s",new_person.first_name);
printf("choose your gender (0)Man (1)Women :\n");
scanf("%u",&new_person.gender);
if (list->first==NULL) id=1;
else
id=list->first->person.usercode+1;
new_person.usercode=id;
printf("Your birthday:\n");
for (i = 0; i < 3; ++i)
{
switch(i)
{
case 0:
{
printf("Enter the day :\n");
break;
}
case 1:
{
printf("Enter the month :\n");
break;
}
case 2:
{
printf("Enter the year :\n");
break;
}
}
scanf("%d",&new_person.birthday[i]);
}
printf("enter your CIN :\n");
scanf("%s",new_person.CIN);
new_person.usercode=id;
printf("enter the number of children :\n");
scanf("%u",&new_person.nbr_children);
if (new_person.nbr_children!=0)
{
printf("Enter the id of the children :\n");
}
for (i = 0;i < new_person.nbr_children; i++)
{
scanf("%d",&id);
if (verification_ide(list,id,new_person.gender)==1)
{
new_person.child_id[i]=id;
}
else
i--;
}
new_element->person=new_person;
new_element->next=list->first;
list->first=new_element;
printf("if you want to add a new person press on (1) :\n");
scanf("%d",&test);
} while (test==1);
}
int verification_ide(List *list,int id,int gender)
{
int i;
Element *element=malloc(sizeof(Element));
element=list->first;
while((element!=NULL))
{
if(element->person.gender==gender)
{
for(i=0;i<element->person.nbr_children;i++)
{
if(id==element->person.child_id[i])
return 0;
}
}
element=element->next;
}
return 1;
}
void add(List *list)
{
int test=0,i;
do
{
int id;
Person new_person;
Element * new_element=(Element*) malloc(sizeof(Element));
printf("Enter your last name :\n");
scanf("%s",new_person.last_name);
printf("Enter your first name :\n");
scanf("%s",new_person.first_name);
printf("choose your gender (0)Man (1)Women :\n");
scanf("%u",&new_person.gender);
if (list->first==NULL) id=1;
else
id=list->first->person.usercode+1;
new_person.usercode=id;
printf("Your birthday:\n");
for (i = 0; i < 3; ++i)
{
switch(i)
{
case 0:
{
printf("Enter the day :\n");
break;
}
case 1:
{
printf("Enter the month :\n");
break;
}
case 2:
{
printf("Enter the year :\n");
break;
}
}
scanf("%d",&new_person.birthday[i]);
}
printf("enter your CIN :\n");
scanf("%s",new_person.CIN);
new_person.usercode=id;
printf("enter the number of children :\n");
scanf("%u",&new_person.nbr_children);
if (new_person.nbr_children!=0)
{
printf("Enter the id of the children :\n");
}
for (i = 0;i < new_person.nbr_children; i++)
{
scanf("%d",&id);
if (verification_ide(list,id,new_person.gender)==1)
{
new_person.child_id[i]=id;
}
else
i--;
}
new_element->person=new_person;
new_element->next=list->first;
list->first=new_element;
printf("if you want to add a new person press on (1) :\n");
scanf("%d",&test);
} while (test==1);
}
int verification_ide(List *list,int id,int gender)
{
int i;
Element *element=malloc(sizeof(Element));
element=list->first;
while((element!=NULL))
{
if(element->person.gender==gender)
{
for(i=0;i<element->person.nbr_children;i++)
{
if(id==element->person.child_id[i])
return 0;
}
}
element=element->next;
}
return 1;
}
A voir également:
- Fonction ajouter une personne dans une liste chainné
- Liste déroulante excel - Guide
- Fonction si et - Guide
- Ajouter une signature sur word - Guide
- Pourquoi je ne peux pas ajouter une personne sur facebook - Guide
- Liste déroulante en cascade - Guide
1 réponse
Salut Nillyla,
S'il existe, la fonction renvoie 0, autrement, elle renvoie 1.
Je n'ai pas trop regardé le reste du code. Note qu'il n'est pas nécessaire de mettre des accolades dans le case d'un switch / case. Le case se termine par un break, qui fait un saut inconditionnel pointant au-delà de l'accolade fermante du switch, c'est tout.
Dal
int verification_ide(List *list,int id,int gender)vérifie si pour un genre donné (gender) l'id de l'enfant saisit existe déjà dans l'un des enregistrements existants de la liste chaînée.
S'il existe, la fonction renvoie 0, autrement, elle renvoie 1.
Je n'ai pas trop regardé le reste du code. Note qu'il n'est pas nécessaire de mettre des accolades dans le case d'un switch / case. Le case se termine par un break, qui fait un saut inconditionnel pointant au-delà de l'accolade fermante du switch, c'est tout.
Dal
Le fait de mettre des accolades dans le case (ou ailleurs au milieu du code d'une fonction C) n'y changera rien et n'est réellement utile que si l'on veut donner à certaines variables déclarées dans les accolades un scope (portée lexicale) localisé aux lignes de code entre lesdites accolades (ce que tu ne fais pas).