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

Bac Info 13-12-25
13 0

Sujet (Algo et programmation - Bac 2010)

On se propose d'écrire un programme permettant de :

- remplir une matrice carrée M de taille (n x n) selon le principe décrit ci-dessous. n est un entier donné (5 < n _<10).
- remplir, à partir de M, un fichier texte nommé diagonal.txt.
- déterminer et afficher toutes les lignes de ce fichier qui contiennent au moins quatre chiffres différents
Le remplissage de la matrice M et du fichier diagonal.txt est décrit ci-dessous :
1) le remplissage de la matrice M, doit tenir compte des règles suivantes :
- La première ligne de la matrice M est remplie, d'une façon aléatoire (au hasard), par des chiffres de 1 à 9.
- A partir de la deuxième ligne de la matrice M, un élément quelconque M[l,c] est déterminé en faisant la somme des éléments de la ligne (l-1), en commençant à partir de l'élément M[l-1,c].
- Le nombre de cases remplies pour une ligne l est : n -l+1.
Exemple :

M [1, 0] = 2 + 5 +1 + 8 + 3 + 1 = 20 , M [2, 3] = 12 + 4 = 16

2) Chaque ligne du fichier diagonal.txt contiendra les éléments de M se trouvant sur une diagonale droite, en commençant par celle à gauche et de haut en bas, de telle sorte que :

- La ligne N°1 du fichier contient M [0, 0] c'est à dire 2

- La ligne N°2 du fichier contient M [0, 1] suivi de M [1, 0] c'est-à-dire 520

- La ligne N°3 du fichier contient M [0, 2] suivi de M [1, 1] suivi de M [2, 0] c'est-à-dire 11867

Pour l'exemple précédant, le contenu du fichier diagonal.txt sera comme suit :

7
520
11867
81347159
3122992296
141645137433

et les lignes qui seront affichées sont :

11867
81347159
3122992296
141645137433

En effet :

- La ligne numéro 0 n'est pas affichée car elle ne contient qu'un seul chiffre.

- La ligne numéro 1 n'est pas affichée car on ne trouve que 3 chiffres distincts.

- Les lignes numéro 2, 3, 4 et 5 seront affichées car elles contiennent chacune au moins 4 chiffres distincts.

Travail demandé

1. Analyser le problème en le décomposant en modules et déduire l'algorithme du programme principal qui permet de réaliser le traitement décrit précédemment.

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 deux fonctions et quatre procédures :

- la fonction saisie()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la fonction test_different()

- la procédure remplir_fichier_diagonal()

- la procédure afficher_fichier()

 

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
n entier
m matrice

 

La fonction saisie_nbr_chaines

Cette fonction demande à l’utilisateur de saisir un entier compris entre 2 et 10.

Tant que la valeur saisie n’est pas dans cet intervalle, la fonction redemande un nombre.

Elle garantit donc que le nombre retourné sera toujours un entier valide entre 2 et 10.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction saisie

Ce programme permet de saisir un entier n compris entre 5 et 10 inclus, en contrôlant la validité de la saisie.

Il redemande la valeur tant que l’utilisateur entre un nombre en dehors de l’intervalle [5, 10], puis retourne la valeur correcte une fois la condition respectée.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure remplir_matrice

Cette procédure permet de remplir une matrice m de dimension n × n de la manière suivante :

- La première ligne de la matrice est remplie par des nombres aléatoires compris entre 1 et 9.

Chaque élément des lignes suivantes est calculé comme la somme des éléments de la ligne précédente, depuis une colonne donnée jusqu’à la dernière colonne.

La matrice obtenue a une forme triangulaire, car seules les premières colonnes de chaque ligne sont remplies.

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier
somme entier

 

La fonction recherche_base

Cette fonction détermine la plus petite base possible dans laquelle la chaîne ch peut être interprétée.

Elle cherche le caractère le plus grand dans la chaîne ch (par exemple : dans "A3F2", le plus grand caractère est 'F').

Selon ce caractère maximal :

1- S’il s’agit d’une lettre entre A et F, elle calcule sa valeur :

A → 10

B → 11

F → 15

Puis elle retourne valeur + 1, donc la base minimale.

2- S’il s’agit d’un chiffre, elle retourne (chiffre + 1).

Déclaration des objets

Objet Type / Nature
i entier
max_chiffre entier

 

La fonction exposant

Cette fonction calcule la puissance d’un nombre : c’est-à-dire n multiplié par lui-même e fois.

Déclaration des objets

Objet Type / Nature
i entier
p entier

 

La fonction conversion_decimale

Cette fonction convertit un nombre écrit dans une base quelconque (≤ 16) en base 10.

La chaîne ch contient un nombre composé :

- de chiffres 0 à 9 ou de lettres A à F (pour les valeurs 10 à 15)

- de la base dans laquelle ce nombre est écrit.

Déclaration des objets

Objet Type / Nature
nombre entier
i entier

 

La procédure remplir_fichiers

Cette procédure remplit deux fichiers à partir de chaînes saisies par l’utilisateur.

nb_base.dat : ce fichier contient les chaînes originales, telles que saisies par l’utilisateur.

nombre.txt : ce fichier contient leurs conversions en base 10, accompagnées de la base minimale utilisée.

Déclaration des objets

Objet Type / Nature
f_nbbase fichier
f_nombre fichier
i entier
ch chaîne
base entier
nombre entier

 

La procédure afficher_fichier

Cette procédure sert à afficher le contenu d’un fichier texte, ligne par ligne.

Déclaration des objets

Objet Type / Nature
f fichier
ch chaîne
nombre chaîne

 

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