Problème de recherche dichotomique
man r.
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
bor3iIsGood Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
bor3iIsGood Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
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 photo - Guide
- Je recherche une chanson - Guide
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Windows
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