Vous êtes sur la page 1sur 2

Épreuve Pratique :

RÉPUBLIQUE TUNISIENNE
Algorithmique et Programmation
MINISTÈRE DE L’ÉDUCATION
 Section : Sciences de l’informatique
EXAMEN DU BACCALAURÉAT
SESSION 2020
Coefficient de l’épreuve : 0.75 Durée : 1h 30mn

Important :
1) Dans le dossier Bac2020 situé sur la racine du disque C de votre poste, créez un dossier de travail ayant pour
nom votre numéro d’inscription (6 chiffres) et dans lequel vous devez enregistrer au fur et à mesure tous les
fichiers solution au problème posé.
2) Vérifiez à la fin de l’épreuve que tous les fichiers que vous avez créés sont dans votre dossier de travail.
3) Une solution modulaire au problème posé est exigée.

Soit "Nombre.txt" un fichier texte contenant des entiers naturels à raison d’un entier par ligne. On se
propose de créer deux fichiers textes "Div13.txt" et "Div7.txt" contenant respectivement les valeurs, de
"Nombre.txt", qui sont divisibles par 13 et par 7 à raison d’un entier par ligne en se basant sur les deux
principes décrits ci-après :
A- Divisibilité par 13
L’algorithme du module Divis13 ci-après permet de vérifier si un nombre N est divisible par 13.
0) DEF Fn Divis13 (N : chaine) : booléen
if
at

1) S  0
uc
éd
eb
w
ite

Sg  –1
es
t :l
ne
b.
ite

Tant que long (N) >= 3 faire


.k
w
w
w

Valeur (Sous_chaine (N , long(N) – 2 , 3) , v , e)


S  S + v * Sg
Sg  –Sg
Efface (N , long(N) – 2 , 3)
Fin Tantque
2) Valeur (N , v , e)
S  S + v * Sg
3) Divis13  abs(S) mod 13 = 0
4) Fin Divis13
Exemple :
Pour vérifier si le nombre 1612311857 est divisible par 13, on applique la règle de divisibilité par 13 décrite
par l’algorithme précédent :
- On regroupe les chiffres du nombre par des blocs de trois chiffres en commençant à partir des unités :
1 | 612 | 311 | 857
- On ajoute alternativement des "–" et des "+" entre les blocs en commençant par placer un "–" pour le
premier bloc à droite : 1 – 612 + 311 – 857

1/2
- On effectue l’opération ainsi obtenue : 1 – 612 + 311 – 857 = –1157
- La valeur absolue du résultat obtenu (1157) est divisible par 13 donc 1612311857 est divisible par 13.
B- Divisibilité par 7
Pour vérifier si un nombre N est divisible par 7 nous proposons la règle de divisibilité suivante :
- Calculer la somme itérée et pondérée des chiffres de N par la série périodique de période
1, 3, 2, −1, −3, −2, c’est-à-dire additionner tous les chiffres de N en multipliant chacun par un chiffre
de la période en commençant par le chiffre des unités qui sera multiplié par 1, le chiffre des dizaines
sera multiplié par 3, ... . Si la somme est un nombre formé de plus d’un chiffre, on recommence le
processus.
Exemple : Pour N = 45286090 la somme itérée et pondérée est égale à 3. En effet :
0 × 1 + 9 × 3 + 0 × 2 + 6 × (−1) + 8 × (−3) + 2 × (−2) + 5 × 1 + 4 × 3 = 10
Comme 10 est composé de plus d’un chiffre alors on recommence le processus avec 10, d’où :
0×1+1×3=3
- Un nombre N est divisible par 7 si la somme itérée et pondérée de ses chiffres par la série périodique de
période 1, 3, 2, −1, −3, −2 vaut 0 ou 7.
Exemples :
• 6090 est divisible par 7, en effet : 0 × 1 + 9 × 3 + 0 × 2 + 6 × (−1) = 21. Comme 21 est composé de
if
at
uc

plus d’un chiffre alors on recommence le processus d’où 1 × 1 + 2 × 3 = 7


éd
eb
w
ite

• 717255 est divisible par 7, en effet : 5 × 1 + 5 × 3 + 2 × 2 + 7 × (−1) + 1 × (−3) + 7 × (−2) = 0


es
t :l
ne
b.
ite

• 45286090 n’est pas divisible par 7, en effet :


.k
w
w
w

0 × 1 + 9 × 3 + 0 × 2 + 6 × (−1) + 8 × (−3) + 2 × (−2) + 5 × 1 + 4 × 3 = 10


Comme 10 est composé de plus d’un chiffre alors on recommence le processus d’où 0 × 1 + 1 × 3 = 3
Comme 3 est différent de 0 et de 7 donc 45286090 n’est pas divisible par 7
Travail demandé :
Ecrire un programme Pascal qui permet de :
- Saisir Nb entiers naturels (Nb≥ 5) à enregistrer dans le fichier "Nombre.txt"
- Placer les nombres du fichier "Nombre.txt" qui sont divisibles par 13 dans un fichier nommé
"Div13.txt" en utilisant le module Divis13 et les nombres divisibles par 7 dans un fichier nommé
"Div7.txt" en appliquant la règle de divisibilité par 7 expliquée ci-dessus.

Grille d’évaluation
Traitement Nombre de points
• Décomposition en modules 2
• Appel des modules 2
• Si exécution et tests réussis avec respect des contraintes 16
Sinon
- Structures de données adéquates au problème posé 3
- Saisie de Nb avec respect des contraintes et remplissage du fichier "Nombre.txt" 1.75
- Traduction de la fonction Divis13 3
- Vérification de la divisibilité par 7 4
- Création et remplissage des fichiers "Div13.txt" et "Div7.txt" 4.25

2/2

Vous aimerez peut-être aussi