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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

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