Prob c
caty
-
caty -
caty -
Bonjour,j'ai un prob dans c de la recherche "dichotomique" ben voila ce que jai fait et si qlq 1 pt m aidée et merci ,
#include<stdio.h>
#include<conio.h>
#define n 6
void main ()
{
int t[n],k,kk,S;
int sup,inf,x,test;
t[k]=(1,2,3,4,5,6);
sup=6;
inf=1;
scanf("%d",&x);
test=0;
while((test==0)&&(inf<=sup))
{
kk=(inf+sup)/2;
printf("%d\n",kk);
if (x>t[kk])
{ (inf=kk+1);
printf("%d\n",inf);
}
if(x<t[kk])
{(sup=kk-1);
printf("%d\n",sup);
}
else
{
test=1;
printf("%d\n",test);
}
}
getche();
}
#include<stdio.h>
#include<conio.h>
#define n 6
void main ()
{
int t[n],k,kk,S;
int sup,inf,x,test;
t[k]=(1,2,3,4,5,6);
sup=6;
inf=1;
scanf("%d",&x);
test=0;
while((test==0)&&(inf<=sup))
{
kk=(inf+sup)/2;
printf("%d\n",kk);
if (x>t[kk])
{ (inf=kk+1);
printf("%d\n",inf);
}
if(x<t[kk])
{(sup=kk-1);
printf("%d\n",sup);
}
else
{
test=1;
printf("%d\n",test);
}
}
getche();
}
Je t'aiderais bien mais je ne sais pas qu'est-ce qu'un "bon" ou un "mauvais" résultat si je teste ton code...
Cependant, ton if if else me parait suspect.
En gros, avec ton code là comme il est :
si x > t[kk]
ça fait met kk+1 dans inf
puis ça affiche inf
puis ça met 1 dans test
puis ça affiche 1 (puisque ça affiche test qui vaut 1).
si x == t[kk]
ça met 1 dans test
puis ça affiche 1 (puisque ça affiche test qui vaut 1).
si x < t[kk]
ça fait met kk-1 dans sup
puis ça affiche sup
Est-ce bien ce que tu veux ? (je n'ai que rajouté les commentaires..)
J'ai remarqué autre chose que je n'avais pas vu hier soir dans ton code.
Tu ne peux pas initialiser ton tableau de la manière que tu as faite.
Si tu veux qu'il contienne tous les chiffres de 1 à n, tu peux le rentrer en dur dans le code lors de la déclaration de ta variable :
Soit tu fais une petite boucle for() :
Sinon pour le fonctionnement, ce que je trouvais suspect l'était bien. Tu ne peux pas faire un else de 2 if à la fois.
Donc si tu veux tester > < et ==, soit tu les imbriques (ce qui n'est pas le plus joli parfois mais qui est le plus pratique), soit tu ne mets pas de else et tu mets le if() avec la condition voulue (le gros inconvénient de faire cela est que si dans la if() tu modifies une valeur qui te rend vrai la if() suivante qui te sert de else, les 2 peuvent être vraies !).
Et puis pour finir sur une pas erreur, tu déclares un S que tu n'utilises pas ;-).
Voilà donc comment je l'aurais rectifié :
Au passage, j'ai rajouté dans les printf() de quoi il s'agit, parce que pendant l'éxécution ce n'est pas forcément évident de savoir si un "4" était l'affichage du k, du inf, ou du sup.