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
|
#include<stdlib.h>
#include <stdio.h>
main()
{
/* Déclarations */
int vec[50]; /* tableau donné */
int cible = 0; /* valeur à rechercher */
int position = -1; /* position de la valeur */
int nbel = 0; /* dimension */
int i = 0; /* indice courant */
int inf, milieu, sup; /* limites du champ de recherche */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &nbel );
for ( i = 0; i < nbel; i++ )
{
printf("Element %d : ", i);
scanf("%d", &vec[i]);
}
printf("Cible a rechercher : ");
scanf("%d", &cible );
/* Affichage du tableau */
printf("Tableau donne : \n");
for ( i = 0; i < nbel; i++ )
printf("%d ", vec[i]);
printf("\n");
/* Initialisation des limites du domaine de recherche */
inf = 1;
sup = nbel;
/* Recherche de la position de la valeur */
position = -1;
while (( inf <= sup ) && ( position == -1 ))
{
milieu =( inf + sup ) / 2;
if (cible < vec[milieu])
sup = milieu-1;
else
if (cible > vec[milieu])
sup = milieu + 1;
else
position = milieu;
}
/* Edition du résultat */
if ( position == -1 )
printf("La cible n'est pas presente\n");
else
printf("La valeur %d se trouve a la position %d. \n",
cible, position + 1);
return 0;
} |
Partager