Matrice – Bac pratique – Section informatique – 2014

Bac Info 01-01-26
152 0

Sujet (Algo et programmation - Bac 2014)

On se propose de remplir une matrice carrée M d'ordre N par des nombres premiers de l'intervalle [2, 99] et de rechercher les lignes et les colonnes de cette matrice dont les éléments sont ordonnés dans l'ordre croissant ou décroissant.

Exemple

Pour la matrice carrée M d'ordre N=5 ci-dessus, les lignes et les colonnes dont les éléments sont ordonnés dans l'ordre croissant ou décroissant sont :

- La ligne 2 formée par les éléments 5 - 29 - 37 - 61 - 67

- La ligne 5 formée par les éléments 31 - 29 - 23 - 19 - 17

- La colonne 1 formée par les éléments 2 - 5 - 23 - 29 - 31

Travail demandé

Ecrire un programme en Python permettant de :

- remplir aléatoirement une matrice M d'ordre N donné (avec 4 < N < 20) par des nombres premiers de l'intervalle [2, 99].

- stocker dans chacune des lignes du fichier texte "Result.txt", la lettre "L" suivie par le numéro de la ligne de la matrice ou la lettre "C" suivie par le numéro de la colonne de la matrice M vérifiant la propriété citée ci-dessus, suivi d'un astérisque "*", suivi des éléments de cette ligne ou de cette colonne séparés par des tirets "-", comme le montre le formatage suivant :

Exemple pour la matrice M de l'exemple ci-dessus, le contenu du fichier "Result.txt" sera :

L2*5-29-37-61-67

L5*31-29-23-19-17

C1*2-5-23-29-31

 

Solution Algorithmique

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

- la fonction saisie()

- la fonction test_premier()

- la fonction saisie_element()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la fonction test_ordonne_ligne()

- la fonction test_ordonne_colonne()

- la fonction elements_ligne()

- la fonction elements_colonne()

- la procédure remplir_fichier_result()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier
m matrice

 

La fonction saisie

La fonction saisie(inf, sup) permet de demander à l’utilisateur de saisir un entier strictement compris entre deux bornes inf et sup.

Plus précisément :

