Egalité de tableau
Résolu/Fermé
A voir également:
- À l'aide des tableaux ci-dessous, trouvez le mot dont le code ascii est le suivant : 50 52 4f 4d 45 4e 45 55 52
- À l’aide des tableaux ci-dessous, trouvez le mot dont le code ascii est le suivant : 50 52 4f 4d 45 4e 45 55 52 - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Le mode suivi des modifications - Guide
- + 52 c'est quel pays - Guide
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 18/06/2011 à 23:46
Modifié par KX le 18/06/2011 à 23:46
Si tu compares deux tableaux tu dois passer des tableaux en paramètres de ta fonction... Et de même taille, sinon c'est évident qu'ils ne sont pas égaux.
Sinon, tu n'as pas besoin de compter le nombre de cases bien rempli pour être sûr qu'ils sont égaux, dès que tu as un élément différent tu sors de la fonction avec 1...
Et surtout pas avec un double parcours (i,j) un seul itérateur suffit !
Et puis dans le main il te manque des accolades pour tes for de remplissage de tableaux
La confiance n'exclut pas le contrôle
int egalite(int tab1[], int tab2[], int n);Apprends à te servir d'un compilateur, ce genre d'erreurs sont faciles à identifier !
Sinon, tu n'as pas besoin de compter le nombre de cases bien rempli pour être sûr qu'ils sont égaux, dès que tu as un élément différent tu sors de la fonction avec 1...
Et surtout pas avec un double parcours (i,j) un seul itérateur suffit !
Et puis dans le main il te manque des accolades pour tes for de remplissage de tableaux
La confiance n'exclut pas le contrôle
merci beaucoups pour la reponse! je vous pose quand meme une question, pourquoi vous avez declare n comme variable globale dans la fonction egalite??^_^
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 19/06/2011 à 00:12
Modifié par KX le 19/06/2011 à 00:12
Elle n'est pas déclarée comme variable globale mais comme paramètre...
Si ton main est bien fait il devrait ressembler à ceci d'où l'intérêt des paramètres !
Mais tu es encore loin d'avoir ça !
Si ton main est bien fait il devrait ressembler à ceci d'où l'intérêt des paramètres !
int main() { int n = entrerNombre("Taille des tableaux : ",0,50); int a[50], b[50]; remplir(a,n,"a"); remplir(b,n,"b"); if (egalite(a,b,n)) printf("les tableaux sont egaux"); else printf("les tableaux ne sont pas egaux"); system("PAUSE"); return 0; }
Mais tu es encore loin d'avoir ça !
Tout à fait, ma logique pascal suggérerait
int egalite(int tab1,int tab2)
{ int i,n;
for(i=0;i<n;i++)
if(tab1<>tab2)
return(0);
return(1);
}
int egalite(int tab1,int tab2)
{ int i,n;
for(i=0;i<n;i++)
if(tab1<>tab2)
return(0);
return(1);
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 juin 2011 à 23:49
18 juin 2011 à 23:49
Plutôt d'accord excepté qu'on doit connaitre la valeur de n à un moment donné.
Note : en C la différence s'exprime avec l'opérateur !=
Note : en C la différence s'exprime avec l'opérateur !=
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
18 juin 2011 à 23:54
18 juin 2011 à 23:54
Autant pour moi j'avais mal regardé ton code ^^ Si ils doivent être spécifiés bien sûr.
Tant pis, je donne la réponse pour que tu comprennes :p
Tant pis, je donne la réponse pour que tu comprennes :p
int egalite(int tab1[],int tab2[], int n) { int i; for (i=0; i<n; i++) if (tab1[i]!=tab2[i]) return 0; return 1; }
Car il n'est pas déclaré en global, il est présent qu'au niveau du corps du programme, donc il faut le préciser à la fonction...
Plus précisément, n est déclaré dans l'en-tête de la fonction, donc il se trouve sur la pile ou dans un registre, et non pas dans le tas global permanent.
En fait, on utilise n dans le corps du programme et dans la fonction, mais il ne s'agit pas de la même variable, le n de la fonction étant rempli par le programme lors de l'appel de ladite fonction...
En fait, on utilise n dans le corps du programme et dans la fonction, mais il ne s'agit pas de la même variable, le n de la fonction étant rempli par le programme lors de l'appel de ladite fonction...