Je veux comparer deux tableaux différents qui sont tous les deux int
. Un tableau est statique et contient des nombres de 1 à 10 et le second tableau demande à l'utilisateur de saisir dix nombres différents et le programme vérifie quels éléments des deux tableaux sont égaux.
#include <stdio.h>
int main(void) {
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[10];
int i;
for (i=0;i<11;i++) {
printf("Enter numbers: ");
scanf("%d", &array2);
}
for (i=0;i<11;i++) {
if (array1[i] != array2[i]) {
printf("Not equal \n");
}
else {
printf("They are equal. \n");
}
}
}
Le programme dit toujours non égal même si je saisis un nombre égal à un nombre stocké dans le premier tableau.
scanf("%d", &array2);
Vous ne mettez jamais à jour l'index de array2
lorsque vous obtenez une valeur à partir de l'entrée.
Essayer
scanf("%d", &array2[i]);
Pour comparer, vous pouvez également utiliser memcmp
pour comparer la mémoire:
memcmp(array1, array2, sizeof(array1));
Les tableaux utilisent des indices de base zéro pour un début. Si vous remplissez incorrectement array2
, vous voudrez probablement modifier votre première boucle comme suit:
for (i=0;i<10;i++)
{
printf("Enter numbers: ");
scanf("%d", &array2[i]);
}
car votre code actuel passe simplement l'adresse de array2
en tant qu'argument à scanf
.
Puis changez la deuxième boucle conditionnelle à
for (i=0;i<10;i++)
dans votre boucle de comparaison afin d’éviter d’accéder aux éléments situés au-delà des limites de votre tableau.
Actuellement, votre deuxième boucle accède aux éléments dont les indices sont compris entre 0 et 10, mais array1
ne contient que 10 éléments. Vous avez donc un comportement indéfini avec votre code actuel.
#include <stdio.h>
int main(void) {
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[10];
int i;
for (i=0;i<10;i++) { //fixed the range here
printf("Enter numbers: ");
scanf("%d", &array2[i]); //fixed the indexing
}
for (i=0;i<10;i++) { //fixed the range here
if (array1[i] != array2[i]) {
printf("Not equal \n");
}
else {
printf("They are equal. \n");
}
}
}
J'essaie de répondre à la réponse, même si je suis un débutant au programme C.
Selon votre programme écrit ci-dessus, vous saisissez et conservez les valeurs dans int array2[10]
qui comporte 11 éléments.
Rappelez-vous que le premier élément de ce tableau est indexé par zéro. Ex: array2[0]
, jusqu’à atteindre le dernier élément qui est array2[10]
, vous en avez compté 11.
Maintenant, array1
a écrit les valeurs prédéfinies qui seront comparées à vos valeurs d’entrée. Entrez et stockez vos valeurs dans array2[]
.
#include <stdio.h>
int main(void) {
int array1[] = {1,2,3,4,5,6,7,8,9,10};
int array2[10];
int i;
for (i=0;i<10;i++) { //fixed the range here
printf("Enter numbers: ");
scanf("%d", &array2[i]); //fixed the indexing
if (array1[i] != array2[i]) {
printf("Not equal \n");
}
else {
printf("They are equal. \n");
}
}
}