Énoncé
Saisir L et C avec 1 ≤ L ≤ 20 et 1 ≤ C ≤ 20. Remplir une matrice M de L lignes et C colonnes d’entiers. Calculer la somme de chaque ligne dans un tableau S d’entiers, puis afficher ces sommes, une par ligne. Utiliser Saisir, Remplir, Calculer et Afficher.
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
6 15
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 somme_lignes_matrice |
| 2 | debut |
| 3 | saisir(l, c) |
| 4 | remplir(m, l, c) |
| 5 | calculer(m, l, c, s) |
| 6 | afficher(s, 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 calculer(m : mat, l : entier, c : entier, @s : vect) |
| 32 | debut |
| 33 | // compléter le traitement demandé dans l’énoncé. |
| 34 | fin |
| 35 | |
| 36 | procedure afficher(s : vect, l : entier) |
| 37 | debut |
| 38 | pour i de 0 à l - 1 faire |
| 39 | ecrire_nl(s[i]) |
| 40 | fin_pour |
| 41 | fin |
| 1 | algorithme somme_lignes_matrice |
| 2 | debut |
| 3 | saisir(l, c) |
| 4 | remplir(m, l, c) |
| 5 | calculer(m, l, c, s) |
| 6 | afficher(s, 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 calculer(m : mat, l : entier, c : entier, @s : vect) |
| 32 | debut |
| 33 | pour i de 0 à l - 1 faire |
| 34 | s[i] ← 0 |
| 35 | pour j de 0 à c - 1 faire |
| 36 | s[i] ← s[i] + m[i,j] |
| 37 | fin_pour |
| 38 | fin_pour |
| 39 | fin |
| 40 | |
| 41 | procedure afficher(s : vect, l : entier) |
| 42 | debut |
| 43 | pour i de 0 à l - 1 faire |
| 44 | ecrire_nl(s[i]) |
| 45 | fin_pour |
| 46 | fin |
Méthode
- Parcourir les lignes avec une première boucle.
- Remettre la somme à 0 avant de parcourir les colonnes de chaque ligne.
Comprendre la correction
Déroulement sur un exemple
- Pour M = [[1, 2, 3], [4, 5, 6]], L = 2 et C = 3. On commence la ligne 0 avec s[0] = 0.
- Les trois colonnes donnent s[0] = 1 + 2 + 3 = 6. On recommence à 0 pour la ligne 1.
- s[1] = 4 + 5 + 6 = 15. Afficher présente 6 puis 15 sur deux lignes.
Erreurs à éviter
- Chaque ligne a sa propre somme. Sans remise à 0, la seconde inclurait la première.
- La boucle des colonnes utilise C, même lorsque L ≠ C.