Problème matrice – Bac théorique – Section informatique – 2011

Bac Info 20-12-25
16 0

Sujet (Algo et programmation - Bac 2011)

Soit Espace une matrice carrée d'ordre N remplie par des 0 et des 1. On se propose de Chercher les zones de concentration du chiffre 1 qui peuvent exister dans la matrice Espace. Pour déterminer les zones de concentration, on suit les étapes suivantes :

1- On remplit d'une manière aléatoire (au hasard) la matrice carrée Espace, par des 0 et des

2- On fixe DN, un diviseur de N, afin de partager la matrice Espace en carrés de dimensi DN*DN, comme l'illustre l'exemple suivant :

Si N = 9, et DN = 3 alors le nombre de carrés sera égal à

et la subdivision de la matrice Espace en 9 carrés se fera de la manière suivante :

3- On saisit le degré de concentration minimum Deg_Min, pour lequel on va chercher zones de concentration du chiffre 1.

4- On détermine toutes les zones de concentration du chiffre 1 dans la matrice L s zones de concentration correspondent aux carrés de la matrice Espace qui contiennent n nombre d'occurrences du chiffre 1 supérieur ou égal à Deg_Min.

On se propose d'écrire un programMe qui permet de

- Saisir N, la taille de la matrice Espace et la remplir de 0 et de 1, d'une manière aléatoire. le Saisir DN, un diviseur de N.

- Saisir Deg_Min, le degré de concentration minimum (Deg_Min appartient à [1,(DN*DN)]).

- Déterminer et afficher le nombre de zones de concentration du chiffre 1.

- Afficher les caractéristiques de chaque zone de concentration en précisant à chaque fois les deux informations suivantes

1. Les coordonnées (ligne, colonne) de la lère case de la zone de concentration (en haut à gauche).

2. Le nombre d'occurrences du chiffre 1 figurant dans cette zone.

Pour la matrice Espace de l'exemple précédent et pour Deg_Min égal à 5, on obtient les résultats suivants :

Le nombre de zones de concentration du chiffre 1, est égal à 4.

Les zones de concentration se définissent ainsi :

Zone n'l : ligne : 1, colonne : 4. Le nombre de 1 dans cette zone est : 5.

Zone n°2 : ligne : 4, colonne : 4. Le nombre de 1 dans cette zone est : 8.

Zone n°3 : ligne : 7, colonne : 1. Le nombre de 1 dans cette zone est : 6.

Zone n°4 : ligne : 7, colonne : 7. Le nombre de 1 dans cette zone est : 5.

En effet, les zones de concentration étant les subdivisions de la matrice Espace où le n d'occurrences du chiffre 1 est supérieur ou égal à Deg_Min, on peut illustrer ces résultats manière suivante :

Travail demandé :

1- Analyser le problème en le décomposant en modules et en déduire l'algorithme du programme principal.

2- Analyser chacun des modules envisagés précédemment et en déduire les algorithmes correspondants.

 

Solution Algorithmique

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

- la fonction saisie_n()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la fonction saisie_dn()

- la fonction saisie_deg_min()

- la fonction nbr_occurences1()

- la procédure coordonnees_concentration()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier
espace matrice
dn entier
deg_min entier

 

La fonction saisie_n

Cette procédure permet de saisir un entier compris strictement entre deux bornes inf et sup, en contrôlant la validité de la saisie.

Plus précisément :

il demande à l’utilisateur d’entrer un entier n tel que n >=4.

si la valeur saisie n’appartient pas à cet intervalle, le programme redemande la saisie jusqu’à obtenir une valeur correcte.

une fois la saisie valide, la fonction retourne l’entier n.

Déclaration des objets

Objet Type / Nature
n chaîne

 

La procédure remplir_matrice

Cette procédure permet de remplir une matrice carrée m de taille n × n avec des valeurs aléatoires, où chaque élément prend soit la valeur 0, soit la valeur 1.

Plus précisément :

Elle parcourt toutes les lignes de la matrice de 0 à n-1.

Pour chaque ligne, elle parcourt toutes les colonnes de 0 à n-1.

À chaque position m[i][j], elle affecte un nombre aléatoire égal à 0 ou 1.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure afficher_matrice

Cette fonction permet d’afficher à l’écran une matrice carrée m de taille n × n, élément par élément, sous forme de tableau lisible.

Plus précisément :

Elle parcourt les lignes de la matrice de 0 à n-1.

Pour chaque ligne, elle parcourt toutes les colonnes.

Elle affiche chaque élément m[i][j] sur la même ligne, séparé par des espaces.

Après l’affichage d’une ligne complète, elle passe à la ligne suivante

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La fonction saisie_dn

Cette fonction permet de saisir un entier dn qui est un diviseur du nombre n.

Plus précisément :

Elle demande à l’utilisateur de saisir un nombre dn.

Elle vérifie si dn divise exactement n (c’est-à-dire si le reste de la division n % dn est égal à 0).

Tant que dn n’est pas un diviseur de n, la saisie est redemandée.

Une fois un diviseur valide saisi, la fonction le retourne.

Déclaration des objets

Objet Type / Nature
dn entier

La fonction saisie_deg_min

Cette fonction permet de saisir et de valider le degré de concentration minimum deg_min, c’est-à-dire le nombre minimal de valeurs égales à 1 exigé dans une zone de taille dn × dn.

Plus précisément :

Le programme demande à l’utilisateur de saisir un entier deg_min.

La valeur saisie doit appartenir à l’intervalle [1 , dn × dn], qui correspond au nombre maximum possible de cases dans une zone.

Tant que la valeur saisie n’est pas valide (inférieure à 1 ou supérieure à dn × dn), la saisie est redemandée.

Une fois une valeur correcte saisie, elle est retournée.

Déclaration des objets

Objet Type / Nature
deg_min entier

La fonction nbr_occurences1

Cette fonction permet de calculer le nombre d’occurrences de la valeur 1 dans une sous-matrice de taille dn × dn de la matrice m.

Plus précisément :

La sous-matrice commence à la position (i, j) de la matrice m.

La fonction parcourt toutes les lignes de i à i + dn − 1.

Elle parcourt également toutes les colonnes de j à j + dn − 1.

À chaque case contenant la valeur 1, un compteur cp est incrémenté.

À la fin du parcours, le nombre total de 1 est retourné.

Déclaration des objets

Objet Type / Nature
cp entier
k1 entier
k2 entier

 

La procédure coordonnees_concentration

Cette fonction permet d’identifier et d’afficher les zones de concentration du chiffre 1 dans la matrice m.

Plus précisément :

La matrice est découpée en sous-matrices de taille dn × dn.

La fonction parcourt chaque sous-matrice à l’aide des indices i et j.

Pour chaque zone, elle calcule le nombre de 1 en utilisant la fonction nbr_occurences1.

Si ce nombre est supérieur ou égal au degré de concentration minimum deg_min, la zone est considérée comme une zone de concentration.

Les coordonnées de la zone (ligne et colonne de départ) ainsi que le nombre de 1 sont affichées.

Un compteur numero_case permet de numéroter les zones trouvées.

À la fin, le programme affiche le nombre total de zones de concentration détectées.

Déclaration des objets

Objet Type / Nature
i entier
j entier
numero_case 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-Prof Info