Svp quelqu'un peut m'aider à faire le main.c

Fermé
lamiabmw Messages postés 6 Date d'inscription jeudi 27 novembre 2014 Statut Membre Dernière intervention 29 novembre 2014 - Modifié par baladur13 le 29/11/2014 à 22:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 nov. 2014 à 22:08
Bonjour,
Administration.h
#define capacite 1000
#include<stdio.h>
#include<string.h>
#include "personnel.h"
#include "patient.h"
void ajouter_personnel (personnel A[],personnel p,int *nA);
void supprimer_personnel (personnel A[],char nom[],int *nA);
void ajouter_patient (patient B[],patient p,int *nB);
void supprimer_patient (patient B[],char nom[],int *nB);
void configurer_parcours (char * parcours,char * c1,char * c2 ,int *n);

Administration.c
#include<stdio.h>
#include<string.h>
#include"Administration.h"
void ajouter_personnel (personnel A[],personnel p,int *nA)
{if(*nA <=capacite)
A[*nA]=p;
(*nA)++;

}
void supprimer_personnel (personnel A[],char nom[],int *nA)
{
int pos=-1;
int i=0;
while (pos==-1||i<*nA)
{
if(strcmp(A[i].nom,nom)==0)
pos=i;
i++;
}
if(pos!=-1)
{
for(i=pos;i<*nA-1;i++)
A[i]=A[i+1];
(*nA)--;
}
}
void ajouter_patient (patient B[],patient p,int *nB)
{if(*nB <=capacite)
B[*nB]=p;
(*nB)++;

}
void supprimer_patient (patient B[],char nom[],int *nB)
{
int pos=-1;
int i=0;
while (pos==-1||i<*nB)
{
if (strcmp(B[i].nom,nom)==0)
pos=i;
i++;
}
if(pos!=-1)
{
for(i=pos;i<*nB-1;i++)
B[i]=B[i+1];
(*nB)--;
}
}
void configurer_parcours (char * parcours,char * c1,char * c2 ,int *n)
{  char *P1, *P2;
int choix1,choix2;
int pos=-1;
int TROUVE;
parcours = "E01";
strcpy (parcours ,"C01 S01 L01 L02 C02 V01 I01 D01 B01 M01 SOUT ");
do
{
printf("VOULEZ VOUS AJOUTER UN CAPTEUR");
scanf("%d",&choix1);
}
while( choix1 <0||choix1 >1);
if (choix1==1)
{printf("DONNER LE NOM DE NOUVEAU CAPTEUR");
fflush(stdin);
scanf("%s",c1);
strcat(parcours,c1);

}
else 
printf("PAS DE NOUVEAU CAPTEUR");
do
{
printf("VOULEZ VOUS SUPPRIMER UN CAPTEUR");
scanf("%d",&choix2);
}
while( choix2 <0||choix2 >1);
if (choix2==1)
{printf("DONNER LE NOM DU CAPTEUR À SUPPRIMER");
fflush(stdin);
scanf("%s",c2);
for (P2=parcours; *P2; P2++)
     {
      TROUVE = 0;
      for (P1=c2 ; *P1 && !TROUVE ; P1++)
           if (*P2==*P1)
               {
                TROUVE = 1;
                strcpy(P1, P1+1);
               }
     }
}
else
printf("PAS DE CAPTEUR A SUPPRIMER");
}


EDIT: Ajout de la coloration syntaxique.

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 nov. 2014 à 16:35
Bonjour,

Quelques remarques déjà sur ton code :

#define capacite...
Habituellement, on met les noms définis avec #define en majuscule.
Ca aide à la lisibilité.

#define <stdio.h> ? etc. pourquoi le mettre dans ton .h ?
Tu n'en as pas besoin...

fflush(stdin);
A ne pas utiliser en C. Comportement indéfini...
Il faut faire la fonction soi-même (lecture de stdin jusqu'à rencontrer '\n' ou EOF).

{if(*nA <=capacite)
A[*nA]=p;

Quelle est la taille de ton tableau ? capacite ou capacite+1 ?

int TROUVE;
On met plutôt les noms de variables en minuscule...

</ital>parcours = "E01";
strcpy (parcours ,"C01 S01 L01 L02 C02 V01 I01 D01 B01 M01 SOUT ");
do </ital>
Si tu fais parcours="...", tu perds l'allocation de la variable (enfin si cela a été alloué ?).
Pourquoi faire un strcpy(...), juste après ? Tu perds l'instruction précédente (parcours="...");. De plus, il faut faire une allocation dynamique avant de faire ça, sinon plantage...

Pour le main(), on ne peut pas faire comme ça. C'est lui qui orchestre toutes tes fonctions. C'est lui qui porte la fonctionnalité de ton programme. Donc, sans connaître le but de ton programme, pas possible...
Que n'arrives-tu pas à faire dans le main() ?

Cdlt,
0
lamiabmw Messages postés 6 Date d'inscription jeudi 27 novembre 2014 Statut Membre Dernière intervention 29 novembre 2014
29 nov. 2014 à 21:10
Merci. je veux tester si mon code fonctionne ou non car mon code est une tache de projet,donc j'ai besoin d'un petit main pour l'exécuter. le code compile .
Cordialement
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 nov. 2014 à 21:21
Tu n'as pas répondu à mon post...

{if(*nA <=capacite)
A[*nA]=p;
Quelle est la taille de ton tableau ? capacite ou capacite+1 ?


Et puis, parcours = "E01";
strcpy (parcours ,"C01 S01 L01 L02 C02 V01 I01 D01 B01 M01 SOUT ");
do

c'est à corriger également dans ton code...

Ensuite, pour tester ton code, bah tu appelles tes fonctions... C'est quoi qui te bloque ?
0
lamiabmw Messages postés 6 Date d'inscription jeudi 27 novembre 2014 Statut Membre Dernière intervention 29 novembre 2014
29 nov. 2014 à 21:45
La taille de tableau doit être < capacite pour je puisse ajouter un élément
et pour la 2éme je doit faire comme ça parcours ="E01 C01 S01 L01 L02 C02 V01 I01 D01 B01 M01 SOUT " ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
29 nov. 2014 à 22:08
Si ton tableau a pour taille : capacite (et comme déjà dit, je te conseille de mettre des majuscules...)
Il faut mettre : if(*nA <capacite), (et non <=).

je doit faire comme ça parcours ="E01 C01 S01 L01 L02 C02 V01 I01 D01 B01 M01 SOUT " ?
Non, tu peux utiliser strcpy(), mais il faut s'occuper de l'allocation. Soit statique (tableau) soit dynamique (malloc()/calloc()).
0