Bonjour à tous,
pour mon premier message ici, je commence par vous demander un avis extérieur.
Je travaille sur un projet de simulation de magasin en C, et bien que le code passe la compilation (entre autres grâce aux conseils trouvés ici), j'obtiens un message "Erreur de segmentation (core dumped)" à l'éxecution.
Mon code :
Je pense que le problème vient du seul tableau que je déclare en statique dans mon algorithme, mais je n'arrive pas à le transformer en un tableau dynamique.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #define MAXP 5 #define MAXC 50 //numero d'id, tableau entier chariot struct Client { int id; int *chariot; }; typedef struct Client Client; double Moyenne (int* moyenne) { double somme; for (int i=0; i<MAXP; i=i++) { somme+=(double)*(moyenne+i); } somme/=MAXP; return somme; } double Quadratique(int* moyenne) { double somme; for (int i=0; i<MAXP; i=i++) { somme+=(double)((*(moyenne+i))*(*(moyenne+i))); } somme/=MAXP; return sqrt(somme); } double Cube(int* moyenne) { double somme; for (int i=0; i<MAXP; i=i++) { somme+=(double)((*(moyenne+i))*(*(moyenne+i))*(*(moyenne+i))); } return somme; } int main() { clock_t temps; int prix, i; Client *p=(Client *) malloc(MAXC*sizeof(struct Client)); srand(time(NULL)); double histo[MAXC][3]; for(i=0;i<MAXC;i++) { Client Cl; Cl.id=i++; Cl.chariot=(int *) malloc(MAXP*sizeof(int)); *(p+i)=Cl; } for(i=0;i<MAXC;i++) { for(int j=0;j<MAXP;j++) { Client tmp; tmp=*(p+i); tmp.chariot[j]=(rand()%49)+1; } } for(i=0;i<MAXC;i++) { Client tmp; tmp=*(p+i); histo[i][0]=Moyenne(tmp.chariot); histo[i][1]=Quadratique(tmp.chariot); histo[i][2]=Cube(tmp.chariot); } free(p); for(i=0;i<MAXC;i++) { printf("Ticket du client %d : %f %f %f",i++,histo[i][0],histo[i][1],histo[i][2]); } printf("Temps total d'execution : %f",(double)temps/CLOCKS_PER_SEC); }
Ai-je trouvé la cause du problème ? Si oui, que puis-je faire pour y remédier ?
Mon algorithme est-il juste bon pour la corbeille ?
Merci d'avance,
Vrashnak
EDIT : je viens de me rendre compte que j'ai posté dans la mauvaise rubrique... Désolé :S
Si un gentil modérateur veut bien déplacer ce sujet...
Partager