Exercice : Remplissage de matrice par sommes et diagonales (diagonal.txt)
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, où n est un entier donné (5≤n≤10).
- Remplir, à partir de M, un fichier texte nommé diagonal.txt situé sur la racine du disque dur C:.
- 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 :
- Le remplissage de la matrice M doit tenir compte des règles suivantes :
- La première ligne de la matrice M (ligne d’indice 0) est remplie d’une façon aléatoire (au hasard), par des chiffres de 1 à 9.
- À 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 égal à n – l + 1.
Exemple de matrice M (pour n = 6) :
| 0 | 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|---|
| 0 | 2 | 5 | 1 | 8 | 3 | 1 |
| 1 | 20 | 18 | 13 | 12 | 4 | |
| 2 | 67 | 47 | 29 | 16 | ||
| 3 | 159 | 92 | 45 | |||
| 4 | 296 | 137 | ||||
| 5 | 433 |
• M[2,3] = M[1,3] + M[1,4] = 12 + 4 = 16
- Chaque ligne du fichier diagonal.txt contiendra les éléments de M se trouvant sur une diagonale droite, en commençant par celle de 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 52).
- 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édent, le contenu du fichier diagonal.txt sera comme suit :
2
52
11867
81347159
3122992296
141645137433
52
11867
81347159
3122992296
141645137433
Et les lignes du fichier qui seront affichées sont les lignes qui contiennent chacune au moins 4 chiffres distincts :
11867
81347159
3122992296
141645137433
81347159
3122992296
141645137433
Travail demandé :
- Ecrire un algorithme du programme principal en respectant le procédé décrit précédemment et en le décomposant en modules.
- Ecrire un algorithme pour chaque module envisagé.