diff --git a/ex3.cpp b/ex3.cpp index 50aa22a..e22db87 100644 --- a/ex3.cpp +++ b/ex3.cpp @@ -8,6 +8,8 @@ #include "ex3/Division.cpp" #include "ex3/DivisionEuclidienne.cpp" #include "ex3/Trinome.cpp" +#include "ex3/Puissance.cpp" +#include "ex3/Racine.cpp" using namespace std; @@ -29,6 +31,8 @@ int main(){ operations.push_back( new Division() ); operations.push_back( new DivisionEuclidienne() ); operations.push_back( new Trinome() ); + operations.push_back( new Puissance() ); + operations.push_back( new Racine() ); /* [2] Choix de l'operation a executer diff --git a/ex3/Puissance.cpp b/ex3/Puissance.cpp new file mode 100644 index 0000000..b679f87 --- /dev/null +++ b/ex3/Puissance.cpp @@ -0,0 +1,24 @@ +#include "Puissance.h" +#include + +/* [0] CONSTRUCTEUR +=========================================================*/ +Puissance::Puissance(){ + this->init(2); +} + +/* [1] Renvoie le nom du type de calcul +=========================================================*/ +std::string Puissance::getLibelle(){ + return "a ^ b"; +} + +/* [2] Effectue le calcul et renvoie le resultat +=========================================================*/ +float* Puissance::calc(){ + this->result = (float*) malloc(1*sizeof(float)); + + this->result[0] = pow(this->operands[0], this->operands[1]); + + return this->result; +} \ No newline at end of file diff --git a/ex3/Puissance.h b/ex3/Puissance.h new file mode 100644 index 0000000..2291472 --- /dev/null +++ b/ex3/Puissance.h @@ -0,0 +1,9 @@ +#include "Operator.h" + + +class Puissance : public Operator{ + public: + Puissance(); + std::string getLibelle(); + float* calc(); +}; \ No newline at end of file diff --git a/ex3/Racine.cpp b/ex3/Racine.cpp new file mode 100644 index 0000000..a124649 --- /dev/null +++ b/ex3/Racine.cpp @@ -0,0 +1,24 @@ +#include "Racine.h" +#include + +/* [0] CONSTRUCTEUR +=========================================================*/ +Racine::Racine(){ + this->init(1); +} + +/* [1] Renvoie le nom du type de calcul +=========================================================*/ +std::string Racine::getLibelle(){ + return "sqrt(b)"; +} + +/* [2] Effectue le calcul et renvoie le resultat +=========================================================*/ +float* Racine::calc(){ + this->result = (float*) malloc(1*sizeof(float)); + + this->result[0] = sqrt(this->operands[0]); + + return this->result; +} \ No newline at end of file diff --git a/ex3/Racine.h b/ex3/Racine.h new file mode 100644 index 0000000..d30bd1c --- /dev/null +++ b/ex3/Racine.h @@ -0,0 +1,9 @@ +#include "Operator.h" + + +class Racine : public Operator{ + public: + Racine(); + std::string getLibelle(); + float* calc(); +}; \ No newline at end of file diff --git a/ex3/Trinome.cpp b/ex3/Trinome.cpp index 783d2c1..2c02cd8 100644 --- a/ex3/Trinome.cpp +++ b/ex3/Trinome.cpp @@ -1,6 +1,5 @@ #include "Trinome.h" -#include #include using namespace std; diff --git a/exec/ex3 b/exec/ex3 index 23e1d11..aa33169 100755 Binary files a/exec/ex3 and b/exec/ex3 differ diff --git a/exec/tp1 b/exec/tp1 index a7d6eab..4cbea66 100755 Binary files a/exec/tp1 and b/exec/tp1 differ diff --git a/tp1.cpp b/tp1.cpp index a96ef57..aa28a09 100644 --- a/tp1.cpp +++ b/tp1.cpp @@ -3,6 +3,8 @@ #include #include +#include "tp1/wordproc.cpp" + using namespace std; @@ -21,14 +23,29 @@ int main(){ /* [1] Demande du mot =========================================================*/ - s + cout << "Mot secret: "; + cin >> word; + cout << endl; - /* [2] Essai de l'utilisateur - =========================================================*/ - + // On met le mot en majuscules + word = toUpperCase(word); - /* [3] Resultat + /* [2] On melange les lettres du mot =========================================================*/ + shuffled = shuffle(word); + + /* [3] JEU > utilisateur + =========================================================*/ + string guessed; + + do{ + cout << "What is this world ? " << shuffled << endl; + cin >> guessed; + cout << endl; + + }while( toUpperCase(guessed) != word ); + + cout << "Vous avez gagne!!" << endl; return 0; } \ No newline at end of file diff --git a/tp1/wordproc.cpp b/tp1/wordproc.cpp new file mode 100644 index 0000000..86ff683 --- /dev/null +++ b/tp1/wordproc.cpp @@ -0,0 +1,62 @@ +#include "wordproc.h" + +int indexOf(vector tab, int el){ + for( int i = 0 ; i < tab.size() ; i++ ) + if( tab[i] == el ) return i; + + return -1; +} + + +string toUpperCase(string in){ + // Valeur de sortie + string out(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'); + } + + + return out; +} + + + + + + + +string shuffle(string in){ + // Contiendra les index + vector indexes; + // Contiendra les valeurs + string out(""); + + /* [1] On prends une lettre tant qu'il en manque + =========================================================*/ + srand(time(0)); + int index(0); + + while( indexes.size() < in.length() ){ + + // On prends un indice aleatoire + index = rand() % in.length(); + cout << index << endl; + + // Si index non utilise, on le reference + if( indexOf(indexes, index) == -1 ){ + indexes.push_back( index ); + out += in[index]; + } + + } + + return out; +} + + + diff --git a/tp1/wordproc.h b/tp1/wordproc.h new file mode 100644 index 0000000..ef3eb49 --- /dev/null +++ b/tp1/wordproc.h @@ -0,0 +1,16 @@ +#include +#include +#include +#include + +using namespace std; + +int indexOf(vector tab, int el); + +/* [1] Met le mot en majuscules +=========================================================*/ +string toUpperCase(string in); + +/* [2] Melange l'ordre des char d'un mot +=========================================================*/ +string shuffle(string in); \ No newline at end of file