Compaison tableau 2 dimension

niark -  
 niark -
Salut

j ai a nouveau un petit probleme que je n arrive pas a resoudre...

J ai 2 tableaux d entiers a 2 dimensions et j aimerais juste que la fonction me renvoie 1 si les 2 tableaux sont egaux et 0 sinon

int compare(int**tab1, int ** tab2,int largeur, int hauteur)
{

int i,j;
int comp;

printf("%d %d\n", tab1,tab2);

i =0;
j = 0;
while (j < hauteur && tab1[i][j] == tab2[i][j])
{
while (i < largeur && tab1[i][j] == tab2[i][j] )
{
i++;
// printf("%d ",i);
}
i = 0;
j++;
// printf("%d ",j);

}
printf("%d %d\n",i,j);
if (j == hauteur) comp = 1;
else comp = 0;
return comp;
}

est ce que cette maniere de raisonner est la bonne ?

si vs auriez aussi fait comme ca alors j ai un gros probleme.

Mon but est d appliquer 2 filtres sur un fichier pgm notamment un gaussien suivi d un laplacien

j ai donc a un moment donne ds mon programme :

xtern int** log (int ** in, int largeur, int hauteur)
{
int **tmp = NULL;
int ** out = NULL;
int comp;

tmp = gaussien(in,largeur,hauteur);
comp = compare(tmp,in,largeur,hauteur);
printf ("%d\n", comp);

out = laplacien(tmp,largeur,hauteur);

comp = compare(out,tmp,largeur,hauteur);
printf ("%d\n", comp);

return out;
}

Or, qd j execute ma fonction compare me renvoie 1 poir la comparaison entre les 2 tableaux... cela voudrait dire normalement que le laplacien n a pas ete faite et pourtant ... en ecrivant ds le fichier j ai bien un laplacien de gaussien...

Pourquoi j ai besoin de comparer 2 tableaux? en fait je voudrais reexecuter mon laplacien de gaussien tant que, entre 2 iterations, les 2 tableaux sont differents...

Merci
A voir également:

3 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
C'est normal que ca marche pas, fais un truc du genre plutot :
int compare( int **tab1, int ** tab2,int largeur, int hauteur )
{
   int i = -1, j = -1;
   while( ++i < hauteur )
      while( ++j < largeur )
          if( tab1[i][j] != tab2[i][j] )
              return 0;
   return 1;
}
0
niark
 
pourquoi c normal que ca marche pas ? lol

j ai essaye ton programme. Ca me donne la meme chose cad qu il me met bien 0 pour le 1e prog puis 1 pour la 2e execution

merci
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
Dans ton prog, tu fais d'abord l'incrémentation puis la comparaison dans les deux boucles while alors si jamais c'est pas bon dans la deuxieme boucle, ca remonte dans la boucle du haut, qui incrémente à nouveau et refais le test, si c'est bon alors c'est reparti dans la deuxieme boucle... Si bien que tu peux avoir un endroit qui n'est pas le meme et le suivant qui est le meme (au niveau de colonne) et zou, ton erreur n'est pas remarquée. Bon l'explication n'est pas clair et c'est pour cela que je ne voulais pas t'expliquer avant (car g un peu de mal ce soir....).
Si ce que je t'ai mis n'est pas bon, alors...

...
sais pô ! c'est que c bon ! Non ?
0
niark
 
en effet... merci pour l erreur .:D
0