Entiers ronds – Bac pratique – Section informatique- 2008

Bac Info 24-11-25
20 0

Sujet (Algo et programmation - Bac 2008)

Un entier naturel ecrit dans la base 10 est dit rand si, clans son équivalent binaire, on trouve autant de 1 que de 0.

Exemple: le nombre 611 est rand car 611=(1001100011)2 et il y a autant de 1 que de O dans cette écriture en binaire.

On dispose d'un fichier intitule naturels.dat compose d'une suite de nombres entiers naturels écrits dans la base 10. On se propose de remplir a partir de ce fichier deux autres fichiers intitules non_rond.dat et rond.dat comportant respectivement les nombres non ronds et les nombres ronds contenus dans le premier fichier naturels.dat.

Questions:

Ecrire un programme qui crée et remplit le fichier naturels.dat par n entiers naturels inferieurs à 32000 (10 < n <100}. Ensuite, il lit de ce fichier les nombres décimaux, affiche et place les nombres ronds dans le fichier rond.dat et place les autres sans les afficher dans le fichier non_rond.dat.

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