TP n°7 noté de Programmation 2 — groupe 3
— avril 2020
Modalité : utilisation libre de vos notes personnelles, communications interdites.
Durées : 1h45 (tiers-temps: 2h20)
SUJET :
– Réalisation en C d'un programme de gestion d'un ensemble de routeurs Internet.
– Envoi à la fin de la séance du code source sur l'ENT (un fichier .c
, à
l'exclusion de tout autre type de fichier).
Détail de l'implémentation :
Réaliser soigneusement les fonctionnalités suivantes au mieux du temps imparti et de vos
compétences.
Le programme réalisé, qu'il soit complet ou non, devra compiler et fonctionner
normalement ; il devra respecter les noms imposés par le sujet.
En cas de difficulté, vous pouvez faire appel à l'aide de l'enseignant au prix d'un (éventuel)
décompte de points.
1. Définir un tableau Marque
de cinq chaines de caractères, qui contiendra les
noms de marques de routeurs : "inconnue", "Alcatel", "Cisco", "HP", et
"Huawei".
Faire afficher dans le programme principal cette liste de cinq marques mémorisée dans le tableau
Marque
.
2.1. Définir un type énuméré TypeT
qui définit différents types de
transmission : aucune
, MB10
, MB100
,
GB1
, GB10
, et GB100
.
2.2. Définir une fonction Affichertype
qui prend en paramètre un
TypeT
et retourne une chaine de caractères correspondant au nom de ce type de
transmission.
Avec cette fonction, faire afficher dans le programme principal la liste des types de transmission
possibles.
3.1. Définir un type structuré Routeur
qui comprend :
– un Proprietaire
, qui est une marque (chaine de caractères),
– une Transmission
, qui est de type TypeT
,
– une Consommation
, qui est un entier naturel représentant la consommation électrique,
– une Departement
, qui est un entier de l'intervalle [1;96[,
– une valeur Longitude
, qui est un nombre réel de l'intervalle [0;990],
– une valeur Latitude
, qui est un nombre réel de l'intervalle [0;990].
3.2. Définir un tableau Backbone
de nmax
=99 Routeurs
, nmax étant définie par une macro-instruction.
3.3. Définir une variable Nombrederouteurs
, qui précisera le nombre de routeurs utilisées dans le Backbone
, et dont la valeur sera initialement 0.
4.1. Créer une procédure void Creerrouteur(Routeur * Rp)
qui modifie (par effet de bord) le routeur (*Rp) en lui attribuant aléatoirement(a) les six valeurs nécessaires, conformes au type Routeur
.
(a) On rappelle que, pour un entier naturel m, l'instruction rand()%m;
retourne aléatoirement un entier de l'intervalle [0;m[.
4.2. Créer une fonction Afficherrouteur(Routeur R)
qui affiche sur deux lignes les éléments d'un routeur, sur le modèle suivant :
Numéro: 0.
Marque: inconnue.
Département: 63.
Position: (−280;+140).
Transmission: GB1.
Consommation: 70.
4.3. Utiliser la fonction Creerrouteur
pour placer 12 routeurs dans le tableau Backbone
et mettre à jour la variable Nombrederouteurs
.
4.4. Afficher le premier et le dernier routeur de la liste.
5. Afficher proprement à l'écran les distances entre les 12 routeurs (arrondies à une valeur entière). La distance entre deux routeurs R1 et R2, de positions respectives (x1;y1) et (x2,y2) sera sqrt((x1−x2)*(x1−x2)+(y1−y2)*(y1−y2)).
6.1. (pour les plus rapides) Sauvegarder les douze routeurs du Backbone
dans un fichier backbone.txt
.
6.2. (pour les plus rapides) Charger les routeurs du fichier backbone.txt
dans
le Backbone
, à la suite des routeurs existants, puis afficher tous les routeurs du réseau (24 en tout donc).