Rechercher : dans
Par :

Comparaison tableaux en C

Dernière réponse le 26 avr 2008 à 14:04:29 julie, le 13 jun 2005 à 13:45:54 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Comparaison tableaux en C » dans :
Langage C - Les tableaux VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Les tableaux en langage C++ VoirType de données complexes Les variables, telles que nous les avons vues, ne permettent de stocker qu'une seule donnée à la fois. Or, pour de nombreuses données, comme cela est souvent le cas, des variables distinctes seraient beaucoup trop lourdes...

1

MissZaza, le 13 jun 2005 à 14:09:28

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.

Répondre à MissZaza

2

Kermitt31, le 13 jun 2005 à 14:10:57

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...
Proverbe Thaïlandais:Pingouins dans les champs,
hiver très méchant.

Répondre à Kermitt31

3

julie, le 13 jun 2005 à 14:24:06

Ok,merci. je vais coder alors...

Répondre à julie

4

mamiemando, le 14 jun 2005 à 00:50:24
  • +1

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 ==...

Répondre à mamiemando

5

maymay, le 30 sep 2007 à 11:26:19

Bonjour

Mamienando , je comprend pas pourquoi ta fonction retourne 2 valeures
return 0 ;
return 1 ;

Répondre à maymay

6

lami20j, le 30 sep 2007 à 12:18:43

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 lami20j

Répondre à lami20j

7

mamiemando, le 30 sep 2007 à 14:26:02

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.

Répondre à mamiemando

8

lami20j, le 30 sep 2007 à 15:01:32

;-)) lami20j

Répondre à lami20j

9

maymay, le 1 oct 2007 à 20:03:55

Merci pour vos reponses

Répondre à maymay

10

sissi, le 23 avr 2008 à 00:07:22
  • +1

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;

Répondre à sissi

11

mype, le 23 avr 2008 à 00:25:02

Utlise la fonction strcmp() de string.h

Répondre à mype

12

mamiemando, le 23 avr 2008 à 10:14:46
  • +1

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

Répondre à mamiemando

13

hmama, le 23 avr 2008 à 21:17:05

Bonjour ,merci de votre reponse.mais le probleme persiste
il me returne toujour la valeur 0

Répondre à hmama

14

mamiemando, le 24 avr 2008 à 00:12:02

Peux-tu nous donner le code de ton programme et nous dire ce que tu aimerais qu'il fasse ?

Répondre à mamiemando

15

hmama, le 24 avr 2008 à 00:24:37

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.

Répondre à hmama

16

mamiemando, le 24 avr 2008 à 00:58:42

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

Répondre à mamiemando

17

hmama, le 25 avr 2008 à 00:03:50

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;
}

====================================================

Répondre à hmama

18

mamiemando, le 25 avr 2008 à 01:48:41

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

Répondre à mamiemando

19

hmama, le 25 avr 2008 à 11:45:35

Salut mamiemando;

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

Merci .

Répondre à hmama

20

 mamiemando, le 26 avr 2008 à 14:04:29

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)

Répondre à mamiemando