TP n°7 noté de Programmation 2 — groupe 4 — 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).