Adloun

programmation Java (école d'ingénieur) · Chapitre 5 · Application directe du cours

Transposée et matrice symétrique

Tableaux · niveau 2

Énoncé

  • Écrire static int[][] transposee(int[][] m) qui retourne la transposée de la matrice m ( lignes et colonnes) : la matrice à lignes et colonnes telle que .
  • Écrire static boolean estSymetrique(int[][] m). Pourquoi suffit-il de parcourir les cases au-dessus de la diagonale ?

Corrigé


static int[][] transposee(int[][] m) {
    int[][] t = new int[m[0].length][m.length];  // p lignes, n colonnes
    for (int i = 0; i < m.length; i++)
        for (int j = 0; j < m[0].length; j++)
            t[j][i] = m[i][j];
    return t;
}

static boolean estSymetrique(int[][] m) {
    if (m.length != m[0].length) return false;   // une matrice symétrique est carrée
    for (int i = 0; i < m.length; i++)
        for (int j = i + 1; j < m.length; j++)
            if (m[i][j] != m[j][i]) return false;
    return true;
}

La transposée de {{1, 2, 3}, {4, 5, 6}} est [[1, 4], [2, 5], [3, 6]]. Pour la symétrie, la condition est la même pour le couple et pour le couple , et elle est toujours vraie sur la diagonale () : il suffit donc de tester les cases , soit comparaisons au lieu de . {{1, 7}, {7, 2}} est symétrique ; la matrice ne l'est pas.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →