IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Matrice par symétrie diagonale


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Matrice par symétrie diagonale
    Bonjour,
    Je viens au près de vous car je encore débutant en java donc je suis bloqué sur un exercice
    On a une matrice
    1 2 3
    4 5 6
    7 8 9
    Je dois écrire un code permettant de produire la nouvelle matrice comme ceci:
    9 6 3
    8 5 2
    7 4 1 n.b: seule la diagonale 3 5 7 qui ne change pas
    Merci d'avance pour votre aide

    Mon idée:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int [][] tab = new int [3][]
                         For (int i=0;i<tab.length;i++){
                         For (int j=0;j<tab[i].length;j++){
                          tab[i][j]=tab[j][i]}}

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Il te manque l'instanciation des lignes, mais c'est un bon début.
    Je te conseille de te créer une méthode séparée chargée de créer une matrice x×y, et de l'appeler depuis ton code, puis voir en détail ce que tu dois copier où. Il y a au moins un endroit où la coordonnée sera non pas n, mais 3-n...

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour ta réponse j'ai essayé de faire ce que tu as expliqué mais pour une matrice de taille plus grande cela ne marche pas ou peut être j'ai pas compris quand tu as parler de faire appel à la méthode?????

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Je parle d'une fonction comme ça:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int[][] creerMatrice(int lignes, int colonnes)
    {
    	int[][] ret = new int[][lignes];
    	for(int lig=0 ; lig < lignes ; lig++)
    		ret[lig] = new int[colonnes];
    	return ret;
    }

    Que tu pourras utiliser dans ton code:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //On crée la matrice de sortie avec les dimensions inversées
    int sourceNbLignes = tab.length;
    int sourceNbColonnes = tab[0].length;
    int destNbLignes = sourceNbColonnes;
    int destNbColonnes = sourceNbLignes;
    int[][] nouvelleMatrice = creerMatrice(destNbLignes, destNbColonnes);
    //On fait la copie avec un truc du genre:
    for(int destLig=0 ; destLig < destNbLignes ; destLig++) {
    	for(int destCol=0 ; destCol < destNbColonnes ; destCol++) {
    		nouvelleMatrice[destLig][destCol] = tab[sourceNbLignes-1-destCol][sourceNbColonnes-1-destLig]
    	}
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 763
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Si la matrice doit avoir un axe de symétrie (la diagonale est aussi un axe de symétrie dans le cas d'un rectangle ou d'un carré), c'est que le nombre de lignes et le nombre de colonnes sont égaux. Non ? peut-être je me trompe et il doit y avoir des cas particuliers.

    Dans le cas où nbrLignes = nbrColonnes pour pouvoir avoir un axe de symétrie, il faudrait donc contrôler si ces nombres sont égaux avant d'appeler la fonction qui inverse la symétrie.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Sauf qu'en fait c'est accessoire, transposer une matrice de cette façon ne nécessite pas qu'elle soit carrée (mais échange ses dimensions si elle ne l'est pas).

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 763
    Points : 576
    Points
    576
    Par défaut
    Quel intérêt cela peut-il avoir ?
    Peut-être si on échange les abscisses avec les ordonnées dans un tableau ?

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton code mais après vérification il m'affiche pas le résultat attendu 😉😉

Discussions similaires

  1. Diminuer la résolution de ma matrice par une somme
    Par Programmeurfou dans le forum MATLAB
    Réponses: 15
    Dernier message: 13/02/2009, 15h17
  2. Matrice par blocs
    Par kwatz dans le forum MATLAB
    Réponses: 12
    Dernier message: 12/02/2009, 18h05
  3. Remplir Matrice par intervale de colonnes
    Par lloyd_r dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/07/2008, 18h47
  4. Inversion de matrice par l'algorithme de Greville
    Par ENSAM-ALAMI dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/06/2008, 17h46
  5. Matrice par bloc
    Par feynman dans le forum Scilab
    Réponses: 6
    Dernier message: 14/05/2008, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo