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 :

Comparaison de deux matrices de char


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut Comparaison de deux matrices de char
    Bonjour a tous,
    je voudrais je voudrais comparer deux matrices char; ayant les meme nombre de colonne et ligne voici ce que j'ai fait mais qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public static void compmat(char[][] mat1,char [][]ma t2,String ch )
    {
    	mat1=new char[ch.length()+1][8];
    	mat2=new char[ch.length()+1][8];
    	int k=0;
    	int nbRow=ch.length()+1;
    	for(int i=0; i<nbRow-1; i++) { 
    		if(mat1[i][7]!=mat2[i][7]){
    			k=i;
    	System.out.println("Erreur sur la ligne "+k);
    		}
    		if(k!=-1)break;
    }
    if(k==-1)System.out.println("\nIl nya pas d'erreur");
    else{ System.out.println("\ncorrection");
    		for(int i=0;i<8;i++){
    			if(mat1[ch.length()][i]!=mat2[ch.length()][i])
    				mat2[k][i]= (mat2[k][i]=='1')? '0' : '1';
    }
    }
    }
    Aidez moi S'il vous plait .
    Merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En même temps la première chose que tu fais, c'est de perdre tes deux paramètres mat1 et mat2 pour les remplacer par de nouvelles matrices toutes neuves avec new. Ça risque pas de marcher.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Salut merci a vous,
    Citation Envoyé par thelvin Voir le message
    En même temps la première chose que tu fais, c'est de perdre tes deux paramètres mat1 et mat2 pour les remplacer par de nouvelles matrices toutes neuves avec new. Ça risque pas de marcher.
    Bien vu le problème maintenant c'est que le bloc d'instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<nbRow-1; i++) { 
    		if(mat1[i][7]!=mat2[i][7]){
    			k=i;
    	System.out.println("Erreur sur la ligne "+k);
    		}
    		if(k!=-1)break;
    }
    if(k==-1)System.out.println("\nIl nya pas d'erreur");
    n'est jamais executé et au lieu de corrigé l'element erroné il modifie toute la ligne supposé erroné en remplaçan 0 par 1 et 1 par 0 pis il affiche la seule ligne supposée erronée

  4. #4
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Après de longues heure j'ai remarqué que mon code dans son entièreté est erroné quelqu'un d'autre aurait un autre a me proposer?.
    Merci d'avance

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Nous on nous a parlé de comparaison, pas de truc erroné ni de réparation.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Nous on nous a parlé de comparaison, pas de truc erroné ni de réparation.
    la vous m'avez eu

    Je reformule dans ce cas aider moi a repararé mon code MERCI a Vous.
    Merci.

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui non mais c'est quoi l'idée, en fait ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Oui non mais c'est quoi l'idée, en fait ?
    Je voudrais comparer en fait deux matrice de char par exemple si:
    mat1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [1, 0, 0, 1, 0, 0, 0, 0]
    [1, 0, 0, 0, 1, 0, 1, 1]
    [1, 0, 0, 1, 1, 0, 0, 1]
    [1, 0, 0, 1, 1, 0, 0, 1]
    [1, 0, 0, 1, 1, 1, 1, 1]
    [1, 0, 0, 0, 0, 1, 0, 0]
    et
    mat2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [1, 0, 0, 1, 0, 0, 0, 0]
    [1, 0, 0, 0, 1, 0, 1, 1]
    [1, 0, 0, 0, 1, 0, 0, 1]
    [1, 0, 0, 1, 1, 0, 0, 0]
    [1, 0, 0, 1, 1, 1, 1, 1]
    [1, 0, 0, 0, 0, 1, 0, 0]
    Ainsi à partir de ses matrice je voudrais pouvoir dire si :
    mat2=mat1si elles sont egales j'affiche un message
    sinon je signale la la ligne et la colonne de l'erreur puis
    je corrige mat2
    Merci

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Bonjour,

    Quand la question est claire c'est plus facile

    Voici un exemple dans lequel la méthode compareMatrices() renvoie une liste de Point dont les coordonnées sont ligne et colonne des matrices où il y a une erreur.

    L'avantage d'avoir une liste est que tu peux stocker toutes les erreurs dedans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    import java.util.ArrayList;
    import java.awt.Point;
     
    public class Matrice {
     
    	public static void main(String[] args) {
     
    		String[][] matrice1 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    					{"1", "0", "0", "0", "1", "0", "1", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "1", "0", "1"},
    					{"1", "0", "0", "0", "0", "1", "0", "0"}};
     
    		String[][] matrice2 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    					{"1", "0", "0", "0", "1", "0", "1", "1"},
    					{"1", "0", "0", "0", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "1", "1", "1"},
    					{"1", "0", "0", "0", "0", "1", "0", "0"}};
     
    		ArrayList<Point> listeErreurs = compareMatrices( matrice1, matrice2);
    		for (Point p : listeErreurs) {
    			System.out.println("Erreur ligne " + p.getX() + " et colonne " + p.getY());	
    		}
     
    	}
     
    	public static ArrayList<Point> compareMatrices(String[][] mat1, String[][] mat2) {
    		ArrayList<Point> list = new ArrayList<Point>();
    		for (int i = 0;i<mat1.length;i++) {
    			for (int j = 0;j<mat1[0].length;j++) {
    				if (mat1[i][j] != mat2[i][j]) {
    					list.add(new Point(i+1,j+1));
    				}
    			}
    		}
    		return list;
    	}
    }

  10. #10
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par ludomacho Voir le message
    Bonjour,


    String[][] matrice1 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    {"1", "0", "0", "0", "1", "0", "1", "1"},
    {"1", "0", "0", "1", "1", "0", "0", "1"},
    {"1", "0", "0", "1", "1", "0", "0", "1"},
    {"1", "0", "0", "1", "1", "1", "0", "1"},
    {"1", "0", "0", "0", "0", "1", "0", "0"}};

    String[][] matrice2 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    {"1", "0", "0", "0", "1", "0", "1", "1"},
    {"1", "0", "0", "0", "1", "0", "0", "1"},
    {"1", "0", "0", "1", "1", "0", "0", "1"},
    {"1", "0", "0", "1", "1", "1", "1", "1"},
    {"1", "0", "0", "0", "0", "1", "0", "0"}};


    [/code]
    Salut encore une fois merci,
    Mais comment puis-je effectuer la correction de matrice2 s'il ya un erreur.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Bonjour,

    tu corriges en même temps que le teste dans la boucle et un petit affichage à la fin pour vérifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    import java.util.ArrayList;
    import java.awt.Point;
     
    public class Matrice {
     
    	public static void main(String[] args) {
     
    		String[][] matrice1 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    					{"1", "0", "0", "0", "1", "0", "1", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "1", "0", "1"},
    					{"1", "0", "0", "0", "0", "1", "0", "0"}};
     
    		String[][] matrice2 = { {"1", "0", "0", "1", "0", "0", "0", "0"},
    					{"1", "0", "0", "0", "1", "0", "1", "1"},
    					{"1", "0", "0", "0", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "0", "0", "1"},
    					{"1", "0", "0", "1", "1", "1", "1", "1"},
    					{"1", "0", "0", "0", "0", "1", "0", "0"}};
     
    		ArrayList<Point> listeErreurs = compareMatrices( matrice1, matrice2);
    		for (Point p : listeErreurs) {
    			System.out.println("Erreur ligne " + p.getX() + " et colonne " + p.getY() );
    			System.out.println("nouvelle valeur Matrice2("+((int)p.getX()+","+ (int)p.getY()+") = " + matrice2[(int)p.getX()][(int)p.getY()]));
    			System.out.println();
    		}
     
    	}
     
    	public static ArrayList<Point> compareMatrices(String[][] mat1, String[][] mat2) {
    		ArrayList<Point> list = new ArrayList<Point>();
    		for (int i = 0;i<mat1.length;i++) {
    			for (int j = 0;j<mat1[0].length;j++) {
    				if (mat1[i][j] != mat2[i][j]) {
    					list.add(new Point(i+1,j+1));
    					mat2[i][j] = mat1[i][j];
    				}
    			}
    		}
    		return list;
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comparaison de deux matrices en ocaml
    Par savezoboss dans le forum Caml
    Réponses: 3
    Dernier message: 06/12/2013, 11h00
  2. Erreur de comparaison de deux matrices
    Par proc02 dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 11/05/2013, 16h30
  3. Comparaison de deux matrices logiques
    Par sjunod dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/04/2009, 13h12
  4. [Débutant] Comparaison de deux matrices
    Par niepoc dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/06/2008, 16h12
  5. Comparaison de deux matrices sans boucle for
    Par zicos dans le forum MATLAB
    Réponses: 8
    Dernier message: 04/05/2007, 18h16

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