Bonjour je vous contacte car j'ai un petit soucis . Voilà j'aimerai faire un programme qui remplit aléatoirement un tableau sans qu'une valeur soit répétée.
Je créer une méthode que j'appelle a1 avec en paramètre le pointeur d'un tableau et une valeur n , qui sera la taille de celui-ci . De plus je créer 3 autres méthodes: une qui initialise un tableau, une autre qui recherche si une valeur est présente dans celui-ci, et une qui "supprime" la valeur passée en paramètre en mettant -1 à la place.
A l'éxécution de mon programme aucunes erreurs , mais dans la console qui s'ouvre j'ai ce message : Segmentation fault ( core dumped ) .
J'ai cherche sur internet ce que cela signifiait, c'est un problème soit de pointeur qui pointe un objet non valide ou un index qui va plus loin que le tableau. Cependant j'ai fait quelques modifications et toujours le même soucis .
En espérant que qulqu'un puisse m'aider .
C'est mon premier message sur le forum, merci de m'indiquer si j'ai oublié des choses ou autres .
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #include<stdlib.h> #include<stdio.h> #include<time.h> // Méthode qui initialise le tableau avec les valeurs : void InitTab( int* Tab , int Taille ) { int i; for(i=0 ; i<Taille ; i++) Tab[i]=i; } // Méthode qui met à -1 la cellule dont la valeur est celle passée en paramètre : void SupCell(int* Tab , int Taille , int Valeur ) { int i; for(i=0 ; i<Taille ; i++) { if(Tab[i] == Valeur) Tab[i]=-1; } } // Méthode qui recherche si une valeau est dans le tableau, et retourne 1 si l'entier est trouvé : int SearchVal(int* Tab , int Taille , int Valeur ) { int i; int res; for(i=0 ; i<Taille ; i++) { if(Tab[i] == Valeur) return 1; } } void a1(int* t , int n) { int i; srand(time(NULL)); // initialise la fonction srand int Tab; int aleat; int x; InitTab(&Tab, n ); for( i=0 ; i<n ; i++) { aleat=rand()%n; x=SearchVal(&Tab,n,aleat); while(x!=1) { aleat=rand()%n; x=SearchVal(&Tab,n,aleat); } t[i]=aleat; SupCell(&Tab,n,aleat); } } int main() { int n=5; int i; int Val=3; int t[n]; a1(&t,n); for(i=0; i<n;i++) printf("%d | ",t[i]); }
Merci d'avoir lu mon message , bonne journée .
Partager