Erreur compilation : iostream, algorithm, etc
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:
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:
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:
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:
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... |