Fonction ajouter une personne dans une liste chainné

Fermé
Nillyla Messages postés 5 Date d'inscription vendredi 22 décembre 2017 Statut Membre Dernière intervention 28 janvier 2018 - Modifié le 28 janv. 2018 à 22:07
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 29 janv. 2018 à 13:46
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 29 janv. 2018 à 12:39
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 29 janv. 2018 à 13:47
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