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:

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.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
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
}
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
#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
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
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...