/************************************************************************* http://www-sop.inria.fr/oasis/personnel/Carine.Courbis/c/ **************************************************************************/ #include #include #define MAX_REP 5 #define MAX_NOM 20 #define MAX_PRENOM 15 typedef struct { char prenom[MAX_PRENOM]; char nom[MAX_NOM]; unsigned long numero; } Personne; typedef enum{FALSE, TRUE} Boolean; static Personne repertoire[MAX_REP]; static int nbPersonneDansRep = 0; /* Remplit le tableau tab de caracteres tapes au clavier jusqu'au caractere retour chariot exclus. Au maximum (taille-1) caracteres sont mis dans le tableau tab. Le caractere null est ajoute a la fin pour en faire une chaine. Parametre : tab un tableau de 'taille' elements qui sera rempli avec les caracteres saisis taille le nombre d'elements max du tableau tab */ void saisieChaine(char tab[], int taille) { int i; int car; for (i=0; (((car = getchar()) != '\n') && (i= MAX_REP) { printf("Impossible d'ajouter cette nouvelle personne au repertoire car il est plein\n"); aEteInsere = FALSE; } else { aEteInsere = TRUE; repertoire[nbPersonneDansRep++] = pers; } return aEteInsere; } /* Enlève la personne donnée du répertoire si elle est présente ; sinon affiche un message d'erreur pour avertir l'utilisateur. Parametres : nom, prenom (nom et prenom de la personne dela enlever) Retour : TRUE si la personne a pu être enlevée, FALSE sinon */ Boolean enlevePersonneDuRep(char * nom, char * prenom) { int indice = getIndicePersonne(nom, prenom); Boolean aEteEnleve; if (indice == -1) { aEteEnleve = FALSE; printf("La personne %s %s n'est pas dans votre repertoire donc l'operation de suppression a echoue", nom, prenom); } else { aEteEnleve = TRUE; if (indice < nbPersonneDansRep-1) { int i; for (i=indice; i 999999999)) printf("Le numero %lu de %s %s est surement faux car ce n'est pas un numero de metropole\n", pers.numero, pers.prenom, pers.nom); return pers; } /* Retourne le numero de telephone (sur 9 chiffres normalement ie sans le digit indiquant l'operateur telephonique) de la personne donnee. Si la personne n'est pas dans le repertoire, retourne 0 Parametres : nom, prenom (nom et prenom de la personne recherchee) Retour : le numero de la personne recherchee si presente dans le repertoire, 0 sinon. */ unsigned long getNumero(char * nom, char * prenom) { int indice = getIndicePersonne(nom, prenom); unsigned long numero = 0; if (indice == -1) { printf("Cette personne %s %s n'est pas dans votre repertoire"); } else { numero = repertoire[indice].numero; } return numero; } /* Affiche le contenu du repertoire ie la liste des personnes avec leur numero de telephone (ajoute le digit indiquant l'operateur telephonique preselectionne devant le numero de telephone). Si le repertoire est vide, indique que le repertoire est vide. */ void afficherRepertoire() { int i = 0; printf("\n\n***************************************\n"); if (nbPersonneDansRep <= 0) printf("Votre repertoire telephonique est vide"); else { do { printf("%s %s 0%lu\n", repertoire[i].nom, repertoire[i].prenom, repertoire[i].numero); i++; } while (i