Commit 232b6c49 authored by Hernandez Francois's avatar Hernandez Francois

simplifie pre-debug

parent ff8259d2
......@@ -125,6 +125,9 @@ Expression * Plus::simplifie() const{
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
res = ds;
} else {
Plus * rep = new Plus(gs,ds);
res = rep;
}
} else if(typeid(*ds) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
......@@ -132,10 +135,13 @@ Expression * Plus::simplifie() const{
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
res = gs;
}else {
Plus * rep = new Plus(gs,ds);
res = rep;
}
} else {
Expression * rep = this->clone();
Plus * rep = new Plus(gs,ds);
res = rep;
}
......@@ -187,13 +193,20 @@ Expression * Moins::simplifie() const{
Nombre * mun = new Nombre(-1);
Multiplier * rep = new Multiplier(mun, ds);
res = rep;
}else {
Expression * rep = this->clone();
res = rep;
}
} else if(typeid(*ds) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
Nombre *cast = dynamic_cast<Nombre*>(droite_);
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
res = gs;
} else {
Expression * rep = this->clone();
res = rep;
}
} else {
......@@ -251,6 +264,9 @@ Expression * Multiplier::simplifie() const{
if (cast->getValue() == 0){
Nombre * rep = new Nombre(0);
res = rep;
} else {
Multiplier * rep = new Multiplier(gs,ds);
res = rep;
}
} else if(typeid(*ds) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
......@@ -259,10 +275,13 @@ Expression * Multiplier::simplifie() const{
if (cast->getValue() == 0){
Nombre * rep = new Nombre(0);
res = rep;
} else {
Multiplier * rep = new Multiplier(gs,ds);
res = rep;
}
} else {
Expression * rep = this->clone();
Multiplier * rep = new Multiplier(gs,ds);
res = rep;
}
......@@ -291,7 +310,7 @@ Expression * Diviser::derive(char nom) const{
Expression * Diviser::clone() const{
Multiplier * res = new Multiplier(this->gauche_, this->droite_);
Diviser * res = new Diviser(this->gauche_, this->droite_);
return res;
}
......@@ -312,29 +331,32 @@ Expression * Diviser::simplifie() const{
Nombre *cd = dynamic_cast<Nombre*>(ds);
Nombre *rep = new Nombre(cg->getValue()/cd->getValue());
res = rep;
}/*else if(typeid(*gs) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
Nombre *cast = dynamic_cast<Nombre*>(gs);
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
Nombre * rep = new Nombre(0);
res = rep;
}
} else if(typeid(*ds) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
Nombre *cast = dynamic_cast<Nombre*>(droite_);
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
std::cout << "Division par 0";
} else {
Diviser * rep = new Diviser(gs, ds);
res = rep;
}
} */else {
Expression * rep = this->clone();
}else if(typeid(*gs) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
Nombre *cast = dynamic_cast<Nombre*>(gs);
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
Nombre * rep = new Nombre(0);
res = rep;
} else {
Diviser * rep = new Diviser(gs,ds);
res = rep;
}
} else if(typeid(*ds) == typeid(Nombre)){
// std::cout << "gauche est un nombre" << std::endl;
Nombre *cast = dynamic_cast<Nombre*>(droite_);
//std::cout << cast->getValue() << std::endl;
if (cast->getValue() == 0){
std::cout << "Division par 0";
} else {
Diviser * rep = new Diviser(gs, ds);
res = rep;
}
} else {
Diviser * rep = new Diviser(gs, ds);
res = rep;
}
return res;
}
......
No preview for this file type
......@@ -7,7 +7,50 @@
int main()
{
std::cout << "TEST DES FONCTIONNALITES" << std::endl;
Nombre * un = new Nombre(1);
Nombre * deux = new Nombre(2);
Nombre * trois = new Nombre(3);
Variable * x = new Variable('x');
Variable * y = new Variable('y');
Plus * p = new Plus(un, deux);
Moins * m = new Moins(deux, x);
std::cout << *m << std::endl;
Expression * mc = m->clone();
std::cout << *mc << std::endl;
Expression * ms = m->simplifie();
std::cout << *ms << std::endl;
Diviser * d = new Diviser(p,m);
std::cout << *d << std::endl;
Expression * ds = d->simplifie();
std::cout << *ds << std::endl;
Diviser * deuxsurx = new Diviser(deux, x);
Expression * ddeuxsurx = deuxsurx->derive('x');
std::cout << *deuxsurx << std::endl;
std::cout << *ddeuxsurx << std::endl;
Expression * deuxsurxs = deuxsurx->simplifie();
Expression * ddeuxsurxs = ddeuxsurx->simplifie();
std::cout << *deuxsurxs << std::endl;
std::cout << *ddeuxsurxs << std::endl;
Plus * deuxplusx = new Plus(deux,x);
Moins * deuxmoinsx = new Moins(deux,x);
Multiplier * prod = new Multiplier(deuxplusx,deuxmoinsx);
Expression * prodd = prod->derive('x');
std::cout << *prodd << std::endl;
Expression * prodds = prodd->simplifie();
std::cout << *prodds << std::endl;
/*std::cout << "TEST DES FONCTIONNALITES" << std::endl;
// Création du nombre 2
Nombre * nb = new Nombre(2);
......@@ -131,9 +174,12 @@ int main()
std::cout << "Affiche ((2 + x) / (2 - x)) : " << std::endl;
std::cout << *ddd << std::endl;
Expression * ddds = ddd->simplifie();
std::cout << *ddds << std::endl;
Diviser * divn = new Diviser(nb,nb);
std::cout << *divn << std::endl;
Expression * divns = divns->simplifie();
Expression * divns = divn->simplifie();
std::cout << *divns << std::endl;
Expression * dddd = ddd->derive('x');
......@@ -145,5 +191,7 @@ int main()
std::cout << "Simplifie : " << std::endl;
Expression * dddds = dddd->simplifie();
std::cout << *dddds << std::endl;
*/
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment