1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <stdio.h>
#define VALEUR_NON_TROUVEE -1
int chercher(int t[], int debut, int fin, int valeur)
{
int milieu;
if (valeur < t[debut])
{
return VALEUR_NON_TROUVEE;
}
if (valeur > t[fin])
{
return VALEUR_NON_TROUVEE;
}
if (valeur == t[debut])
{
return debut;
}
if (valeur == t[fin])
{
return fin;
}
else
{
milieu = (debut + fin) / 2;
if (milieu == debut)
{
return VALEUR_NON_TROUVEE;
}
if (valeur < t[milieu])
{
return chercher(t, debut, milieu, valeur);
}
else
{
return chercher(t, milieu, fin, valeur);
}
}
}
int main(void)
{
int val;
int t[] = {2, 3, 5, 7, 98};
int position;
printf("entrez la valeur a rechercher:");
scanf("%d",&val);
position = chercher(t, 0, sizeof t / sizeof(int), val);
if(position != VALEUR_NON_TROUVEE)
printf ("la valeur %i est a la position %i", val, position);
else
printf ("la valeur %i n'a pas ete trouvee", val);
return 0;
} |
Partager