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).