From f8501300ab9c0eba4fdd60e22dbdf3ac7a647dc1 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sat, 5 Mar 2016 23:37:08 +0100 Subject: [PATCH] Seance #4 --- exec/tp1 | Bin 30987 -> 49879 bytes exec/tp2 | Bin 0 -> 9205 bytes tp1.cpp | 147 ++++++++++++++++++++++++++++++++++++++++++---- tp1/dict | 2 + tp1/wordproc.cpp | 4 +- tp2.cpp | 17 ++++++ tp2/ZFraction.cpp | 23 ++++++++ tp2/ZFraction.h | 28 +++++++++ 8 files changed, 206 insertions(+), 15 deletions(-) create mode 100755 exec/tp2 create mode 100644 tp2.cpp create mode 100644 tp2/ZFraction.cpp create mode 100644 tp2/ZFraction.h diff --git a/exec/tp1 b/exec/tp1 index 4cbea66051a0f99238601d3c35897221fed787ff..8111add6f4171d4f5487de432810ef48443f7989 100755 GIT binary patch literal 49879 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 literal 30987 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 diff --git a/exec/tp2 b/exec/tp2 new file mode 100755 index 0000000000000000000000000000000000000000..17ca2ff35b5ace3f454509480f59a16b84970cc6 GIT binary patch literal 9205 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 Q6KO=0kOxTe0^C&jCw>_AF#rGn literal 0 HcmV?d00001 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