Element* Calculateur::cast(Element* e)
{
    if(typeid(*e) == typeid(Expression))
    { qDebug()<<"cast expression";
        return e->clone();
    }
    else if(isComplexe())//\todo ici il faudrait faire attention de ne pas transformer les parties imaginaire et réelle d'un complexe en complexe
    {   qDebug()<<"cast Complexe";
        return e->toComplexe();
    }
    else if(isEntier())
    {   qDebug()<<"cast entier";
        return e->toEntier();
    }
    else if(isReel())
    {   qDebug()<<"cast reel";
        return e->toReel();
    }
    else if(isRationnel())
    {   qDebug()<<"cast rationnel";
        return e->toRationnel();
    }
    else
    {   qDebug()<<"cast else";
        return e->toReel();
    }
}
Beispiel #2
0
void Pile::cast(Constante* & cst){
//    if(typeid(*cst) ==typeid(CEntier) && !isEntier()){
//        CEntier *  tmp =(CEntier*) cst;
//        if(isRationnel()){

//            cst = new CRationnel(tmp->getValue(), 1);
//        }else {
//            cst = new CReel(tmp->getValue());
//        }
//        delete tmp;

//    }
    if(typeid(*cst) ==typeid(CRationnel) && !isRationnel()){
        CRationnel * tmp = (CRationnel*) cst;
        if(isEntier()){

            cst = new CEntier((float)tmp->getNum()/(float)tmp->getDenom());
        }else {
            cst = new CReel((float)tmp->getNum()/(float)tmp->getDenom());
        }
        delete tmp;

    }
    else if(typeid(*cst) ==typeid(CReel) && !(isReel()))
    { CReel * tmp = (CReel*) cst;
        if(isEntier()){

            cst = new CEntier(tmp->getValue());
        }else {
            cst = new CRationnel(tmp->getValue());
        }
        delete tmp;

    }

}
Beispiel #3
0
bool Calculatrice::isConstante(const QString& s) const{
    if (isEntier(s) || isReel(s) || isRationnel(s) || isComplexe(s)) {
        return true;
    }
    return false;
}