Matrice – Bac pratique – Section informatique – 2014

Bac Info 01-01-26
18 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 procédure remplir_matrice 

Cette procédure permet de remplir une matrice V de dimensions n × m par des entiers saisis au clavier.

La procédure remplir_matrice(v, n, m) :

- affiche un message indiquant le début du remplissage de la matrice

- parcourt la matrice ligne par ligne

- Pour chaque position V[i][j] : demande à l’utilisateur de saisir un entier et stocke cet entier dans la matrice

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure afficher_matrice 

Cette procédure afficher_matrice(m, l, c) a pour rôle d’afficher le contenu de la matrice M de dimensions l × c.

Détail du fonctionnement :

Elle affiche un message indiquant l’affichage de la matrice.

Elle parcourt la matrice ligne par ligne à l’aide de la boucle sur i.

Pour chaque ligne, elle parcourt les colonnes avec la boucle sur j.

Chaque élément m[i][j] est affiché sur la même ligne, séparé par un espace.

Après l’affichage de chaque ligne, un retour à la ligne est effectué avec Ecrire().

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure remplir_fichier_fnombre

Cette procédure permet de générer le fichier Fnombres.dat à partir de la matrice V, en calculant des valeurs spécifiques, puis en les stockant à la fois dans un fichier et dans un tableau.

La procédure remplir_fichier_fnombre(v, n, m, t) :

1- parcourt chaque ligne de la matrice V

2- pour chaque élément V[i][j], calcule la valeur absolue de la différence entre V[i][j] et son élément symétrique sur la même ligne V[i][m - j - 1]

3- stocke le résultat dans le tableau T et dans le fichier Fnombres.dat

4- affiche chaque valeur calculée

5- utilise la variable globale k pour compter le nombre total de valeurs produites

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier (variable globale)
f fichier

 

La fonction recherche_raison

Cette fonction sert à vérifier si une raison r a déjà été trouvée et enregistrée dans le tableau raison.

La fonction recherche_raison(raison, n, r) :

1- parcourt le tableau raison depuis l’indice 0 jusqu’à n-1

2- compare chaque valeur avec la raison r

3- s’arrête dès que : la raison est trouvée, ou la fin de la zone utile du tableau est atteinte

4- retourne Vrai si la raison r n’existe pas encore et Faux si la raison r existe déjà

Déclaration des objets

Objet Type / Nature
i entier

La procédure recherche_suites

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
index entier
i entier
j entier
k entier
l entier
r entier
raison tableau

 

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