j'ai fait un vecteur ordre croissant avec des valeurs que le user entre ça marche mais si l'user entre une cible à rechercher pas présente il y a rien qui se passe
ç'est àdire que normalement il faudrait afficher la cible n'est pas presente.
Merci de me dire ce qui va pas.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
}