Problème concours – Bac théorique – Section informatique – 2008

Bac Info 04-12-25
8 0

Sujet (Algo et programmation - Bac 2008)

Les données relatives es à un concours sont eliregisti éCS dans un fichier typé intitulé concours.dat. Il comporte n enregistrements relatifs aux n candidats.

Chaque enregistrement comporte dam.s cet ordre :

- numero (entier)

- nom (chaine de 30 caractères)

- prenom (chaine dc 30 caractères)

- matierel (Chaîe de 20 caractères)

- notel (réel)

- matiere2 (Chaîne de 20 caractères)

- note2 (réel)

- matiere3 (Chaine de 20 caractères)

- note3 (réel)

notei est la notc obtenue par un candidat dans la matière matierei.

On se propose d'écrire une application quai traite ces données pour produire dieux nouveaux fichiers.

Le premier, intitulé resultat.dat contient n enregistrements comportant en plus des données précédentes, d'autres champs "moycnne" et "rang" de types respectifs réel et entier. Les enregistrements de ce fichier sont classés par ordre de mérite c'est- à-dire suivant un tri décroissant sur tes moyennes.

La moyenne d'un candidat est calculée corn.me suit (1.note1 + 2. note2 2.note3)/ 5.

Le secord fichier intitulé delails.txt de type texte. comporte :

- dans la première ligne le nombre d'admis (moyenne >= 10)

- dans la seconde ligne : la meilleure note dans matierel suivie d'un espace puis du nombre de candidats ayant eu notel >=10,

- dans la troisième ligne : la meilleure note dans matiere2 suivie d'un espace puis du nombre de candidats ayant eu note2 >=10,

- dans la quatrième ligne la meilleure note dans niatiere3 suivie d’un espace puis du nombre de candidats ayant eu note3 >=10.

 

Solution Algorithmique

Ce programme demande un nombre n (entre 10 et 100), saisit n nombres naturels (< 3200), puis sépare ces nombres en deux fichiers selon qu’ils possèdent ou non un nombre égal de zéros et de uns dans leur écriture binaire. En résumé ce programme : 1- saisit contrôlée d'un nombre n 2- saisit de n entiers naturels (< 3200) et les écrit dans un fichier 3- fait la conversion en binaire 4- teste : autant de ‘0’ que de ‘1’ ? 5- Classifit dans deux fichiers : rond.dat et non_rond.dat Dans cet algorithme, On va utiliser trois fonctions et deux procédures :

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

La fonction saisir

Cette fonction saisit et retourne un entier entre 10 et 100.

Déclaration des objets

Objet Type / Nature
n entier

La fonction convertir_binaire

L’objectif de cette fonction est de convertir un nombre décimal (base 10) en binaire (base 2) sans utiliser de fonction Python prête à l’emploi.

Cette fonction permet de :

1) prendre un nombre décimal.

2) lire son dernier bit (reste de la division par 2).

3) ajouter ce bit au début de la chaîne binaire.

4) diviser le nombre par 2.

5) répéter jusqu’à ce que le nombre soit nul.

Déclaration des objets

Objet Type / Nature
binaire chaine
reste entier

 

La fonction compter

Cette fonction compte combien de fois le caractère c (par exemple '0' ou '1') apparaît dans la chaîne binaire.

Plus précisément :

1- Elle parcourt toute la chaîne binaire caractère par caractère.

2- Chaque fois qu’elle trouve le caractère recherché c, elle incrémente un compteur.

3- À la fin, elle retourne le nombre total d'occurrences du caractère.

Déclaration des objets

Objet Type / Nature
cp entier
i entier

 

La procédure remplir_fichier_nombres

Cette procédure Cette fonction sert à créer un fichier contenant n nombres naturels, chacun strictement inférieur à 3200.

1- Elle ouvre le fichier naturels.dat en écriture, ce qui crée le fichier s'il n'existe pas et efface son contenu s'il existait déjà.

2- Elle demande à l'utilisateur de saisir n entiers naturels.

Pour chaque nombre saisi :

a) la fonction vérifie qu’il est < 3200 b) si ce n’est pas le cas, elle redemande un nombre valide. c) Chaque nombre accepté est écrit dans le fichier, un par ligne. Une fois la saisie terminée, le fichier est fermé correctement.

Déclaration des objets

Objet Type / Nature
f fichier du nombre.dat
i entier
nombre chaine

 

La procédure remplir_fichiers_ronds

Cette procédure sert à lire tous les nombres enregistrés dans le fichier naturels.dat, puis à les classer dans deux fichiers distincts selon une propriété liée à leur écriture binaire.

1- Cette procédure ouvre naturels.dat et lit tous les nombres qui y sont enregistrés.

2- Pour chaque nombre, elle calcule son écriture binaire grâce à la fonction convertir_binaire().

3- Analyse de la chaîne binaire : Elle compte le nombre de '0' et le nombre de '1'dans la chaîne binaire, .

4- Test du "nombre rond" :

Si le nombre est rond, il est écrit dans : rond.dat

Sinon, il est écrit dans non_rond.dat

5- Tous les fichiers ouverts sont fermés correctement à la fin.

Déclaration des objets

Objet Type / Nature
f_nombre fichier du naturels.dat
f_rond fichier du rond.dat
f_non_rond fichier du non_rond.dat
binaire chaine
i entier
nombre chaine

Solution en Python

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info