Comparaison tableaux en C

[Résolu/Fermé]
Signaler
-
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
-
Bonjour,
Je voudrais savoir si il existe une instruction en C qui permet de comparer deux tableaux et de determiner tous les elements que ces deux tableaux ont en communs.
Merci

15 réponses

Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Si c'est un tableau de char tu peux utiliser strcmp (<string.h>). Sinon

int cmp_tab(int *tab1,int *tab2,int taille){//ou ce que tu veux à la place de "int"
     for(i=0;i<taille;i++) {
       if (tab1[i]!=tab2[i]) return 0;
     }
     return 1;
}


ou truc dans le genre...

Note que si tu peux faire du c++ tu peux directement utiliser la classe vector et l'opérateur ==...
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Pour compléter ce que dis mype, essaye de faire un truc dans ce genre
int compare_tableau(const char* T1[10][10],const char* T2[10][10]){
  unsigned i,j;
  for(i=0;i<10;++i){
    for(j=0;j<10;++j){
      if(strcmp(T1[i][j],T2[i][j]) != 0) return 0; // différence détectée
    }
  }
  return 1;
}

Bonne chance
Messages postés
4
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008

bonjour ,merci de votre reponse.mais le probleme persiste
il me returne toujour la valeur 0
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
Salut,

la fonction return 0 si l'élément i du tab1 n'est pas égal avec l'élément i du tab2
en cas contraire la fonction return 1

donc il y a une seule valeur qui est retournée
bonjour, comment on fait la comparaison de deux tableaux T1 et T2.

tel que:

char* T1[10][10];
char* T2[10][10];

on, veut savoir si les deux tableaux ont les mêmes valeurs.


Merci d'avance;
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
427
utlise la fonction strcmp() de string.h
Messages postés
149
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
7 décembre 2005
33
Bonjour,

Quel type de tableaux souhaites-tu comparer ?
Char, int, ... ? Tableau à 1 dimension ou 2 ?
Il existe une fonction pour comparer 2 chaines de caracteres "strcmp" mais pour le reste, je pense qu'il va falloir le coder.
Messages postés
3669
Date d'inscription
jeudi 15 juillet 2004
Statut
Contributeur
Dernière intervention
8 août 2006
492
Bonjour,
Tu auras plus vite fait de coder une focntion que de chercher si ca existe tout fait !!! Ah mon avis c'est le mieux...
ok,merci. je vais coder alors...
Messages postés
1
Date d'inscription
mercredi 19 septembre 2007
Statut
Membre
Dernière intervention
30 septembre 2007

bonjour

Mamienando , je comprend pas pourquoi ta fonction retourne 2 valeures
return 0 ;
return 1 ;
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Exactement, donc si les deux tableaux sont de taille "taille" :
- s'ils sont égaux la fonction retourne 1
- s'ils ont au moins un élément différent, la fonction retourne 0.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 554
;-))
merci pour vos reponses
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Peux-tu nous donner le code de ton programme et nous dire ce que tu aimerais qu'il fasse ?
Messages postés
4
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008

salut,

actuellemnt je suis entraine de faire un TP sur la gestion de football.

lors de l'ajout d'une équipe je veux savoir si cette équipe existe déjà ou non pour cela je doit tester si les deux équipes n'ont pas le même entraînneur, les mêmes joueurs et le même staff technique.

voici la strcuture de l'équipe que j'ai utilisé:

-----------------------------------------------------------------------------------------------

typedef struct{
char* nom[35]; //nom de l'equipe
char* joueur[23][35]; // tableau des joueurs
char* entraineur[35];
char* staff[5][35]; // tableau de staff technique
}Equipe;

------------------------------------------------------------------------------------------------

donc moi je veux écrire une fonction qui compare deux tableaux de chaînes de caractères ie. comparer les joueurs de l'équipe 1 avec les jouers de l'équipe 2.

Merci d'avance.
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Donne nous le code complet (enfin le code minimal qui nous montre que le test ne marche pas). Autre question es-tu contraint de programmer en C où t'autorises-t'on le C++ ?

Bonne chance
Messages postés
4
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008

salut mamienando;
en fait jai reglé mon problème, je te remerci infiniment pour ton aide

voici ma fonction:
=============================================
int compare (char* joueur1[23][35], char* joueur2[23][35], int lng)
{
int i=0,j, bool,x=1; //bool indique si une valeur est trouvée
int tab[23];

while (i<lng)
{
j=0; bool=0;
while ((j<lng)&& (bool==0))
{

if (strcmp(joueur1[i],joueur2[j])==0)
bool=1;// la valeur est trouvée
else
bool=0;
j++;
}
tab[i]=bool;
i++;
}
for (i=0;i<lng;i++) x=x*tab[i];
return x;
}

====================================================
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Quand je dis code complet c'est un truc qu'on peut compiler et exécuter, et qui met en évidence le problème. J'attends toujours de savoir si on peut utiliser les fonctionnalités du C++ (ce qui simplifierais grandement le code).

Bonne chance
Messages postés
4
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008

salut mamiemando;

je ne peux pas utiliser les fonctionnalitées de C++, mais je doit le faire en C.

Merci .
Messages postés
30149
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
30 septembre 2021
7 177
Ok alors vas pour du C. Peux tu nous donner ton code en version minimal (un programme qui compile et qui montre que ta fonction ne marche pas)