Facteurs premiers – Bac pratique – Section informatique – 2012

Bac Info 20-12-25
11 0

Sujet (Algo et programmation - Bac 2012)

A partir d'un fichier nommé "Nombres.dat" contenant N entiers, formé chacun de P chiffres, on veut former un deuxième fichier nommé "Facteurs.txt" qui contiendra, des chaînes. Chaque chaîne représente la concaténation de la fréquence de chacun des facteurs premiers d'un nombre du fichier "Nombres.dat" suivi du facteur premier lui même.

Exemple :

Pour N = 3 et P = 4 :

En effet :

a) 1912 = 2 *2 *2 *239

La chaîne générée sera "321239" pour dire que 3 est la fréquence du facteur premier 2 et 1 est la fréquence du facteur premier 239.

b) 3525 = 3 * 5 * 5 * 47

La chaîne générée sera "1325147" pour dire que 1 est la fréquence du facteur premier 3, 2 est la fréquence du facteur premier 5 et 1 est la fréquence du facteur premier 47.

Travail à faire :

Ecrire un programme Pascal et l'enregistrer sous le nom FactPrem, permettant :

1- de remplir un fichier nommé "Nombres.dat" par N entiers, formés de P chiffres (avec 2 < N < 100 et 2 < P < 6),

2- de créer, pour chaque entier du fichier "Nombres.dat", une chaîne représentant la concaténation de la fréquence de chacun de ses facteurs premiers suivi du facteur premier lui-même et l'enregistrer dans une ligne d'un fichier texte nommé "Facteurs.txt",

3- d'afficher le contenu du fichier "Facteurs.txt".

 

Solution Algorithmique

Dans cet algorithme, On va utiliser trois fonctions et deux procédures:

- la fonction saisie()

- la fonction saisie_nombre()

- la procédure remplir_fichier_nombres()

- la fonction facteur_premiers()

- la procédure remplir_fichier_facteurs()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Cette fonction permet de saisir un entier n compris strictement entre deux bornes inf et sup.

👉 Plus précisément :

Elle demande à l’utilisateur de saisir une valeur entière n.

Elle vérifie que n appartient à l’intervalle ]inf , sup[.

Tant que la valeur saisie est inférieure ou égale à inf ou supérieure ou égale à sup, la saisie est redemandée.

Lorsque la valeur est correcte, la fonction la retourne.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La fonction saisie_nombre

Cette fonction verif_ch permet de vérifier si une chaîne de caractères est valide.

Une chaîne est considérée valide si :

sa longueur est comprise entre 1 et 9 caractères ;

elle est composée uniquement de lettres (A à Z, minuscules ou majuscules) et/ou de chiffres (0 à 9).

La fonction retourne Vrai si la chaîne respecte ces conditions, Faux sinon.

Déclaration des objets

Objet Type / Nature
nombre entier

 

La fonction saisie_ch

Cette fonction saisie_ch permet de saisir une chaîne de caractères valide composée uniquement de lettres et/ou de chiffres.

Elle demande à l’utilisateur de saisir une chaîne.

Elle vérifie la validité de la chaîne en appelant la fonction verif_ch.

Tant que la chaîne saisie est non valide, la saisie est redemandée.

Lorsque la chaîne est correcte, elle est retournée par la fonction.

Déclaration des objets

Objet Type / Nature
ch chaîne

 

La fonction extraire_chiffres

Ce programme (fonction extraire_chiffres) permet d’extraire uniquement les chiffres d’une chaîne de caractères.

Il parcourt la chaîne caractère par caractère.

Il sélectionne seulement les caractères numériques (de 0 à 9).

Il construit une nouvelle chaîne contenant uniquement ces chiffres.

Il retourne cette chaîne représentant le nombre extrait.

Déclaration des objets

Objet Type / Nature
i entier

La fonction test_divisible11

Cette fonction permet de calculer et retourner la somme des chiffres d’un nombre représenté sous forme de chaîne de caractères.

Elle parcourt chaque caractère de la chaîne ch, le convertit en entier, puis l’ajoute à une variable somme.

Déclaration des objets

Objet Type / Nature
i entier
spaire entier
simpaire entier

 

La procédure remplir_fichiers

Cette procédure cherche tous les nombres « rigolos » compris entre m et n et enregistre les résultats dans un fichier texte tout en les affichant à l’écran.

Cette procédure :

1- ouvre le fichier resultat.txt en mode écriture.

2- parcourt tous les entiers entre m et n.

Pour chaque nombre i, teste s’il est rigolo avec les critères ci-dessus.

Si i est rigolo :

Affiche i et sa décomposition en facteurs premiers (avec *) à l’écran.

Écrit cette information dans le fichier.

Si aucun nombre rigolo n’est trouvé, affiche un message correspondant.

3- ferme le fichier.

Déclaration des objets

Objet Type / Nature
f_chaine fichier
f_nombre fichier
ch chaîne
nombre chaîne

 

Solution en Python

Exécution du programme

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