TP n°7 noté de Programmation 2 — groupe 2 — 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 réseau d'antennes de téléphone mobile.
– 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.1. Définir un type énuméré Norme
qui définit différentes normes de
communication : aucune
, AMPS
, GSM
,
UMTS
, LTE
, et G5
.
1.2. Définir une fonction Affichernorme
qui prend en paramètre une
Norme
et retourne une chaine de caractères correspondant au nom de cette
norme.
Avec cette fonction, faire afficher dans le programme principal la liste des normes possibles.
2. Définir un tableau Operateur
de cinq chaines de caractères, qui contiendra les
noms d'opérateurs de télécommunication : "autre", "BouyguesT", "Free", "Orange", et
"SFR".
Faire afficher dans le programme principal cette liste de cinq opérateurs mémorisée dans le tableau.
3.1. Définir un type structuré Antenne
qui comprend :
– un Proprietaire
, qui est un opérateur (chaine de caractères),
– une Communication
, qui est de type Norme
,
– une Puissance
d'émission, qui est un entier naturel,
– une Direction
, qui est un entier de l'intervalle [0;360[,
– une valeur Longitude
, qui est un nombre réel de l'intervalle [0;1000],
– une valeur Latitude
, qui est un nombre réel de l'intervalle [0;1000].
3.2. Définir un tableau Reseau
de nmax
=100 Antennes
, nmax étant définie par une macro-instruction.
3.3. Définir une variable Nombredantennes
, qui précisera le nombre d'antennes utilisées dans le Reseau
, et dont la valeur sera initialement 0.
4.1. Créer une procédure void Creerantenne(Antenne * Ap)
qui modifie (par effet de bord) l'antenne (*Ap) en lui attribuant aléatoirement(a) les six valeurs nécessaires, conformes au type Antenne
.
(a) On rappelle que, pour un entier naturel k, l'instruction rand()%k;
retourne aléatoirement un entier de l'intervalle [0;k[.
4.2. Créer une fonction Afficherantenne(Antenne A)
qui affiche sur deux lignes les éléments d'une antenne, sur le modèle suivant :
Numéro: 0.
Opérateur: autre.
Position: (-500;+12).
Type: GSM.
Puissance: 200.
Direction: 47.
4.3. Utiliser la fonction Creerantenne
pour placer 11 antennes dans le tableau Reseau
et mettre à jour la variable Nombredantennes
.
4.4. Afficher la première et la dernière antenne de la liste.
5. Afficher proprement à l'écran les distances entre les 11 antennes (arrondies à une valeur entière). La distance entre deux antennes A1 et A2, 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 onze antennes du Reseau
dans un fichier reseau.txt
.
6.2. (pour les plus rapides) Charger les antennes du fichier reseau.txt
dans
le Reseau
, à la suite des antennes existantes, puis afficher toutes les antennes du réseau
(22 antennes donc).