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 :

  1. 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) :

012345
0 251831
1 201813124
2 674729 16
3 1599245
4 296137
5 433

• M[2,3] = M[1,3] + M[1,4] = 12 + 4 = 16

  1. 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

Et les lignes du fichier qui seront affichées sont les lignes qui contiennent chacune au moins 4 chiffres distincts :

11867
81347159
3122992296
141645137433

Travail demandé :

  1. Ecrire un algorithme du programme principal en respectant le procédé décrit précédemment et en le décomposant en modules.
  2. Ecrire un algorithme pour chaque module envisagé.