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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
#include<stdio.h>
#include<string.h>
/* recherche dichotomoque et tri par insertion /*/
void main()
{ void tri_insertion(char T[10][256] , int N);
int recherche_dico(char *T,char x,int N);
char T[10][256];
int i,N,res;
char x;
puts(" Donner la dimension de tableau : ");
scanf("%i",&N);
for(i=0;i<N;i++)
{ printf(" Personne %i = ",i+1);
gets(T[i]);
}
puts("\t\a\a donner le nom a chercher svp : ");
scanf("%s",x);
puts("\n");
tri_insertion(T,N);
res=recherche_dico(T,x,N);
if(res==-1)
puts( "\a\a\t l'eslement n'existe pas");
else
printf("\t l'element %i se trouve a la position %i \n\n",x,res);
}
void tri_insertion(char *T , int N)
{int i,j,h;
char AIDE[10];
for(i=1;i<N;i++)
for(j=0;j<i;j++)
if(strcmp(*(T+j),*(T+i))<0)
{
strcpy(AIDE,T[i]);
for(h=i;h>=j;h--)
strcpy(T[h],T[h-1]);
strcpy(T[j],AIDE);
}
}
int recherche_dico(char T[10][256],char x,int N)
{ int milieu,SUP,INF,POS;
SUP=N-1;
INF=0;
POS=-1;
while((SUP>=INF) && (POS==-1))
{
milieu=(SUP+INF)/2;
if(strcmp(x,T[milieu])<0)
SUP=milieu-1;
else
{if(strcmp(x,T[milieu])>0);
INF=milieu+1;
else
POS=milieu;
}
}
return(POS);
} |
Partager