From 68721abf0cbb54b0694c91084340ca03ace9e1e8 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 4 Mar 2016 08:49:31 +0100 Subject: [PATCH] Seance #2 --- README.md | 11 +++++++++ ex3.cpp | 29 +++++++++++++--------- ex3/Addition.cpp | 2 +- ex3/Division.cpp | 2 +- ex3/DivisionEuclidienne.cpp | 4 ++- ex3/Multiplication.cpp | 2 +- ex3/Soustraction.cpp | 2 +- ex3/Trinome.cpp | 48 ++++++++++++++++++++++++++++++++++++ ex3/Trinome.h | 9 +++++++ ex4.cpp | 25 +++++++++++++++++++ ex4/ex4.txt | 4 +++ exec/ex3 | Bin 20666 -> 35075 bytes exec/ex4 | Bin 0 -> 13848 bytes exec/tp1 | Bin 0 -> 13907 bytes tp1.cpp | 34 +++++++++++++++++++++++++ tp1/dict | 0 16 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 ex3/Trinome.cpp create mode 100644 ex3/Trinome.h create mode 100644 ex4.cpp create mode 100644 ex4/ex4.txt create mode 100755 exec/ex4 create mode 100755 exec/tp1 create mode 100644 tp1.cpp create mode 100644 tp1/dict diff --git a/README.md b/README.md index 6b30864..daa39f6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,13 @@ Lab de prog. en C++. ==================== + + +[ex1] Hello World + +[ex2] string + << + +[ex3] Calculatrice modulaire + +[ex4] Fichiers + +[tp1] Mot mystere \ No newline at end of file diff --git a/ex3.cpp b/ex3.cpp index 3fd777d..50aa22a 100644 --- a/ex3.cpp +++ b/ex3.cpp @@ -1,11 +1,13 @@ #include #include +#include #include "ex3/Addition.cpp" #include "ex3/Soustraction.cpp" #include "ex3/Multiplication.cpp" #include "ex3/Division.cpp" #include "ex3/DivisionEuclidienne.cpp" +#include "ex3/Trinome.cpp" using namespace std; @@ -13,31 +15,34 @@ using namespace std; int main(){ int choix(0); + char input[8] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'}; + char output[8] = {'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'}; + /* [1] On initialise les operations =========================================================*/ - Operator *operations[5]; + vector operations; // On ajoute les operations; - operations[0] = new Addition(); - operations[1] = new Soustraction(); - operations[2] = new Multiplication(); - operations[3] = new Division(); - operations[4] = new DivisionEuclidienne(); - - int nbOp = sizeof(operations)/sizeof(Operator*); + operations.push_back( new Addition() ); + operations.push_back( new Soustraction() ); + operations.push_back( new Multiplication() ); + operations.push_back( new Division() ); + operations.push_back( new DivisionEuclidienne() ); + operations.push_back( new Trinome() ); /* [2] Choix de l'operation a executer =========================================================*/ do{ cout << " +-------------------------+" << endl; - for( int i = 0 ; i < nbOp ; i++ ) + for( int i = 0 ; i < operations.size() ; i++ ) cout << " + " << i << ") " << operations[i]->getLibelle() << endl; cout << " +-------------------------+" << endl; cout << " + Choix: "; cin >> choix; cout << endl << endl; - }while( choix < 0 || choix >= nbOp ); + cout << "=======================================" << endl; + }while( choix < 0 || choix >= operations.size() ); /* [3] On recupere les operandes pour le calcul @@ -46,7 +51,7 @@ int main(){ int countOp(0); while( operations[choix]->missingOperand() ){ - cout << "x" << countOp << " = "; + cout << input[countOp] << " = "; cin >> scanner; cout << endl; @@ -57,7 +62,7 @@ int main(){ float* result = operations[choix]->calc(); for( int i = 0 ; result[i] != '\0' ; i++ ) - cout << "y" << i << " = " << result[i] << endl; + cout << output[i] << " = " << result[i] << endl; return 0; } diff --git a/ex3/Addition.cpp b/ex3/Addition.cpp index 83c680e..9234e93 100644 --- a/ex3/Addition.cpp +++ b/ex3/Addition.cpp @@ -9,7 +9,7 @@ Addition::Addition(){ /* [1] Renvoie le nom du type de calcul =========================================================*/ std::string Addition::getLibelle(){ - return "Addition"; + return "a + b"; } /* [2] Effectue le calcul et renvoie le resultat diff --git a/ex3/Division.cpp b/ex3/Division.cpp index 54a4c44..cd408dd 100644 --- a/ex3/Division.cpp +++ b/ex3/Division.cpp @@ -9,7 +9,7 @@ Division::Division(){ /* [1] Renvoie le nom du type de calcul =========================================================*/ std::string Division::getLibelle(){ - return "Division"; + return "a / b"; } /* [2] Effectue le calcul et renvoie le resultat diff --git a/ex3/DivisionEuclidienne.cpp b/ex3/DivisionEuclidienne.cpp index 1cd1297..581a9f2 100644 --- a/ex3/DivisionEuclidienne.cpp +++ b/ex3/DivisionEuclidienne.cpp @@ -1,5 +1,7 @@ #include "DivisionEuclidienne.h" +#include + /* [0] CONSTRUCTEUR =========================================================*/ DivisionEuclidienne::DivisionEuclidienne(){ @@ -9,7 +11,7 @@ DivisionEuclidienne::DivisionEuclidienne(){ /* [1] Renvoie le nom du type de calcul =========================================================*/ std::string DivisionEuclidienne::getLibelle(){ - return "Division euclidienne"; + return "a / b = ib + j"; } /* [2] Effectue le calcul et renvoie le resultat diff --git a/ex3/Multiplication.cpp b/ex3/Multiplication.cpp index f8fb338..89848a7 100644 --- a/ex3/Multiplication.cpp +++ b/ex3/Multiplication.cpp @@ -9,7 +9,7 @@ Multiplication::Multiplication(){ /* [1] Renvoie le nom du type de calcul =========================================================*/ std::string Multiplication::getLibelle(){ - return "Multiplication"; + return "a * b"; } /* [2] Effectue le calcul et renvoie le resultat diff --git a/ex3/Soustraction.cpp b/ex3/Soustraction.cpp index 9c82e51..b200d97 100644 --- a/ex3/Soustraction.cpp +++ b/ex3/Soustraction.cpp @@ -10,7 +10,7 @@ Soustraction::Soustraction(){ /* [1] Renvoie le nom du type de calcul =========================================================*/ std::string Soustraction::getLibelle(){ - return "Soustraction"; + return "a - b"; } /* [2] Effectue le calcul et renvoie le resultat diff --git a/ex3/Trinome.cpp b/ex3/Trinome.cpp new file mode 100644 index 0000000..783d2c1 --- /dev/null +++ b/ex3/Trinome.cpp @@ -0,0 +1,48 @@ +#include "Trinome.h" + +#include +#include + +using namespace std; + +/* [0] CONSTRUCTEUR +=========================================================*/ +Trinome::Trinome(){ + this->init(3); +} + +/* [1] Renvoie le nom du type de calcul +=========================================================*/ +string Trinome::getLibelle(){ + return "ax^2 + bx + c = 0"; +} + +/* [2] Effectue le calcul et renvoie le resultat +=========================================================*/ +float* Trinome::calc(){ + const int a( this->operands[0] ), + b( this->operands[1] ), + c( this->operands[2] ); + + float delta = pow(b,2) - 4*a*c; + + // DELTA > 0 -> 2 racines + if( delta > 0 ){ + this->result = (float*) malloc(2*sizeof(float)); + + this->result[0] = (-b-sqrt(delta)) / (2*a); + this->result[1] = (-b+sqrt(delta)) / (2*a); + + // DELTA = 0 -> 1 racine + }else if( delta == 0 ){ + this->result = (float*) malloc(2*sizeof(float)); + + this->result[0] = (-b) / (2*a); + + // DELTA < 0 -> 0 racine + }else{ + this->result = (float*) malloc(0*sizeof(float)); + } + + return this->result; +} \ No newline at end of file diff --git a/ex3/Trinome.h b/ex3/Trinome.h new file mode 100644 index 0000000..4ed5f41 --- /dev/null +++ b/ex3/Trinome.h @@ -0,0 +1,9 @@ +#include "Operator.h" + + +class Trinome : public Operator{ + public: + Trinome(); + std::string getLibelle(); + float* calc(); +}; \ No newline at end of file diff --git a/ex4.cpp b/ex4.cpp new file mode 100644 index 0000000..6e805a3 --- /dev/null +++ b/ex4.cpp @@ -0,0 +1,25 @@ +#include +#include +#include +#include + +using namespace std; + + +/* [1] Lecture de fichier +=========================================================*/ +int main(){ + + // On instancie notre stream + ofstream fichier("ex4/ex4.txt"); + + // On verifie qu'il n'y a aucune erreur + if( !fichier ) return -1; + + fichier << "MON FICHIER ECRIT !!!" << endl; + fichier << "Hehe" << endl << endl; + fichier << "Cool!" << endl; + + + return 0; +} \ No newline at end of file diff --git a/ex4/ex4.txt b/ex4/ex4.txt new file mode 100644 index 0000000..c9e7573 --- /dev/null +++ b/ex4/ex4.txt @@ -0,0 +1,4 @@ +MON FICHIER ECRIT !!! +Hehe + +Cool! diff --git a/exec/ex3 b/exec/ex3 index 5202a5eeca19825fbb2e36042a99801904eecead..23e1d119173a640f2e4351b7706e630b86791e98 100755 GIT binary patch literal 35075 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 literal 20666 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 L679|DDFgj44JC0J literal 0 HcmV?d00001 diff --git a/exec/tp1 b/exec/tp1 new file mode 100755 index 0000000000000000000000000000000000000000..a7d6eab19f5e6bd13663e28a860329bf93742ab6 GIT binary patch literal 13907 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 +#include +#include +#include + +using namespace std; + + +int main(){ + + /* [0] CONSTANTES + =========================================================*/ + const string dict_filename = "tp1/dict"; + ifstream dict_read( dict_filename.c_str() ); + + + /* [0] VARIABLES + =========================================================*/ + string word; + string shuffled; + + /* [1] Demande du mot + =========================================================*/ + s + + /* [2] Essai de l'utilisateur + =========================================================*/ + + + /* [3] Resultat + =========================================================*/ + + return 0; +} \ No newline at end of file diff --git a/tp1/dict b/tp1/dict new file mode 100644 index 0000000..e69de29