Bonjour,
alors voila mon problème. J'ai un fichier Analyse.cpp, qui doit permettre d'analyser la phrase rentrée par l'utilisateur en ligne de commande, et de le guider si jamais il a fait des erreurs.
Le but étant de manipuler des formes géométriques.
Mon programme marchait très bien, jusqu'a ce que je modifie quelque détails et la => une série d'erreurs, que je trouve très bizarre. Si jamais quelqu'un a une idée de la source de l'erreur, je suis preneur !
Merci d'avance
Main.cpp:
Analyse.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
36
37
38
39
40
41
42 #include <sstream> #include <string> #include <iostream> #include <limits> #include "Analyse.h" using namespace std; Analyse analiseur; int main() { string entree = ""; string::size_type pos = 0; vector<string> tableau; // tableau permettant de recuperer chaque mot cout << "Bonjour, quelle operation voulez vous effectuer ?" << endl; getline(cin, entree); // Récupération de la ligne complete ( pas de coupure aux espaces ) cout << "Analyse de la chaine ..." << entree << endl; /* création d'un flux pour séparer chaque mot */ stringstream ss; /* remplissons le flux avec la chaine récupérée */ ss<<entree; /* déclarons une chaine temporaire pour récupérer les mots */ string temp; /* tant que nous récupérons une chaine de caractères au départ du flux */ while (ss>>temp) { /* nous l'insérons dans notre tableau */ analiseur.Transfo_minuscule(temp); // Mettre tout en minuscule tableau.push_back(temp); cout<<tableau.back()<<endl; } if (tableau.size() > 0) analiseur.AnalyserAction(tableau); else cout << "Saisie vide : les actions possibles sont 'CreerFigure', 'supprimerFigure', 'deplacerFigure', 'supprimerGroupe'" << endl; cout << "Appuyez sur Enter pour continuer..."; // portable cin.ignore( numeric_limits<streamsize>::max(), '\n' ); }
Analyse.h
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
101
102
103
104
105
106
107
108
109
110
111 #include "Analyse.h" #include <iostream> #include <vector> #include <string> #include <cctype> #include <algorithm> using namespace std; bool erreur = false; // Permet de detecter s'il y a une erreur dans la ligne de commande Analyse::Analyse() { } struct mon_tolower { char operator()(char c) const { return tolower(static_cast<unsigned char>(c)); } }; // Méthode permettant de mettre un string en minuscule void Analyse::Transfo_minuscule(string &chaine) { transform(chaine.begin(), chaine.end(), chaine.begin(), mon_tolower()); } void Analyse::AnalyserAction(vector<string> &tableau) { cout << "Debut de l'analyse ..." << endl; if (tableau[0] == "creerfigure") { cout << "Creation de figure ..." << endl; TesterNomFigure(tableau); } else if (tableau[0] == "creergroupe") cout << "creation de groupe ... " << endl; else if (tableau[0] == "supprimer") cout << "Suppresion ..." << endl; else if (tableau[0] == "deplacerfigure") cout << "Deplacement de figure ..." << endl; else cout << "Erreur de saisie. Les actions possibles sont 'CreerFigure', 'supprimerFigure', 'deplacerFigure', 'supprimerGroupe'" << endl; } void Analyse::TesterNomFigure(vector<string> &tableau) { if (tableau[1] == "carre" || tableau[1] == "rectangle" || tableau[1] == "triangle" || tableau[1] == "polygone" || tableau[1] == "cercle"){ cout << "Vous souhaitez donc creer un " << tableau[1] << endl; TesterCouleurFigure(tableau); } else { setErreur(); cout << "Nom de la figure non valide :" << endl; cout << "Pour creer une figure, la syntaxe est : 'CreerFigure TypeDeFigure NomDeLaFigure CouleurDeLaFigure Coordonnee(s)'" << endl; cout << "Ce programme vous permet de creer des carres, des rectangles, des triangles, des cercles et tout type de polygone" << endl; } } void Analyse::TesterCouleurFigure(vector<string> &tableau) { if (tableau[3] == "jaune" || tableau[3] == "noir" || tableau[3] == "vert" || tableau[3] == "bleu"){ // || "triangle" || "polygone" || "rectangle") cout << "Vous souhaitez donc creer un " << tableau[1] << " de couleur " << tableau[3] << endl; cout << tableau.size() << endl; TesterCoordonneeFigure(tableau); } else { setErreur(); cout << "Couleur de la figure non valide :" << endl; cout << "Pour creer une figure, la syntaxe est : 'CreerFigure TypeDeFigure NomDeLaFigure CouleurDeLaFigure Coordonnee(s)'" << endl; cout << "Couleurs possibles : jaune, noir, vert, bleu" << endl; } } void Analyse::TesterCoordonneeFigure(vector<string> &tableau){ if (tableau[1] == "polygone") { if (tableau.size() < 10) { cout << "Coordonnes manquant : un polygone est compose de 3 points minimums" << endl; } else cout << "Faire verification si coordonnes sont des ints. Si oui, la creation du polygone peut commencer" << endl; } else { if (tableau.size() != 6) { cout << "Erreurs indication coordonnes. Veuillez indiquer le coordonne du centre du cercle, ou du point inferieur a gauche de votre figure si c'est un carre, un rectangle ou un triangle" << endl; } else cout << "Apres avoir verifie que coordonnes sont des ints, on peut commencer la creation de la figure" << endl; } } void Analyse::setErreur() { erreur = true; } void Analyse::AnalyseSuppression(vector<string> &tableau) { if (tableau.size() != 2){ cout << "Erreur dans la suppression. Pour supprimer : 'Supprimer' 'NomDeLobjet'" endl; setErreur(); } else cout << "Si figure existe ( a verifier ) suppression effective" << endl;// Verifier l'existence de l'objet avant de lancer la suppression } Analyse::~Analyse() { //ne rien faire }
Erreurs obtenues
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 #ifndef _ANALYSE_ #define _ANALYSE #include <vector> #include <string> class Analyse { private: public: //constructeur Analyse(); //destructeur ~Analyse(); void Transfo_minuscule(std::string &chaine); void AnalyserAction(std::vector<std::string> &tableau); void TesterNomFigure(std::vector<std::string> &tableau); void TesterCouleurFigure(std::vector<std::string> &tableau); void TesterCoordonneeFigure(std::vector<std::string> &tableau); void AnalyseSuppression(std::vector<std::string> &tableau){ void setErreur(); }; #endif
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 c:\program files\microsoft visual studio 9.0\vc\include\iostream(12) : error C2059: erreur de syntaxe*: 'namespace' c:\program files\microsoft visual studio 9.0\vc\include\iostream(12) : error C2334: jetons inattendus avant '{'*; corps apparent de la fonction ignoré c:\program files\microsoft visual studio 9.0\vc\include\cctype(19) : error C2059: erreur de syntaxe*: 'namespace' c:\program files\microsoft visual studio 9.0\vc\include\cctype(19) : error C2334: jetons inattendus avant '{'*; corps apparent de la fonction ignoré c:\program files\microsoft visual studio 9.0\vc\include\algorithm(14) : error C2059: erreur de syntaxe*: 'namespace' c:\program files\microsoft visual studio 9.0\vc\include\algorithm(14) : error C2334: jetons inattendus avant '{'*; corps apparent de la fonction ignoré c:\program files\microsoft visual studio 9.0\vc\include\algorithm(4627) : error C2059: erreur de syntaxe*: 'namespace' c:\program files\microsoft visual studio 9.0\vc\include\algorithm(4627) : error C2334: jetons inattendus avant '{'*; corps apparent de la fonction ignoré y:\documents\projgeo\analyse.cpp(8) : error C2059: erreur de syntaxe*: 'namespace' y:\documents\projgeo\analyse.cpp(8) : error C2238: jetons inattendus avant ';' y:\documents\projgeo\analyse.cpp(9) : error C2864: 'Analyse::erreur'*: seules les données membres static const intégrales peuvent être initialisées dans une classe y:\documents\projgeo\analyse.cpp(12) : error C2535: 'Analyse::Analyse(void)'*: fonction membre déjà définie ou déclarée y:\documents\projgeo\analyse.h(15)*: voir la déclaration de 'Analyse::Analyse' y:\documents\projgeo\analyse.cpp(24) : error C2061: erreur de syntaxe*: identificateur 'string' y:\documents\projgeo\analyse.cpp(30) : error C2061: erreur de syntaxe*: identificateur 'vector' y:\documents\projgeo\analyse.cpp(109) : error C2535: 'Analyse::~Analyse(void)'*: fonction membre déjà définie ou déclarée y:\documents\projgeo\analyse.h(18)*: voir la déclaration de 'Analyse::~Analyse' y:\documents\projgeo\analyse.cpp(112) : fatal error C1075: fin de fichier rencontrée avant que l'élément accolade '{' gauche de 'y:\documents\projgeo\analyse.h(9)' soit équilibré main.cpp y:\documents\projgeo\main.cpp(7) : error C2059: erreur de syntaxe*: 'namespace' y:\documents\projgeo\main.cpp(7) : error C2238: jetons inattendus avant ';' y:\documents\projgeo\main.cpp(9) : error C2460: 'Analyse::analiseur'*: utilise 'Analyse', en cours de définition y:\documents\projgeo\analyse.h(9)*: voir la déclaration de 'Analyse' y:\documents\projgeo\main.cpp(45) : fatal error C1075: fin de fichier rencontrée avant que l'élément accolade '{' gauche de 'y:\documents\projgeo\analyse.h(9)' soit équilibré Génération de code en cours...
Partager