[C] Aide pour petit exo

Aide pour petit exo [C] - C - Programmation

Marsh Posté le 03-06-2012 à 22:33:58    

Bonjour, un ptit coup de pouce, parce que ce code me renvoi tableaux identiques même quand ils ne le sont pas. Merci

 
Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int *tab=NULL;
  6.     int *tab2=NULL;
  7.     int taille;
  8.     int i;
  9.   printf("Saisir un entier n pour la taille du premier tableau:" );
  10.   scanf("%d",&taille);
  11.   for(i=1;i<=taille;i++)
  12.   {
  13.     tab=malloc(taille * sizeof(int));
  14.     printf("element %d =",i);
  15.     scanf("%d",&tab[i]);
  16.   }
  17. printf("Saisir un entier n pour la taille du 2nd tableau:" );
  18. scanf("%d",&taille);
  19.     for(i=1;i<=taille;i++)
  20.   {
  21.     tab2=malloc(taille * sizeof(int));
  22.     printf("element %d =",i);
  23.     scanf("%d",&tab2[i]);
  24.   }
  25.   if( id(*tab,*tab2,taille)==0)
  26.   {
  27.       printf("tableaux non identiques" );
  28.   }
  29.   else printf("tableaux identiques" );
  30. }
  31. Fonction:
  32.   int id(int *t1,int *t2,int taille)
  33. {
  34.       int i;
  35.   for(i=0;i<taille;i++)
  36.   {
  37.       if(t1[i] != t2[i])
  38.       {
  39.           return 0;
  40.       }
  41. return 1;
  42.   }
  43. }


Message édité par bakkiesboucher le 03-06-2012 à 22:35:21
Reply

Marsh Posté le 03-06-2012 à 22:33:58   

Reply

Marsh Posté le 03-06-2012 à 22:48:02    

Le "return 1" de la fonction doit être en dehors de la boucle. Là, dès la comparaison du 1er élément, la fonction se termine (par le "return 0" ou le "return 1" ), ce qui fait qu'elle ne compare que le 1er élément [:proy]


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 03-06-2012 à 22:59:45    

Oé mais ça me fait la même chose quand même :/

 

Peut être qu'il faut afficher les 2 tableaux et après les comparer non ?


Message édité par bakkiesboucher le 03-06-2012 à 23:03:46
Reply

Marsh Posté le 03-06-2012 à 23:07:37    

1) Tu dois déjà comparer la taille de tes deux tableaux, et si elle est différente, tu renvoie faux
2) if( id(*tab,*tab2,taille)==0)
le compilo devrait raler, vu que *tab et *tab2 sont des entiers
c'est manifestement
if( id(tab, tab2,taille)==0)
ce que tu veux faire
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-06-2012 à 01:58:26    

ok merci, résolu

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed