Prog_dichotomique en c
Résolu/Fermé
tarik
-
30 juin 2009 à 19:33
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 6 juil. 2009 à 11:28
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 6 juil. 2009 à 11:28
9 réponses
petite erreur voila ton code qui marche
#include<stdio.h>
int main()
{
int elem;
int borneinf=0;
int bornesup=13;
int m=0;
int trouve;
int t[] ={15,20,23,24,25,26,30,45,55,66,67,68,77};
elem=45;
trouve=0;
printf("inf=%d sup=%d\n",borneinf,bornesup);
while((borneinf <= bornesup) && (trouve==0))
{
int m=(borneinf+bornesup) / 2 ;
if(t[m]==elem)
{trouve=1;
printf("elem se trouve à la %d ème position\n",m+1);
}
else
{
if(t[m] > elem)
bornesup=m-1;
else
borneinf=m+1;
}
}
}
t'avais oublier des accolades apres ton if(t[m]==elem) car tu as 2 instructions qui suivent...
Et puis dans l'algo tu avais inversé à la fin. Aussi il faut renommer tes inf et sup parce que g remarqué qu'il avé des valeurs pour elles.
Voila ++
#include<stdio.h>
int main()
{
int elem;
int borneinf=0;
int bornesup=13;
int m=0;
int trouve;
int t[] ={15,20,23,24,25,26,30,45,55,66,67,68,77};
elem=45;
trouve=0;
printf("inf=%d sup=%d\n",borneinf,bornesup);
while((borneinf <= bornesup) && (trouve==0))
{
int m=(borneinf+bornesup) / 2 ;
if(t[m]==elem)
{trouve=1;
printf("elem se trouve à la %d ème position\n",m+1);
}
else
{
if(t[m] > elem)
bornesup=m-1;
else
borneinf=m+1;
}
}
}
t'avais oublier des accolades apres ton if(t[m]==elem) car tu as 2 instructions qui suivent...
Et puis dans l'algo tu avais inversé à la fin. Aussi il faut renommer tes inf et sup parce que g remarqué qu'il avé des valeurs pour elles.
Voila ++
Bonjour
Je ne connais ni gcc nio gbd, mais tu as visiblement un problème d'algorithme. Quel que soit le résultat de la comparaison < ou > , c'est toujours la borne inf que tu modifies, et toujours de la même manière. Pas logique.
Je ne connais ni gcc nio gbd, mais tu as visiblement un problème d'algorithme. Quel que soit le résultat de la comparaison < ou > , c'est toujours la borne inf que tu modifies, et toujours de la même manière. Pas logique.
#include<stdio.h>
int main()
{
int elem;
int inf;
int sup;
int m=0;
int trouve;
int t[] ={15,20,23,24,25,26,30,45,55,66,67,68,77};
elem=23;
inf =0; sup=13;
trouve=0;
while((inf<=sup) && (trouve==0))
{
m=(inf+sup) / 2 ;
if(t[m]==elem) trouve=1;
printf("elem se trouve à la %d ème position\n",m);
else{
if(t[m] > elem)
inf=m+1;
else
sup=m-1;
}
}
}
int main()
{
int elem;
int inf;
int sup;
int m=0;
int trouve;
int t[] ={15,20,23,24,25,26,30,45,55,66,67,68,77};
elem=23;
inf =0; sup=13;
trouve=0;
while((inf<=sup) && (trouve==0))
{
m=(inf+sup) / 2 ;
if(t[m]==elem) trouve=1;
printf("elem se trouve à la %d ème position\n",m);
else{
if(t[m] > elem)
inf=m+1;
else
sup=m-1;
}
}
}
Dsl de te dire ça mais ta un probleme d'algorythme derriere ton probleme, j'ai corrigé certain problemes de code mais meme apres ça, le resultat n'est pas la pour te dire voila les sequences donné pour m et t[m]
inf=0 sup=13
m=6 t[m]=30
m=10 t[m]=67
m=12 t[m]=77
m=13 t[m]=0 .......
corrige ton algo
inf=0 sup=13
m=6 t[m]=30
m=10 t[m]=67
m=12 t[m]=77
m=13 t[m]=0 .......
corrige ton algo
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
1 juil. 2009 à 17:46
1 juil. 2009 à 17:46
merci beaucoup, je vais m'appliquer avec la version récursive
nord82
Messages postés
7
Date d'inscription
mercredi 22 avril 2009
Statut
Membre
Dernière intervention
2 juillet 2009
2
1 juil. 2009 à 17:52
1 juil. 2009 à 17:52
slt tarik je peux te poser une question
nord82
Messages postés
7
Date d'inscription
mercredi 22 avril 2009
Statut
Membre
Dernière intervention
2 juillet 2009
2
6 juil. 2009 à 11:23
6 juil. 2009 à 11:23
je veux savoir svp si vous maitrisez le VB parceque je suis coincé dans un truc sous access
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 juil. 2009 à 11:28
6 juil. 2009 à 11:28
Salut,
Merci d'ouvrir un nouveau thread pour ton problème vb
Merci d'ouvrir un nouveau thread pour ton problème vb