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   -
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;
}




A voir également:

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Nillyla,

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
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
le break, d'ailleurs, n'est pas obligatoire. Si on l'omet, l'exécution du programme passera au travers du/des case suivants, en exécutant leur contenu jusqu'au prochain break trouvé ou la fin du switch.

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).
0