Probleme de warning en langage C sur Code Blocks

Fermé
N3O300 - Modifié le 17 oct. 2020 à 14:43
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 18 oct. 2020 à 19:49
Bonjour, j'aurais besoin d'aide car je travaille sur le système des files et des piles et je comprend pas l'erreur "error: incompatible types when assigning to type 'int' from type 'patient {aka struct <anonymous>}'| " je l'ai mis en gras souligné et un warning que je ne comprend pas non plus " passing argument 1 of 'gets' makes pointer from integer without a cast [-Wint-conversion]|" qui est seulement sous ligné merci de me répondre.

Et voici mon sujet

On souhaite écrire un programme qui simule la gestion des files d’attentes dans un grand centre médical afin d’étudier le temps d’attente moyen des patients avant de voir leur demande traitée .Un patient est repéré par :
•son nom
•sa demande (1) prendre rendez-vous, 2) venir pour un rendez-vous)
•le nom de son médecin traitant : pour simplifier on dira X,Y ou Z pour les noms des médecins possibles.
•son heure d’arrivée dans la file d’attente principale
on distingue :
•la file d’attente principale où arrive chaque personne entrant dans le bâtiment, et où quand on traite une personne :–soit on lui donne un rendez-vous et elle s’en va, soit on l’oriente vers la file d’attente de son médecin si elle vient en ayant rendez-vous
•les 3 files d’attente des médecins (X, Y ou Z) où quand on traite une personne on affiche simplement les informations la concernant et notamment son heure d’arrivée
Donc attention ,les éléments des 4 files d’attente sont identiques, bâtis sur le même modèle, mais l’ajout et la suppression dans une des 3 files secondaires ne sont pas identiques au traitement dans la file d’attente principale.

Travail à faire :
•programmer les primitives d’ajout et de suppression dans la file principale
•faire de même pour le modèle de file secondaire (celle de chaque médecin)
•faire un menu où l’utilisateur peut choisir entre :
–ajouter quelqu’un à la file principale
–supprimer quelqu’un de la file principale (et donc soit afficher soit ajouter la personne dans une file secondaire)
–supprimer quelqu’un d’une file secondaire en précisant laquelle
–afficher le contenu des 4 files d’attente
–quitter le programme




#include <stdio.h>
#include <stdlib.h>
typedef struct{
char nom[100];
int rendezVous;
int NomM;
int Heure;
int Minute;
}patient;

typedef struct el * pel;
typedef struct el{
int v;
pel suivant;
}tel;

patient agenda;

pel creeElem(patient agenda){
pel tmp;
tmp=(pel)malloc(sizeof(tel));
tmp->v=agenda;
tmp->suivant=NULL;
return tmp;
}

pel ajouter(pel f, patient agenda){
pel aux =creeElem(agenda);
pel tmp = f;
if(f==NULL){
return aux;
}
else{
while(tmp->suivant != NULL){
tmp=tmp->suivant;
}
tmp->suivant=aux;
return f;
}}


pel supprimer(pel f){
pel tmp=f;
if(f==NULL){
printf("File vide\n");
}
else{
f=f->suivant;
printf(" on a supprimé %i\n ",tmp->v);
free(tmp);
}
return f;
}

void affiche(pel f)
{
pel tmp=f;
while(tmp->suivant!=NULL)
{
printf("%i\n",tmp->v);
tmp=tmp->suivant;
}
printf("%i\n",tmp->v);
}




int main()
{
int menu,fin=0;
pel f=NULL;
do
{
do
{
printf("1-ajouter\n2-suprimer\n3-affiche\n4-Quitter\n");
scanf("%i",&menu);
}
while(menu<1 || menu>4);
switch(menu){
case 1: printf("saisir votre nom\n");
gets(agenda.nom[100]);
printf("saisir le un chiffre 1 prendre rendez-vous 2 venir pour un rendez-vous\n");
scanf("%i",&agenda.rendezVous);
printf("saisir le un chiffre 1 pour le doctor X 2 pour le docteur Y et 3 pour le docteur Z\n");
scanf("%i",&agenda.NomM);
printf("a quels heure ?\n");
scanf("%i",&agenda.Heure);
scanf("%i",&agenda.Minute);
f=ajouter(f,agenda);
break;
case 2: f=supprimer(f);
break;
case 3: affiche(f);
break;
case 4: fin=1;
return 0;
break;
}
}
while(fin==0);


return 0;
}






Configuration: Windows / Edge 18.18362
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
18 oct. 2020 à 19:49
Bonjour,

Tu as défini le champ
v
comme étant un
int
, et tu souhaites y mettre un
patient
dedans! Tu devrais définir
v
comme étant un
patient
.

Et pour le
gets
, il faut lui passer un tableau de
char
, et tu lui passes un simple
char
extrait d'un tableau. Il faut écrire
gets(agenda.nom);
.
0