Bonjour chers amis, j'ai un problème pour faire 2 fonctions récursives dont l'une cherche un élément dans un tableau et renvoie vrai s'il est trouvé ou faux sinon et l'autre qui permet de renverser un tableau. J'ai a chaque fois des erreurs de segmentation. Voici mes codes:
Fonction estPresent
Fonction inverserTableau:
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
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 #include <stdio.h> #include <stdlib.h> int N, i, element; void saisirTableau(int T[], int N){ for (i = 0; i < N; i++) { printf("Donnez le nombre %d: ", i+1); scanf("%d", &T[i]); } } void afficherTableau(int T[], int N){ //int i; printf("\n\nLes %d nombres saisis sont: \n\n", N); for (i = 0; i < N; i++) { printf("%d, ", T[i]); } } int estPresent(int element, int T[], int N){ typedef enum BOOL {false, true} bool; bool absent=false, present=true; int indice=T[0]; if(indice==0) return absent; if(T[N]==element) return present; indice++; return estPresent(element,T,N-1); } int main() { int T[N]; int element; printf("Combien de nombres voulez vous saisir? \n "); scanf("%d", &N); saisirTableau(T, N); afficherTableau(T, N); printf("\n\nDonnez l'élément que vous voulez rechercher dans le tableau: \n"); scanf("%d", &element); estPresent(element,T,N); return 0; }
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
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 #include <stdio.h> #include <stdlib.h> int N, i; int T[15]; int *debut, *fin; void saisirTableau(int T[], int N){ for (i = 0; i < N; i++) { printf("Donnez le nombre %d: ", i+1); scanf("%d", &T[i]); } } void afficherTableau(int T[], int N){ printf("Les %d nombres saisis sont: ", N); for (i = 0; i < N; i++) { printf("%d, ", T[i]); } } void inverserTableau(int T[], int N, int *debut, int *fin;) { int tampon; if (*debut < *fin) { tampon=T[*debut]; T[*debut]=T[*fin]; T[*fin]=tampon; inverserTableau(T, N, *debut+1, *fin-1); } //} } int main() { printf("Combien de nombres voulez vous saisir? \n "); scanf("%d", &N); saisirTableau(T, N); afficherTableau(T, N); printf("\n\nAprès inversion "); inverserTableau(T, N, &debut, &fin); afficherTableau(T, N); return 0; }
Partager