Bonjour,
En plus, il me semble qu'elle retourne toujours FAUX sauf dans le cas où on trouve l'élément au premier appel.
Version imprimable
Bonjour,
En plus, il me semble qu'elle retourne toujours FAUX sauf dans le cas où on trouve l'élément au premier appel.
Ouai excusez moi, il faut les return, j'ai confondu avec autre chose, ça fait longtemps.. (En plus c'est une erreur que j'ai déjà faite...)
j'ai fait un code là ça marche ;
pour la coordonée de x, je savais pas que vous la vouliez. Mais il suffit de mettre un printf de milieu dans la première boucle. Je l'ai rajouté.Code:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 typedef enum bool {VRAI=1, FAUX=0} booleen; int rechDich(int x, int t[N], int debut, int fin) { int milieu; milieu=(debut+fin)/2; if(t[milieu]==x){ printf("coordonnee : %d presence (1 ou 0) : ", milieu+1); return VRAI; } else { if (x<t[milieu]) { return rechDich(x, t, debut, milieu-1); } else { if(x>t[milieu]) { return rechDich(x, t, milieu+1, fin); } } } return FAUX; } void swap(int tab[], int i, int j) { int tmp = tab[i]; tab[i] = tab[j]; tab[j] = tmp; } void afficher_tableau(int tab[], int taille) { int i; // variables locales printf("\n"); for (i=0;i<taille;i++) { printf ("%d - ",tab[i]); } printf("\n\n"); } void tri_bulle(int tab[], int taille) { int i, j, tmp; // variables locales for(i=taille;i>0;i--) // décrémentation { for(j=1;j<i;j++) { if (tab[j-1]>tab[j]) { swap(tab, j-1, j); } } } } int main () { int i, val, tab[N], deb=0, fin=N-1; srand (time(NULL)); for(i=0; i<N; i++) { tab[i]=rand()%100; printf(" %d -", tab[i]); } tri_bulle(tab, N); afficher_tableau(tab, N); printf("\nquelle valeur tu veux?\n"); scanf("%d", &val); printf("%d \n", rechDich(val, tab, deb, fin)); system("PAUSE"); return 0; }
(désolé si le code est bordélique, mal présenté, mal indenté, etc.. pas trop eu le temps, l'important c'est qu'il marche)