Compaison tableau 2 dimension

Fermé
niark - 9 mai 2005 à 21:39
 niark - 9 mai 2005 à 23:17
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 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 mai 2005 à 21:49
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
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 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
9 mai 2005 à 22:48
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
en effet... merci pour l erreur .:D
0