Comparer deux matrices

Résolu
romain60112 Messages postés 70 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 17 avril 2013 - 11 mars 2010 à 22:10
romain60112 Messages postés 70 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 17 avril 2013 - 12 mars 2010 à 07:55
Bonsoir,

Je rencontre un soucis, je n'arrive pas a comparer deux matrices.
J'ai écrit un petit bout de code qui ne fonctionne pas le voici :

int Mat1[10][10] = {
0,1,1,1,0,1,0,0,0,0,
0,0,0,0,0,1,0,0,0,1,
0,0,0,0,0,1,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,
};

int Mat2[10][10] = {
0,1,1,1,0,1,0,0,0,0,
0,0,0,0,0,1,0,0,0,1,
0,0,0,0,0,1,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,1,
0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,
};

for(int i=0; i<10; i++)
{
for(int j=0; j<10; j++)
{
if(Mat1[j][i] == Mat2[j][i])
{ cout<<"Matrice Egale"<<endl;
}
else
{cout<<"Matrice pas Egale"<<endl;
}
}

}

Quel est mon erreur ?

Merci

Romain
A voir également:

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 mars 2010 à 23:23
Tu veux 1 seule inscription "egal" ou "pas egal" ???

D'abord
int Mat1[10][10] est placé en memoire comme Mat[100], tout linéaire.
On n'a donc pas besoin d'imbrication de boucle.

int *p1, *p2, i;
p1 = (int*) Mat1;
p2 = (int*) Mat2;
i = 99; // tendre vers 0 sera + rapide
do {
if(p1[i] != p2[i]) break; // ELEM DIFFERE, ON QUITTE BOUCLE
} while(--i >= 0);
if(i >= 0) {
cout<<"Matrice pas Egale"<<endl
}
else {
cout<<"Matrice Egale"<<endl;
}


ciao...
BruNews, MVP VC++
3
romain60112 Messages postés 70 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 17 avril 2013 1
12 mars 2010 à 07:55
Merci des détails, je ne savais pas que la matrice était placé en mémoire de cette façon. Et je ne savais pas non plus de dépiler aller plus vite de piler !

Merci et a bientôt.

Romain
1
Rejoignez-nous