Egalité de tableau
Résolu
yumimitsuki
-
yumimitsuki -
yumimitsuki -
Bonjour tout le monde!
Jai un programme en c que je n'ai pas pu resoudre. Dans le programme on doit tester si deux tableaux sont egaux ou pas.
voici le programme que j'ai realisé:
#include<stdio.h>
int egalite(int tab1,int tab2)
{ int i,j,s,n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)
{ if(tab1==tab2)
s=s+1;
}
if(s==n)
return(1);
else
return(0);
}
void main()
{
int i,j,s,n,a[50],b[50];
printf("donnez la taille des tableaux");
scanf("%d",&n);
for(i=0;i<n;i++)
printf("a[%d]=",i);
scanf("%d",&a[i]);
for(j=0;j<n;j++)
printf("b[%d]=",j);
scanf("%d",&b[j]);
if(egalite(a,b)==1)
printf("les tableaux sont egaux");
else
printf("les tableaux ne sont pas egaux");
}
Je sais qu'il y a quelques erreurs.
Pouvez vous m'aider?merci d'avance!!
Jai un programme en c que je n'ai pas pu resoudre. Dans le programme on doit tester si deux tableaux sont egaux ou pas.
voici le programme que j'ai realisé:
#include<stdio.h>
int egalite(int tab1,int tab2)
{ int i,j,s,n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)
{ if(tab1==tab2)
s=s+1;
}
if(s==n)
return(1);
else
return(0);
}
void main()
{
int i,j,s,n,a[50],b[50];
printf("donnez la taille des tableaux");
scanf("%d",&n);
for(i=0;i<n;i++)
printf("a[%d]=",i);
scanf("%d",&a[i]);
for(j=0;j<n;j++)
printf("b[%d]=",j);
scanf("%d",&b[j]);
if(egalite(a,b)==1)
printf("les tableaux sont egaux");
else
printf("les tableaux ne sont pas egaux");
}
Je sais qu'il y a quelques erreurs.
Pouvez vous m'aider?merci d'avance!!
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
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif ci-dessous. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des quatre premières colonnes. il manque 5 valeurs dans le tableau ci-dessous. retrouvez-les dans votre tableau, puis reportez-les arrondies à l’entier le plus proche. - Guide
- Suivi des modifications word - Guide
4 réponses
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??^_^
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);
}
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...