cs_ayour
Messages postés1Date d'inscriptionmercredi 13 novembre 2002StatutMembreDernière intervention14 novembre 2002
-
14 nov. 2002 à 03:48
cs_thitoune
Messages postés124Date d'inscriptionmardi 19 février 2002StatutMembreDernière intervention 7 mars 2004
-
15 nov. 2002 à 16:24
veuillez m evoyer une solution pour l ennonce suivant : merci a tt le monde.
Matière exercée: les listes chaînées.
Les services de renseignements possèdent les informations relatives aux pays visités et aux emplois occupés par leurs espions et espionnes. De plus, à chaque trimestre, de nouvelles informations sont mises à jour: mise hors service d'un espion (retraite ou décès), nouvel espion en service, nouvelle localisation d'un espion. Vous devez écrire un programme en C capable de traiter toutes ces informations.
Informations disponibles
Le fichier espion.txt contient les informations sur les espions (chaque ligne comporte trois champs distincts):
Champ 1 (colonnes 1-30) : nom de l'espion ou de l'espionne (maximum de 30 caractères)
Champ 2 (colonnes 31-50) : nom du pays visité (maximum de 20 caractères)
Champ 3 (colonnes 51-79) : emploi occupé (maximum de 29 cararactères)
Ce fichier ne contient aucune erreur. Voici un exemple de quelques lignes de données du fichier:
Bruce Twincam Congo Prof. invite (informatique)
Jef Van Den Nonante Guatemala Avocat de droit international
Callaghan Argentine Prof. invite (informatique)
Le fichier esp2002.txt contient la mise à jour du fichier sur les espions (chaque ligne peut comporter jusqu'à quatre champs distincts):
Champ 1 (colonnes 1-30) : nom de l'espion ou de l'espionne (maximum de 30 caractères)
Champ 2 (colonnes 31-50) : nom du pays visité (maximum de 20 caractères); peut être vide si code est ?E?
Champ 3 (colonnes 51-79) : emploi occupé (maximum de 29 caractères); peut être vide si code est ?E?
Champ 4 (colonnes 80-80) : code de mise à jour (une lettre majuscule)
Le code ?E? indique que l'espion est hors service, le code ?R? indique qu'il s'agit d'un nouvel espion (absent du fichier espion.txt) et le code ?N? indique que l'espion ou l'espionne a été envoyé dans un nouveau pays (soit avec un nouvel emploi, soit avec un emploi déjà occupé).
Ce fichier aussi ne contient aucune erreur. Voici un exemple de quelques lignes de données du fichier:
John Caesar Alexander Beaumont E
Youri Leonide E
Jimmy Bond Madagascar Conseiller en communications R
Vous pouvez importer ces deux fichiers de notre site Web.
Difficultés
Il y a essentiellement deux difficultés.
La première difficulté concerne les données du fichier espion.txt; le nom d'un espion peut apparaître un nombre quelconque de fois. Il est aussi possible que cet espion (ou cette espionne) visite plusieurs fois le même pays ou occupe plusieurs fois le même emploi. Il faut veiller alors à ne pas insérer le pays dans la liste s'il a déjà été visité et/ou à ne pas insérer l'emploi dans la liste si cet emploi a déjà été enregistré pour cet espion (ou cette espionne).
La seconde difficulté concerne les données du fichier esp2002.txt; lorsqu'on rencontre le code ?E?, il faut enlever l'espion (ou l'espionne) de la liste. Il faut toutefois veiller à détruire correctement les sous-listes associées (la liste des pays visités ainsi que la liste des emplois occupés).
Résultats à produire
Après la lecture du fichier espion.txt, votre programme doit produire deux rapports:
? la liste alphabétique des espions (espionnes) avec chaque pays visité (les pays en ordre alphabétique);
? la liste alphabétique des espions (espionnes) avec chaque emploi occupé (les emplois en ordre alphabétique).
Voici un exemple du premier rapport:
ESPION PAYS
Algernon Solvency Chine
Grece
Haiti
Liban
Suede
Allan Barker Albanie
Allemagne
Ethiopie
Japon
Zambie
etc.
Bruce Twincam Att. militaire (capitaine)
Ingenieur civil
etc.
Après la lecture du fichier esp2002.txt, votre programme doit produire les deux mêmes rapports, avec en plus:
? le nombre d'espions mis hors service;
? le nombre de nouveaux espions.
Ces quatre rapports (listes alphabétiques) différents, ainsi que les nombres concernant les espions hors service et les nouveau espions, doivent être produites dans un fichier appelé nbtries.txt.
Remise des résultats
Les résultats sont remis seulement de manière électronique étant donné la taille des résultats (sinon, ça risque de faire beaucoup trop de pages à imprimer). Ainsi, lors de la remise électronique, on ne doit pas oublier de copier dans le répertoire remise-tp4 le fichier contenant le programme, mais aussi le fichier de résultats infoesp.txt.
Exigences pédagogiques
Vous devez utiliser une liste chaînée pour traiter les informations sur les espions et espionnes. De plus, chaque élément de cette liste comporte aussi deux listes chaînées: une liste pour les pays visités et une liste pour les emplois occupés. Autrement dit, vous aurez la structure de données suivante:
typedef struct pays* PtrPays;
typedef struct pays
{
char nom[...]; /* nom du pays */
PtrPays suivant; /* pointeur sur le prochain pays */
} pays;
typedef struct emploi* PtrEmploi;
typedef struct emploi
{
char nom[...]; /* nom de l'emploi */
PtrEmploi suivant; /* pointeur sur le prochain emploi */
} Emploi;
typedef struct espion* PtrEspion;
typedef struct espion
{
char nom[...]; /* nom de l'espion(ne) */
PtrPays listePays; /* tête de liste des pays visités */
PtrEmploi listeEmploi; /* tête de liste des emplois occupés */
PtrEspion suivant; /* pointeur sur le prochain espion */
} Espion;
PtrEspion listeEspion; /* tête de liste des espions */
Pour trier l'information, il suffit simplement, lors de la lecture, d'insérer les nouvelles informatons au bon endroit (que ce soit pour la liste principale des espions ou des sous-listes associées concernant les pays ou les emplois).
Finalement, votre programme doit être composé d'au moins 10 fonctions (en ne comptant pas la fonction main).
Suggestions
Afin d'éviter les nombreux désagréments de la programmation, il est souhaitable de procéder par étapes. Voici quelques suggestions:
? une première étape est une version simplifiée qui lit les données du fichier espion.txt, et les imprime au fur et à mesure (c'est toujours rassurant d'avoir un programme qui correctement les données...);
? une seconde étape incorpore la construction des listes en découpant bien les étapes (recherche d'un élément dans une liste et insertion d'un élément dans une liste; il est conseillé de faire 3 fonctions de recherche et de faire 3 fonctions d'insertion puisqu'il y a 3 listes différentes);
? une troisième étape est une version simplifiée qui lit les données du fichier esp2002.txt, et les imprime au fur et à mesure (c'est toujours rassurant d'avoir un programme qui correctement les données...);
? finalement, une quatrième étape incorpore la mise-à-jour des listes selon le code spécifié (il faut ici prévoir la destruction d'un élément dans une liste en suivant la même approche que pour la recherche et l'insertion).