Chemins Matrice – Bac théorique – Section informatique – 2009

Bac Info 08-12-25
11 0

Sujet (Algo et programmation - Bac 2008)

Soit p et q deux entiers naturels tels que 5 :5_ p < q < 32. On se propose de remplir une matrice M à p lignes et q colonnes par des zéros (0) et des uns (1) de la façon suivante : On mettra 1 dans toute cellule M[i , j] si les représentations de i et de j dans la base 2 ont au moins une fois le chiffre 1 à la même position sinon on y mettra 0. On commencera à lire les positions à partir de la droite. Exemples M[5 , 3] aura la valeur 1 car les deux représentations binaires ont le chiffre 1 à la première position. En effet : 5 = (101)2 et 3 (11)2 M[9 , 4] aura la valeur 0 car les deux représentations binaires n'ont pas de 1 à la même place. En effet : 9 = (1001)2 et 4 = (100)2 On se propose ensuite de chercher tous les chemins rectilignes menant de la première ligne à la dernière ligne en n'empruntant que des cellules contenant des 1 et en sautant au maximum une seule cellule contenant 0. Par conséquent, un chemin rectiligne est une colonne ne comportant pas deux cellules consécutives contenant 0. Pour tout chemin trouvé, on affichera son numéro (l'indice j). En plus, les données relatives à ce problème seront enregistrées dans un fichier texte intitulé chemins.txt et placé sur la racine du disque D. Ce fichier comportera dans sa première ligne le naturel p suivi d'une espace, suivie du naturel q et comportera dans chacune des lignes qui suivent le numéro du chemin trouvé. La dernière ligne contiendra le nombre de chemins trouvés.

 

 

Solution Algorithmique

Dans cet algorithme, On va utiliser sept procédures :

- la fonction saisie()

- la fonction convertir_binaire()

- la fonction test_position1()

- la fonction test_cellule()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la procédure remplir_fichier_chemin()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
p entier
q entier
m (matrice) tableau T de 32 lignes x 32 colonnes d’entiers.

La fonction saisir

La fonction saisie(inf, sup) sert à obliger l’utilisateur à entrer un nombre entier compris entre deux bornes :

inf : la borne inférieure (minimum autorisé)

sup : la borne supérieure (maximum autorisé)

Elle garantit que la valeur saisie est correcte.

La fonction demande d’abord à l’utilisateur d’entrer un entier dans l’intervalle [inf, sup].

Tant que l’utilisateur entre une valeur en dehors de l’intervalle, la fonction répète la saisie.

Dès qu’un nombre valide est fourni (inf ≤ n ≤ sup), la fonction le renvoie.

Déclaration des objets

Objet Type / Nature
n entier

La fonction convertir_binaire

La fonction convertir_binaire(n) sert à transformer un nombre entier positif en une chaîne représentant son écriture en binaire.

1- On initialise une chaîne vide qui contiendra le résultat binaire.

2- Tant que n > 0 :

- On calcule le reste de la division par 2 → c’est le prochain bit (0 ou 1).

- On ajoute ce bit au début de la chaîne binaire.

- On divise n par 2 (division entière).

3- Quand n atteint 0, la chaîne contient le nombre en binaire → on la retourne.

Déclaration des objets

Objet Type / Nature
binaire chaîne
reste chaîne

 

La fonction test_position1

Cette fonction sert à vérifier si deux nombres binaires (sous forme de chaînes) possèdent un bit ‘1’ aligné sur la même position en partant de la droite.

On commence à comparer les deux chaînes au dernier caractère (bit de poids faible).

1- Tant que : (ch1[pos1] == '0' ou ch2[pos2] == '0') et que l’on n’est pas encore au début des chaînes

on recule d’un pas (pos1 −= 1, pos2 −= 1).

2- Quand la boucle s’arrête, on vérifie : le bit actuel de ch1 est ‘1’ et le bit actuel de ch2 est ‘1’

3- Si les deux sont ‘1’, la fonction renvoie Vrai, sinon Faux.

Déclaration des objets

Objet Type / Nature
pos1 entier
pos2 entier

 

La procédure remplir_fichier_resultat

Ce procédure sert à enregistrer dans un fichier binaire (resultat.dat) les n premiers éléments du tableau t.

Elle :

1- ouvre un fichier binaire nommé resultat.dat en écriture ("wb").

2- parcourt les n premiers éléments du tableau t.

3- écrit chaque élément dans le fichier.

4- ferme le fichier à la fin pour sauvegarder les données.

Déclaration des objets

Objet Type / Nature
f_resultats fichier du resultat.dat
i entier

 

La fonction recherche_nbr_admis

Cette fonction sert à compter le nombre d’admis dans un tableau t contenant des enregistrements (dictionnaires).

Un candidat est considéré "admis" lorsque la valeur du champ indiqué par champs est supérieure ou égale à 10.

Déclaration des objets

Objet Type / Nature
i entier
nbr_admis entier

 

La fonction recherche_max_note

Cette fonction sert à chercher la note maximale dans un tableau t contenant des enregistrements (dictionnaires), en se basant sur un champ précis (exemple : "note1", "note2", …).

Elle :

1- suppose d’abord que le maximum est la valeur du champ champ du 1er élément → t[0][champ].

2- parcourt le tableau du 2ᵉ élément jusqu’au n-ième.

3- chaque fois qu’il trouve une valeur plus grande, il met à jour max_nombre.

4- à la fin, il retourne la plus grande valeur trouvée.

Déclaration des objets

Objet Type / Nature
max_nombre entier
i entier

 

La procédure remplir_fichier_details

Le programme sert à créer un fichier texte (details.txt) contenant des statistiques calculées à partir des données des candidats.

Il extrait plusieurs informations importantes à partir du tableau t :

- max_moyenne → le nombre de candidats ayant une moyenne ≥ 10

- max_note1 → la note maximale obtenue dans la matière 1.

- nbr_note1 → le nombre de candidats ayant une note1 ≥ 10.

- max_note2 → la note maximale de la matière 2.

- nbr_note2 → le nombre de candidats ayant une note2 ≥ 10.

- max_note3 → la note maximale de la matière 3.

- nbr_note3 → le nombre de candidats ayant une note3 ≥ 10.

Déclaration des objets

Objet Type / Nature
f_details fichier du details.txt
max_moyenne entier
max_note1 entier
nbr_note1 entier
max_note2 entier
nbr_note2 entier
max_note3 entier
nbr_note3 entier

 

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