Énoncé
Saisir L et C avec 1 ≤ L ≤ 20 et 1 ≤ C ≤ 20, puis remplir une matrice M de L lignes et C colonnes d’entiers. Écrire une procédure Transposer qui construit une matrice T de C lignes et L colonnes, puis afficher T.
Exemples et cas limites
Saisissez ces valeurs dans la console pour vérifier votre résultat :
Saisir L puis C, puis les entiers ligne par ligne : m[0,0], m[0,1], … jusqu’à la dernière case. Vous pouvez choisir d’autres dimensions et valeurs.
Entrée
L = 2 C = 3 m[0,0] = 1 m[0,1] = 2 m[0,2] = 3 m[1,0] = 4 m[1,1] = 5 m[1,2] = 6
Sortie attendue
1 4 2 5 3 6
Entrée
L = 3 C = 1 m[0,0] = 2 m[1,0] = 4 m[2,0] = 6
Sortie attendue
2 4 6
Complétez les modules marqués par un commentaire dans le code de départ. Les modules déjà écrits permettent de saisir vos données. Exécutez les cas de test et comparez la sortie attendue, ou ouvrez directement l’onglet Correction.
Code algorithmique
| 1 | algorithme transposee_matrice |
| 2 | debut |
| 3 | saisir(l, c) |
| 4 | remplir(m, l, c) |
| 5 | transposer(m, l, c, t) |
| 6 | afficher(t, c, l) |
| 7 | fin |
| 8 | |
| 9 | procedure saisir(@l : entier, @c : entier) |
| 10 | debut |
| 11 | repeter |
| 12 | ecrire("L = ") |
| 13 | lire(l) |
| 14 | jusqua 1 ≤ l ≤ 20 |
| 15 | repeter |
| 16 | ecrire("C = ") |
| 17 | lire(c) |
| 18 | jusqua 1 ≤ c ≤ 20 |
| 19 | fin |
| 20 | |
| 21 | procedure remplir(@m : mat, l : entier, c : entier) |
| 22 | debut |
| 23 | pour i de 0 à l - 1 faire |
| 24 | pour j de 0 à c - 1 faire |
| 25 | ecrire("m[" + convch(i) + "," + convch(j) + "] = ") |
| 26 | lire(m[i,j]) |
| 27 | fin_pour |
| 28 | fin_pour |
| 29 | fin |
| 30 | |
| 31 | procedure transposer(m : mat, l : entier, c : entier, @t : mat) |
| 32 | debut |
| 33 | // compléter le traitement demandé dans l’énoncé. |
| 34 | fin |
| 35 | |
| 36 | procedure afficher(m : mat, l : entier, c : entier) |
| 37 | debut |
| 38 | pour i de 0 à l - 1 faire |
| 39 | pour j de 0 à c - 1 faire |
| 40 | ecrire(m[i,j], " ") |
| 41 | fin_pour |
| 42 | ecrire_nl("") |
| 43 | fin_pour |
| 44 | fin |
| 1 | algorithme transposee_matrice |
| 2 | debut |
| 3 | saisir(l, c) |
| 4 | remplir(m, l, c) |
| 5 | transposer(m, l, c, t) |
| 6 | afficher(t, c, l) |
| 7 | fin |
| 8 | |
| 9 | procedure saisir(@l : entier, @c : entier) |
| 10 | debut |
| 11 | repeter |
| 12 | ecrire("L = ") |
| 13 | lire(l) |
| 14 | jusqua 1 ≤ l ≤ 20 |
| 15 | repeter |
| 16 | ecrire("C = ") |
| 17 | lire(c) |
| 18 | jusqua 1 ≤ c ≤ 20 |
| 19 | fin |
| 20 | |
| 21 | procedure remplir(@m : mat, l : entier, c : entier) |
| 22 | debut |
| 23 | pour i de 0 à l - 1 faire |
| 24 | pour j de 0 à c - 1 faire |
| 25 | ecrire("m[" + convch(i) + "," + convch(j) + "] = ") |
| 26 | lire(m[i,j]) |
| 27 | fin_pour |
| 28 | fin_pour |
| 29 | fin |
| 30 | |
| 31 | procedure transposer(m : mat, l : entier, c : entier, @t : mat) |
| 32 | debut |
| 33 | pour i de 0 à l - 1 faire |
| 34 | pour j de 0 à c - 1 faire |
| 35 | t[j,i] ← m[i,j] |
| 36 | fin_pour |
| 37 | fin_pour |
| 38 | |
| 39 | fin |
| 40 | |
| 41 | procedure afficher(m : mat, l : entier, c : entier) |
| 42 | debut |
| 43 | pour i de 0 à l - 1 faire |
| 44 | pour j de 0 à c - 1 faire |
| 45 | ecrire(m[i,j], " ") |
| 46 | fin_pour |
| 47 | ecrire_nl("") |
| 48 | fin_pour |
| 49 | fin |
Méthode
- Lire les dimensions et les L × C entiers de M.
- Copier m[i,j] dans t[j,i], puis afficher T avec C lignes et L colonnes.
Comprendre la correction
Déroulement sur un exemple
- Pour M = [[1, 2, 3], [4, 5, 6]], la matrice d’entrée a 2 lignes et 3 colonnes.
- m[0,1] = 2 est copié dans t[1,0] ; m[1,0] = 4 est copié dans t[0,1]. On échange les indices pour chaque case.
- T a 3 lignes et 2 colonnes : [1, 4], [2, 5] et [3, 6]. On l’affiche avec les dimensions C puis L.
Erreurs à éviter
- t[i,j] ← m[i,j] ferait une copie, pas une transposition.
- Les dimensions de l’affichage sont inversées. Testez une matrice non carrée pour vérifier ce point.