Introduction à la Programmation Interrogation 7 – 1 bac physique

Transcription

Introduction à la Programmation Interrogation 7 – 1 bac physique
Prof. Dr. P. Schlagheck, Dr. F. Ludewig, B. Baert
Nom:
22 avril 2015
Prénom:
Matricule:
Introduction à la Programmation
Interrogation 7 – 1er bac physique
Consignes:
• Répondre à chacune des trois questions dans un fichier différent.
• Le programme rendu pour chaque question doit obligatoirement pouvoir être compilé sans erreur.
Tout programme qui ne compile pas impliquera une note inférieure à la moitié des points
pour la question correspondante.
• Les affichages à l’écran doivent être propres et soignés. En particulier, l’utilisateur ne
saisira des données au clavier que si le programme le lui demande explicitement.
• Le code rendu doit être correctement indenté et suffisamment commenté.
Question 1
*
(0.5 points)
*Dans l’édition 1989 de l’Encyclopédie, il aura fallu utiliser exactement 1989 fois le chiffre
1 pour numéroter toutes les pages. Combien de pages comporte cette édition ? Ecrire un
programme (très court) permettant de trouver ce nombre de pages.
Question 2
*
(1.5 points)
*Le développement limité en série de (1 + x)α est donné par
(1 + x)α =
N
X
kn (x, α)
où les kn (x, α) sont définis successivement par
n=1
kn+1 (x, α) =
x
(α − n + 1) kn (x, α)
n
et k1 = 1
(a) Ecrire une fonction double k_nplus1(double k_n, int n, double x, double alpha)
qui renvoit la valeur du terme kn+1 (x, α) en fonction de α, x et kn (x, α)
(b) Ecrire une fonction double serie(double x, double alpha, int N) qui calcule et
renvoit la somme des N premiers termes kn (x, α) de la série;
√
√
(c) La série précédente permet de calculer 5, qui peut se décomposer comme suit: 5 =
1
p
√
4 + 1 = 2 1 + 1/4 = 2 1 + 14 2 . Utiliser la fonction précédemment définie (avec
√
x = 0.25 et α = 0.5) pour calculer 5 avec un nombre de termes N choisi au clavier
par l’utilisateur;
(d) Dans un second temps, faire déterminer par le programme combien de termes N sont
nécessaires pour que le dernier terme kN (x, α) soit inférieur à 10−12 et afficher ce
nombre à l’écran.
Question 3
*
(2 points)
*Ecrire un programme qui réalise le dépouillement de l’élection du Président de la Galaxie.
L’élection se déroule en deux tours: les candidats n’ayant pas obtenu au moins 10% des
voix lors du premier tour sont éliminés pour le second tour.
On dispose des résultats de vote du premier et du second tour dans deux fichiers, “premier_tour.txt” et “second_tour.txt”. Dans ces fichiers, chaque ligne correspond à un vote
différent: le contenu de la ligne correspond au nom du candidat pour lequel cet électeur a
voté.
On dispose également d’un fichier “candidats.txt” contenant les noms des candidats du
premier tour, chaque ligne décrivant un candidat sous la forme “Nom Prénom”.
Conseil : Certaines des opérations ci-dessous doivent être répétées à la fois lors du premier
et du second tour. L’usage de fonctions pour ces manipulations est donc particulièrement
indiqué.
Premier tour:
(a) Ecrire un programme qui charge en mémoire les noms de tous les candidats et les votes
exprimés lors du premier tour. Comptabiliser les votes reçus par chacun des candidats,
le nombre de votes blancs ou nuls et le nombre total de votes.
Critère de validité des votes : seuls les votes indiquant le NOM exact (sans fautes
d’orthographes) du candidat sont comptabilisés, les autres sont considérés comme nuls.
Le nom ne sera cependant pas sensible à la casse (majuscules ou minuscules);
Exemple: Pour le candidat “Zaphod Beeblebrox”, les mots “Beeblebrox”, “BEEBLEBROX”,
“BeeblEbroX” seront considérés comme valides, mais “Z. Beeblebrox” ou “Beebleb.” ne
le seront pas.
(b) Trier les candidats en fonction du nombre de votes reçus;
(c) Afficher le nombre de candidats, le nombre total de votes, le nombre de votes blancs
et la proportion qu’ils représentent par rapport au total des votes et les résultats triés
à l’écran et les enregistrer dans un fichier “resultats_premier_tour.txt” sous la forme:
***** Resultats du premier tour: *****
Candidats: 12
Votes exprimés: 1 687 458
Votes blancs ou nuls: 237 687 (14.09%)
***************************************
Bob L’eponge : 19.53%
Zaphod Beeblebrox : 17.42%
Hari Seldon: 10.51%
Arcadia Darell: 9.99%
Dark Vador : 8.49%
...
***************************************
Second tour:
(d) Afficher à l’écran la liste des candidats qui passent au second tour et l’enregistrer dans
un fichier “candidats_2e_tour.txt”;
(e) Retirer les candidats éliminés et charger en mémoire les votes exprimés lors du second
tour. Comptabiliser les votes reçus par chacun des candidats restants;
Page 2
(f) Trier les candidats en fonction du nombre de votes reçus;
(g) Afficher le nombre de candidats, le nombre total de votes, le nombre de votes blancs
et la proportion qu’ils représentent par rapport au total des votes et les résultats triés
à l’écran et les enregistrer dans un fichier “resultats_second_tour.txt” sous la forme
ci-dessous. Indiquer également le nom du Président élu au terme de ce second tour.
***** Resultats du second tour: *****
Candidats: 3
Votes exprimés: 1 543 975
Votes blancs ou nuls: 358 164 (23.20%)
***************************************
Zaphod Beeblebrox : 42.68%
Bob L’eponge : 29.45%
Hari Seldon : 4.67%
***************************************
Président élu: Zaphod Beeblebrox !
***************************************
Procédure à suivre en fin d’interrogation
Ne pas éteindre l’ordinateur tant que vous n’avez pas rendu vos
codes sources imprimés et signés !
• Après avoir demandé l’autorisation au surveillant, se connecter à Internet
• Se rendre sur la page http://spin02.phys.ulg.ac.be/interro.php
• Ajouter les fichiers main.cpp contenant les questions auxquelles vous avez répondu
• Après avoir vérifié qu’il s’agit des bons fichiers, valider l’envoi des fichiers
• Aller chercher vos codes sources imprimés, les signer et les rendre au surveillant
• Eteindre l’ordinateur
Page 3