Problème de recherche dichotomique
man r.
Messages postés
12
Statut
Membre
-
bor3iIsGood Messages postés 84 Statut Membre -
bor3iIsGood Messages postés 84 Statut Membre -
Salut, alors, le code est le suivant :
Ma question est la suivante, quand je change pos=-1 en une autre valeur que -1, ça marche pas comme il faut, j'aimerai bel et bien que quelqu'un m'éclaircisse la chose, merci d'avance :) !
#include<stdio.h>
main()
{
int tb[55],n,i,val,pos=-1,max,min,moy;
printf("Entrer la dimension du tableau");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("tb[%d]",i);
scanf("%d",&tb[i]);
}
printf("Saisir une valeur a rechercher");
scanf("%d",&val);
max=n;
min=0;
while((max>=min)&&(pos==-1))
{
moy=(max+min)/2;
if(val<tb[moy])
{
max=moy-1;
}
else if(val>tb[moy])
{
min=moy+1;
}
else
pos=moy;
}
if(pos==-1)
printf("la valeur se trouve pas sur le tableau");
else
printf("%d se trouve dans %d",val,pos);
getchar();
getchar();
return 0;
}
Ma question est la suivante, quand je change pos=-1 en une autre valeur que -1, ça marche pas comme il faut, j'aimerai bel et bien que quelqu'un m'éclaircisse la chose, merci d'avance :) !
A voir également:
- Recherche dichotomique c
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche image - Guide
- Je recherche une chanson - Guide
- Problème recherche de chaine tv thomson - Forum Téléviseurs
3 réponses
euh bien tout simplement tab[-1] n'existe pas mais on ne connais pas la taille réelle du tabeleau et puis pos signifie la case la ou la valeur existe ca revient à dire qu'on cherche à la base tab[pos] ! et si pos > 0 donc tab[pos] existe du coup on aura tjr la mm réponce "la valeur existe ds le tabelau" !
si j'ai bien saisit il faut déjà que le tableau soit dans l'ordre croissant donc déjà il faut que ajouter un test lors du remplissage du tableau et tu aura
do {
printf("tb[%d]",i);
scanf("%d",&tb[i]);
} while ( tb[i] < tb[i - 1])
en plus le concernant le pos ne peut pas positive puisque on ne sait pas la longueur du tableau et ca peut créer un conflit avec une des valeurs du tableau.
dernièrement la variable my est de type entier donc fallait utiliser moy = (max + min ) div 2;
j'èspere que je t'ai aider un peux
do {
printf("tb[%d]",i);
scanf("%d",&tb[i]);
} while ( tb[i] < tb[i - 1])
en plus le concernant le pos ne peut pas positive puisque on ne sait pas la longueur du tableau et ca peut créer un conflit avec une des valeurs du tableau.
dernièrement la variable my est de type entier donc fallait utiliser moy = (max + min ) div 2;
j'èspere que je t'ai aider un peux