Seance #2
This commit is contained in:
parent
462d87e081
commit
68721abf0c
11
README.md
11
README.md
|
@ -1,2 +1,13 @@
|
|||
Lab de prog. en C++.
|
||||
====================
|
||||
|
||||
|
||||
[ex1] Hello World
|
||||
|
||||
[ex2] string + <<
|
||||
|
||||
[ex3] Calculatrice modulaire
|
||||
|
||||
[ex4] Fichiers
|
||||
|
||||
[tp1] Mot mystere
|
29
ex3.cpp
29
ex3.cpp
|
@ -1,11 +1,13 @@
|
|||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#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<Operator*> 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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "DivisionEuclidienne.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* [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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
#include "Operator.h"
|
||||
|
||||
|
||||
class Trinome : public Operator{
|
||||
public:
|
||||
Trinome();
|
||||
std::string getLibelle();
|
||||
float* calc();
|
||||
};
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
MON FICHIER ECRIT !!!
|
||||
Hehe
|
||||
|
||||
Cool!
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue