#include /********************* trace *********************/ void printTabTrace(int tab[], int size) { int i; printf("{"); for(i=0;i<=size-1;i=i+1) { if (i!=size-1) { printf("%d ",tab[i]); } else { printf("%d", tab[i]); } } printf("}"); } /***/ void trace(int tab[], int size,int i, int valeur, int trouve, int indice) { printTabTrace(tab,size); printf(" %d ",size); printf(" %d ",i); printf(" %d ",valeur); printf(" %d ",trouve); printf(" %d ",indice); printf("\n"); } /******************* fin trace *******************/ /* rechercheValeur: parametres d'entree : - tab un tableau d'int - size la taille du tableau - valeur, la valeur a chercher parametres de sortie : - indice, l'endroit ou trouver un int pour stocker l'indice de la valeur dans tab Retourne 1 (vrai) si la valeur est presente dans le tableau Retourne 0 (faux) si la valeur n'est pas presente dans le tableau Remarque : le tableau tab ne doit pas etre forcemment trie */ int rechercheValeur(int tab[], int size, int valeur, int* indice) { int i, trouve; trouve = 0; /* faux */ i = 0; while (trouve!=1 && i<=size-1) /* Identique a: while (!trouve && i<=size-1) */ { if (tab[i] == valeur) { trouve = 1; /* vrai */ *indice = i; } /* trace(tab,size,i,valeur,trouve,*indice); */ i = i + 1; } return trouve; } int main(void) { int t[5] = {90, 67, 2, 50, 23}; int taille = 5, val, ind; printf("Valeur a rechercher dans le tableau ? "); scanf("%d",&val); /* if (rechercheValeur(t,taille,val,&ind)==1) est identique a if (rechercheValeur(t,taille,val,&ind)) */ if (rechercheValeur(t,taille,val,&ind)==1) { printf("%d se trouve a l'indice %d\n",val,ind); } else { printf("%d ne se trouve pas dans le tableau\n",val); } return 0; }