Posez votre question Signaler

Comparaison tableaux en C [Résolu]

julie - Dernière réponse le 26 avril 2008 à 14:04
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
Lire la suite 

Comparaison tableaux en C »

20 réponses
Réponse
+2
moins plus
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 ==...
Ajouter un commentaire
Réponse
+1
moins plus
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;
mype- 23 avril 2008 à 00:25
utlise la fonction strcmp() de string.h
Ajouter un commentaire
Réponse
+1
moins plus
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
hmama- 23 avril 2008 à 21:17
bonjour ,merci de votre reponse.mais le probleme persiste
il me returne toujour la valeur 0
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
ok,merci. je vais coder alors...
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
merci pour vos reponses
Ajouter un commentaire
Réponse
+0
moins plus
Peux-tu nous donner le code de ton programme et nous dire ce que tu aimerais qu'il fasse ?
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
hmama- 25 avril 2008 à 00:03
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;
}

====================================================
Ajouter un commentaire
Réponse
+0
moins plus
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
hmama- 25 avril 2008 à 11:45
salut mamiemando;

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

Merci .
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
-1
moins plus
bonjour

Mamienando , je comprend pas pourquoi ta fonction retourne 2 valeures
return 0 ;
return 1 ;
Ajouter un commentaire
Réponse
-1
moins plus
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.
lami20j- 30 sept. 2007 à 15:01
;-))
Ajouter un commentaire
Ce document intitulé « Comparaison tableaux en C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?