Bonjour
Vous constaterez que y'a des fonctions qui ont été traite dans le fichier "solv.cpp" et d'autres pas(pas encore nécessaire).....J'arrive pas à cerner le problème des erreurs que visual-studio m'affiche,j'ai réfléchi pendant un bon bout de temps ,mais rien trouvé
Voici tous les fichiers du projet que j'ai crée:
******SOLVE.H*****
*****SOLV.CPP*****
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 #ifndef DEF_SOLVEUR #define DEF_SOLVEUR #include <string> class solveur { private: string *popInit; string *newPop; double *note; public: solveur(string *pop, double *valeur); ~solveur(); void roulette(); //Sera appelée dans la fonction sélection string *selection(double *not); //Renvoie les individus qui ont été sélectionnés avec la roulette par rapport à leurs notes void setSelected(string *pop); // Remplie le tableau de la new pop sélectionnée void croisement(string a,string b); void mutation(string a); void evolution(); // Cette fonction fera appel aux méthodes croisement() et mutation() void setNewPop(); // Cette fonction sera appellée à la fin de l'évolution pour l'obtention d'une new pop bool reEvaluation(); void reWrite(); // On réécrit les résultats dans un fichier texte pour avant de les repasser au module Evaluation void selectRandom(); // Sélectionne aléatoirement par rapport au pourcentage }; #endif
*********MON MAIN********
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 #include <iostream> using namespace std; #include <string> #include "solve.h" /*long teste(double p) { double prob; prob=(rand()/(double)RAND_MAX); return( (prob<= p) ? 1 : 0); }*/ solveur::solveur(string *pop, double *valeur) { int p; p=(int)(sizeof popInit / sizeof *popInit); pop=new string[p]; valeur=new double[p]; for(int i=0;i<p; i++) { popInit[i]=pop[i]; note[i]=valeur[i]; } } void solveur::roulette() { int inc=0,t,i=0; double S=0.0; t=(int) (sizeof popInit/ sizeof *popInit); for (i = 0; i <t; i++) { //indice[i]=i; S=S+note[i]; } double r; r=S*(rand()/(double)RAND_MAX ); t=(int) (sizeof popInit/ sizeof *popInit); for (int j = 0; j<t; j++) { for (i = 0; i <t; i++) { i=rand()%t; if (note[i]>r) newPop[j]=popInit[i]; } } for (i = 0; i <t; i++) { cout<<""<<newPop[i]<<endl; } } string* solveur::selection(double *not) { int t; t=(int) (sizeof popInit/ sizeof *popInit); string *popselect(0); for (int i = 0; i <t; i++) { note[i]=not[i]; } roulette(); for (int i = 0; i <t; i++) { note[i]=not[i]; popselect[i]=newPop[i]; } return popselect; } void solveur::setSelected(string *pop) { int t; t=(int) (sizeof popInit/ sizeof *popInit); for (int i = 0; i <t; i++) { popInit[i]=pop[i]; } roulette(); } void croisement(string a, string b) { // taille de popInit:je sais pas pourquoi il marque cette erreur,alors qu'il est accepté ci-dessus! string pc1, pc2; long k, i; int t; t=(int) (sizeof popInit/ sizeof *popInit); k=(rand()%4); for (i = 0; i <t; i++) {pc1[i] = a[i];pc2[i] =b[i];} for (i =k; i<t; i++) {pc1[i]= b[i];pc2[i] = a[i];} for (i =k; i<t; i++) { a[i]=pc1[i]; b[i]=pc2[i]; } }
voici les erreurs que ça affiche après la compilation:
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 #include <iostream> #include "solve.h" using namespace std; #include <ctime> #include <string> using namespace std; void main() { string a="111111"; string b="1000101"; croisement(a,b); system("pause"); }
> solv.cpp
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2065: 'popInit' : identificateur non déclaré
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2070: ''unknown-type'' : opérande sizeof non conforme
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2065: 'popInit' : identificateur non déclaré
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2070: ''unknown-type'' : opérande sizeof non conforme
1> main1.cpp
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(19): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): warning C4183: 'selection' : type de retour manquant ; fonction membre retournant 'int' prise par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(23): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(24): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(25): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\main1.cpp(13): error C3861: 'croisement' : identificateur introuvable
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\main1.cpp(22): fatal error C1071: fin de fichier inattendue dans un commentaire
1> Génération de code en cours...
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
Partager