This commit is contained in:
xdrm-brackets 2016-03-04 08:49:31 +01:00
parent 462d87e081
commit 68721abf0c
16 changed files with 155 additions and 17 deletions

View File

@ -1,2 +1,13 @@
Lab de prog. en C++. Lab de prog. en C++.
==================== ====================
[ex1] Hello World
[ex2] string + <<
[ex3] Calculatrice modulaire
[ex4] Fichiers
[tp1] Mot mystere

29
ex3.cpp
View File

@ -1,11 +1,13 @@
#include <iostream> #include <iostream>
#include <string> #include <string>
#include <vector>
#include "ex3/Addition.cpp" #include "ex3/Addition.cpp"
#include "ex3/Soustraction.cpp" #include "ex3/Soustraction.cpp"
#include "ex3/Multiplication.cpp" #include "ex3/Multiplication.cpp"
#include "ex3/Division.cpp" #include "ex3/Division.cpp"
#include "ex3/DivisionEuclidienne.cpp" #include "ex3/DivisionEuclidienne.cpp"
#include "ex3/Trinome.cpp"
using namespace std; using namespace std;
@ -13,31 +15,34 @@ using namespace std;
int main(){ int main(){
int choix(0); 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 /* [1] On initialise les operations
=========================================================*/ =========================================================*/
Operator *operations[5]; vector<Operator*> operations;
// On ajoute les operations; // On ajoute les operations;
operations[0] = new Addition(); operations.push_back( new Addition() );
operations[1] = new Soustraction(); operations.push_back( new Soustraction() );
operations[2] = new Multiplication(); operations.push_back( new Multiplication() );
operations[3] = new Division(); operations.push_back( new Division() );
operations[4] = new DivisionEuclidienne(); operations.push_back( new DivisionEuclidienne() );
operations.push_back( new Trinome() );
int nbOp = sizeof(operations)/sizeof(Operator*);
/* [2] Choix de l'operation a executer /* [2] Choix de l'operation a executer
=========================================================*/ =========================================================*/
do{ do{
cout << " +-------------------------+" << endl; cout << " +-------------------------+" << endl;
for( int i = 0 ; i < nbOp ; i++ ) for( int i = 0 ; i < operations.size() ; i++ )
cout << " + " << i << ") " << operations[i]->getLibelle() << endl; cout << " + " << i << ") " << operations[i]->getLibelle() << endl;
cout << " +-------------------------+" << endl; cout << " +-------------------------+" << endl;
cout << " + Choix: "; cout << " + Choix: ";
cin >> choix; cin >> choix;
cout << endl << endl; cout << endl << endl;
}while( choix < 0 || choix >= nbOp ); cout << "=======================================" << endl;
}while( choix < 0 || choix >= operations.size() );
/* [3] On recupere les operandes pour le calcul /* [3] On recupere les operandes pour le calcul
@ -46,7 +51,7 @@ int main(){
int countOp(0); int countOp(0);
while( operations[choix]->missingOperand() ){ while( operations[choix]->missingOperand() ){
cout << "x" << countOp << " = "; cout << input[countOp] << " = ";
cin >> scanner; cin >> scanner;
cout << endl; cout << endl;
@ -57,7 +62,7 @@ int main(){
float* result = operations[choix]->calc(); float* result = operations[choix]->calc();
for( int i = 0 ; result[i] != '\0' ; i++ ) for( int i = 0 ; result[i] != '\0' ; i++ )
cout << "y" << i << " = " << result[i] << endl; cout << output[i] << " = " << result[i] << endl;
return 0; return 0;
} }

View File

@ -9,7 +9,7 @@ Addition::Addition(){
/* [1] Renvoie le nom du type de calcul /* [1] Renvoie le nom du type de calcul
=========================================================*/ =========================================================*/
std::string Addition::getLibelle(){ std::string Addition::getLibelle(){
return "Addition"; return "a + b";
} }
/* [2] Effectue le calcul et renvoie le resultat /* [2] Effectue le calcul et renvoie le resultat

View File

@ -9,7 +9,7 @@ Division::Division(){
/* [1] Renvoie le nom du type de calcul /* [1] Renvoie le nom du type de calcul
=========================================================*/ =========================================================*/
std::string Division::getLibelle(){ std::string Division::getLibelle(){
return "Division"; return "a / b";
} }
/* [2] Effectue le calcul et renvoie le resultat /* [2] Effectue le calcul et renvoie le resultat

View File

@ -1,5 +1,7 @@
#include "DivisionEuclidienne.h" #include "DivisionEuclidienne.h"
#include <stdio.h>
/* [0] CONSTRUCTEUR /* [0] CONSTRUCTEUR
=========================================================*/ =========================================================*/
DivisionEuclidienne::DivisionEuclidienne(){ DivisionEuclidienne::DivisionEuclidienne(){
@ -9,7 +11,7 @@ DivisionEuclidienne::DivisionEuclidienne(){
/* [1] Renvoie le nom du type de calcul /* [1] Renvoie le nom du type de calcul
=========================================================*/ =========================================================*/
std::string DivisionEuclidienne::getLibelle(){ std::string DivisionEuclidienne::getLibelle(){
return "Division euclidienne"; return "a / b = ib + j";
} }
/* [2] Effectue le calcul et renvoie le resultat /* [2] Effectue le calcul et renvoie le resultat

View File

@ -9,7 +9,7 @@ Multiplication::Multiplication(){
/* [1] Renvoie le nom du type de calcul /* [1] Renvoie le nom du type de calcul
=========================================================*/ =========================================================*/
std::string Multiplication::getLibelle(){ std::string Multiplication::getLibelle(){
return "Multiplication"; return "a * b";
} }
/* [2] Effectue le calcul et renvoie le resultat /* [2] Effectue le calcul et renvoie le resultat

View File

@ -10,7 +10,7 @@ Soustraction::Soustraction(){
/* [1] Renvoie le nom du type de calcul /* [1] Renvoie le nom du type de calcul
=========================================================*/ =========================================================*/
std::string Soustraction::getLibelle(){ std::string Soustraction::getLibelle(){
return "Soustraction"; return "a - b";
} }
/* [2] Effectue le calcul et renvoie le resultat /* [2] Effectue le calcul et renvoie le resultat

48
ex3/Trinome.cpp Normal file
View File

@ -0,0 +1,48 @@
#include "Trinome.h"
#include <stdio.h>
#include <cmath>
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;
}

9
ex3/Trinome.h Normal file
View File

@ -0,0 +1,9 @@
#include "Operator.h"
class Trinome : public Operator{
public:
Trinome();
std::string getLibelle();
float* calc();
};

25
ex4.cpp Normal file
View File

@ -0,0 +1,25 @@
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
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;
}

4
ex4/ex4.txt Normal file
View File

@ -0,0 +1,4 @@
MON FICHIER ECRIT !!!
Hehe
Cool!

BIN
exec/ex3

Binary file not shown.

BIN
exec/ex4 Executable file

Binary file not shown.

BIN
exec/tp1 Executable file

Binary file not shown.

34
tp1.cpp Normal file
View File

@ -0,0 +1,34 @@
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
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;
}

0
tp1/dict Normal file
View File