diff --git a/exec/tp1 b/exec/tp1 index 4cbea66..8111add 100755 Binary files a/exec/tp1 and b/exec/tp1 differ diff --git a/exec/tp2 b/exec/tp2 new file mode 100755 index 0000000..17ca2ff Binary files /dev/null and b/exec/tp2 differ diff --git a/tp1.cpp b/tp1.cpp index aa28a09..fef50f1 100644 --- a/tp1.cpp +++ b/tp1.cpp @@ -2,31 +2,156 @@ #include #include #include +#include #include "tp1/wordproc.cpp" +#define DICT_FILENAME "tp1/dict" + using namespace std; +string input_word(); +string pickup_word(vector dict); +void append_word(); +void play(string word); + int main(){ /* [0] CONSTANTES =========================================================*/ - const string dict_filename = "tp1/dict"; - ifstream dict_read( dict_filename.c_str() ); - + ifstream dict_r( DICT_FILENAME ); + + /* [0.1] On recupere les mots du dictionnaire + =========================================================*/ + vector dict(0); + string line; + + // On lit toutes les lignes + while( getline( dict_r, line ) ) + dict.push_back( line ); + + + /* [1] MENU D'ACTION + =========================================================*/ + int action(-1); + + do{ + cout << "+-----------------------------------+" << endl; + cout << "+ 1) Jouer (saisie manuelle) +" << endl; + cout << "+ 2) Jouer (mot aleatoire) +" << endl; + cout << "+ 3) Ajouter un mot +" << endl; + cout << "+-----------------------------------+" << endl; + cout << "+ "; + cin >> action; + cout << "+-----------------------------------+" << endl; + + }while( action < 1 || action > 3 ); + + + /* [2] TRAITEMENT DE L'ACTION + =========================================================*/ + switch(action){ + + /* (1) Jeu avec saisie manuelle */ + case 1: + play( input_word() ); + + break; + + /* (2) Jeu avec mot aleatoire */ + case 2: + play( pickup_word(dict) ); + break; + + + /* (3) Saisie d'un nouveau mot dans le dictionnaire */ + case 3: + append_word(); + break; + } + + return 0; +} + + + + + + +/* RENVOIE LA SAISIE UTILISATEUR +* +* @return out Mot saisi par l'utilisateur +* +*/ +string input_word(){ + string out; + cout << "Mot secret: "; + cin >> out; + cin.ignore(); + + return out; +} + + + + +/* RENVOIE UN MOT ALEATOIRE DU DICTIONNAIRE +* +* @dict_r Lecteur sur le dictionnaire +* +* @return out Mot choisi aleatoirement dans le dictionnaire +* +*/ +string pickup_word(vector dict){ + srand(time(0)); + + int index = rand() % dict.size(); + + return dict[index]; +} + + + + +/* AJOUTE UN MOT AU DICTIONNAIRE +* +* @nomParam Description du param +* +* @return nomRetour Description du retour +* +*/ +void append_word(){ + // objet d'ecriture sur le dictionnaire + ofstream dict_w( DICT_FILENAME, ios::app ); + + string newword; + cout << "Nouveau mot: " << endl; + cin >> newword; + cout << endl; + + // on ajoute le mot + dict_w << newword << endl; + + cout << "Mot enregistre!" << endl; +} + + + + + + +/* JOUE AU JEU DU MOT_MYSTERE +* +* @word Mot a deviner +* +*/ +void play(string word){ /* [0] VARIABLES =========================================================*/ - string word; string shuffled; - /* [1] Demande du mot - =========================================================*/ - cout << "Mot secret: "; - cin >> word; - cout << endl; - // On met le mot en majuscules word = toUpperCase(word); @@ -46,6 +171,4 @@ int main(){ }while( toUpperCase(guessed) != word ); cout << "Vous avez gagne!!" << endl; - - return 0; } \ No newline at end of file diff --git a/tp1/dict b/tp1/dict index e69de29..3df2173 100644 --- a/tp1/dict +++ b/tp1/dict @@ -0,0 +1,2 @@ +dictionnaire +bonjour diff --git a/tp1/wordproc.cpp b/tp1/wordproc.cpp index 86ff683..af78a87 100644 --- a/tp1/wordproc.cpp +++ b/tp1/wordproc.cpp @@ -15,7 +15,6 @@ string toUpperCase(string in){ for( int i = 0 ; i < in.length() ; i++ ){ char c = in.at(i); - // if( c >= 'a' && c <= 'z' ) out[i] = (char) (c-'a'+'A'); } @@ -34,7 +33,7 @@ string shuffle(string in){ // Contiendra les index vector indexes; // Contiendra les valeurs - string out(""); + string out; /* [1] On prends une lettre tant qu'il en manque =========================================================*/ @@ -45,7 +44,6 @@ string shuffle(string in){ // On prends un indice aleatoire index = rand() % in.length(); - cout << index << endl; // Si index non utilise, on le reference if( indexOf(indexes, index) == -1 ){ diff --git a/tp2.cpp b/tp2.cpp new file mode 100644 index 0000000..f94194a --- /dev/null +++ b/tp2.cpp @@ -0,0 +1,17 @@ +#include + +#include "tp2/ZFraction.h" + +using namespace std; + + + +int main(){ + ZFraction f1(1,10); + ZFraction f2(10); + ZFraction f3(10, 3); + + f1.toString(); + + return 0; +} \ No newline at end of file diff --git a/tp2/ZFraction.cpp b/tp2/ZFraction.cpp new file mode 100644 index 0000000..848b9ba --- /dev/null +++ b/tp2/ZFraction.cpp @@ -0,0 +1,23 @@ +/* [0] CONSTRUCTEUR +=========================================================*/ +ZFraction::ZFraction(int a, int b) : a(a), b(b){} + + + +/* [1] Getters +=========================================================*/ +void ZFraction::toString() const{ cout << "(" << this->a << "/" << this->b << ")"; } + + + +/* [2] Operateurs +=========================================================*/ + /* (1) Addition */ + ZFraction& operator+=(ZFraction const& x){ + int new_a = this->a * x.b + this->b * x.a; + int new_b = this->b * x.b; + + ZFraction out = ZFraction(new_a, new_b); + + return &out; + } \ No newline at end of file diff --git a/tp2/ZFraction.h b/tp2/ZFraction.h new file mode 100644 index 0000000..1aed4ae --- /dev/null +++ b/tp2/ZFraction.h @@ -0,0 +1,28 @@ +#ifndef DEF_ZFRACTION + + #define DEF_ZFRACTION + #include + #include + + using namespace std; + + + class ZFraction{ + public: + ZFraction(int a=1, int b=1); + + void toString() const; + + ZFraction& operator+=(ZFraction const& operand); + + private: + int a; + int b; + }; + + + + + #include "ZFraction.cpp" + +#endif \ No newline at end of file