Bonjour,
J'ai arpenté un peu le forum pour avoir une réponse à ma question mais je n'ai rien trouvé, ceci dit si mon topic n'a pas lieu d'être ou se trouve être un doublon signalez-le moi et je le supprimerai.
Je cherche à faire un programme en C capable de générer un nombre aléatoire et de le trouver ensuite par une méthode de dichotomie. J'ai tourné comme j'ai pu ma boucle mais elle tourne à l'infini et je n'arrive pas à mettre le doigt sur le problème. J'ai rajouté au passage un compteur de tour pour savoir combien d'itérations ont été nécessaires au programme pour trouvé le bon nombre.
Je ne sais pas si le problème est dans l'algorithme ou dans ma traduction en code.
Je vous colle en dessous mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(int argc, char *argv[]) { int A = 1 , B = 100 , R = 2 , C = 0 , nombre = 0 , coup = 1; // A et B sont là pour définir où se trouve le nombre donné aléatoirement, C est là pour pouvoir avancer dans la dichotomie, nombre sera le nombre aléatoir et coup pour compter le nombre de boucles srand(time(NULL)); nombre = (rand()% (B-A+1)) + A; printf("\n\n%d\n\n", nombre) ; printf("Trouvez le bon nombre entre 1 et 100\n") ; while(C != nombre) { coup++ ; C = (A+B)/2 ; printf("Proposition = %d\n" , C) ; if (C<nombre) printf("C'est plus !\n") ; B = C - 1; if (C>nombre) printf("c'est moins !\n") ; A = C + 1; } printf("\n\nGG, le bon nombre etait bien %d\nVous avez réussi en %d essais\n\n", C, coup); return 0; }
Si quelqu'un est capable de me donner un piste ou même de déceler mon erreur je suis preneur !
Merci beaucoup.
B.
Partager