#include enum {MAXDONNEES=20}; int tab[MAXDONNEES]; int lire(void); void trier(int); void afficher(int); void rechercher(int,int); void main() { int NbrDonnees,cle; NbrDonnees=lire(); if (NbrDonnees>0) { trier(NbrDonnees); afficher( NbrDonnees); printf("\nIndiquez la donnée que vous voulez " "rechercher dans le tableau trie : "); scanf("%d",&cle); while (cle!=-1) { rechercher(NbrDonnees,cle); printf("\nIndiquez la donnee que vous voulez " "rechercher dans le tableau trié\n" "(taper -1 si vous n'avez plus de donnee à rechercher) : "); scanf("%d",&cle); } } } int lire() { int donnee,nbr=0; char ecrit=0; /*Sert à ecrire une seule fois le message de depassement, les entiers surnumeraires etant néanmoins lus pour etre purges*/ printf("\nEntrez les donnees entieres positives, sur une ligne, " "separees par des blancs.\nTerminer la saisie en tapant -1.\n" "Vous avez droit à au plus %d valeurs\n",MAXDONNEES); scanf("%d",&donnee); while(donnee!=-1) { if((nbr==MAXDONNEES)&&(!ecrit)) { printf("\nvous avez donné plus de %d entiers, seuls les %d " "premiers seront pris en compte\n",MAXDONNEES,MAXDONNEES); ecrit=1; } else if(nbr=0)&&cletab[nombre-1]) { printf("votre donnée est supérieure à la plus grande donnée du tableau\n"); return; } if (cle==tab[nombre-1]) { printf("votre donnée est dans le tableau à la place %d\n",nombre); return; } gauche=0; droite=nombre-1; /*Les indices gauche et droite seront gérés de telle sorte que l'on ait toujours : tab[gauche]<=cle