- La fonction affiche un message demandant un entier n tel que inf < n < sup. - Si la valeur saisie n’est pas dans l’intervalle ouvert ]inf, sup[, la saisie est redemandée. - La saisie est répétée tant que la condition n’est pas respectée. - Lorsque l’utilisateur entre enfin une valeur correcte, la fonction retourne cet entier.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction test_premier

Cette fonction sert à saisir et valider le nombre de colonnes d’une matrice en respectant trois contraintes :

La fonction saisie_colonne(inf, sup) :

1- Demande à l’utilisateur de saisir un entier n

2- Vérifie que n est : strictement supérieur à inf, strictement inférieur à sup et pair (divisible par 2)

3-Redemande la saisie tant que ces conditions ne sont pas respectées

4- Retourne la valeur valide de n

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie_element

Cette fonction permet de tirer aléatoirement un entier premier compris entre 2 et 99 en s’appuyant sur une fonction de test de primalité.

1- La fonction commence par générer un entier aléatoire n entre 2 et 99.

2- Elle utilise la fonction test_premier(n) pour vérifier si n est un nombre premier.

3- Tant que n n’est pas premier, la fonction génère un nouveau nombre aléatoire.

4- Dès qu’un nombre premier est trouvé, la fonction le retourne.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure remplir_matrice 

Cette procédure permet de remplir une matrice carrée de taille n avec des nombres premiers générés aléatoirement.

1- La procédure affiche un message indiquant le début du remplissage de la matrice.

2- Elle parcourt la matrice ligne par ligne à l’aide de deux boucles imbriquées.

3- Pour chaque case m[i][j], elle appelle la fonction saisie_element().

4- La valeur retournée (un nombre premier compris entre 2 et 99) est affectée à la position correspondante de la matrice.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure afficher_matrice 

Cette procédure permet d’afficher les éléments d’une matrice carrée M de taille n.

1- La procédure affiche un message indiquant l’affichage de la matrice.

2- Elle parcourt la matrice ligne par ligne à l’aide de deux boucles imbriquées.

3- Les éléments d’une même ligne sont affichés sur la même ligne, séparés par des espaces.

4- Après chaque ligne, un retour à la ligne est effectué pour conserver la forme matricielle.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction test_ordonne_ligne

Cette fonction permet de déterminer si une ligne donnée d’une matrice est totalement ordonnée (croissante ou décroissante).

1- La fonction teste d’abord si la ligne i est strictement croissante :

Elle compare chaque élément avec le suivant (m[i][j] < m[i][j+1]). Si cette relation est vérifiée pour toute la ligne, la fonction retourne True. Si la ligne n’est pas croissante, la fonction teste alors si elle est strictement décroissante : Elle compare chaque élément avec le suivant (m[i][j] > m[i][j+1]).

2- Si cette condition est vérifiée pour toute la ligne, la fonction retourne Vrai.

3- Si la ligne n’est ni croissante ni décroissante, la fonction retourne Faux.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction test_ordonne_colonne

Cette fonction permet de déterminer si une colonne donnée d’une matrice est totalement ordonnée (croissante ou décroissante).

1- La fonction teste d’abord si la colonne j est strictement croissante :

2- Elle compare chaque élément avec celui qui se trouve juste en dessous
(m[i][j] < m[i+1][j]). Si cette relation est vérifiée pour toute la colonne, la fonction retourne True. Si la colonne n’est pas croissante, la fonction teste alors si elle est strictement décroissante : Elle compare chaque élément avec le suivant (m[i][j] > m[i+1][j]).

3- Si cette condition est vérifiée pour toute la colonne, la fonction retourne Vrai.

4- Si la colonne n’est ni croissante ni décroissante, la fonction retourne Faux.

Déclaration des objets

Objet Type / Nature
i entier
j entier

La fonction elements_ligne

Cette fonction permet de transformer les éléments d’une ligne d’une matrice en une chaîne de caractères séparée par des tirets.

1- La fonction initialise une chaîne vide liste.

2- Elle parcourt tous les éléments de la ligne i.

3- Chaque élément est converti en chaîne de caractères et ajouté à liste, suivi d’un tiret.

4- À la fin, le dernier tiret est supprimé.

5- La chaîne finale est retournée.

Déclaration des objets

Objet Type / Nature
j entier
liste chaîne

La fonction elements_colonne

Cette fonction permet de transformer les éléments d’une colonne d’une matrice en une chaîne de caractères séparée par des tirets.

1- La fonction initialise une chaîne vide liste.

2- Elle parcourt tous les éléments de la colonne j.

3- Chaque élément est converti en chaîne de caractères et ajouté à liste, suivi d’un tiret.

4- À la fin, le dernier tiret est supprimé.

5- La chaîne obtenue est retournée.

Déclaration des objets

Objet Type / Nature
j entier
liste chaîne

La procédure remplir_fichier_result

Cette procédure remplir_fichier_long_seq(t, longueur_tableau, max_sequence) a pour rôle de créer et remplir le fichier texte Long_Seq.txt avec les informations relatives aux plus longues séquences d’éléments juxtaposés dont la somme est égale à zéro.

Détail du fonctionnement :

Elle ouvre (ou crée) le fichier Long_Seq.txt en mode écriture.

Elle écrit dans la première ligne du fichier le nombre d’éléments de la plus longue séquence trouvée.

Elle parcourt ensuite le tableau T, qui contient toutes les séquences détectées.

Pour chaque séquence, elle calcule sa longueur à partir des indices de début (icd) et de fin (icf).

Si la longueur de la séquence correspond à la longueur maximale (max_sequence), ses informations sont :

affichées à l’écran,

enregistrées dans le fichier sous la forme : NL#ICD#ICF.

Enfin, le fichier est fermé correctement.

Déclaration des objets

Objet Type / Nature
f fichier
i entier
j entier

 

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 Haj Salah - Prof Info