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++.
|
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 <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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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