本文整理汇总了C++中Entier类的典型用法代码示例。如果您正苦于以下问题:C++ Entier类的具体用法?C++ Entier怎么用?C++ Entier使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Entier类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getMean
void CalculatriceModele::getMean(int type){
if(pile.size()>=1){
Constante* a = pile.pop();
if(typeid (*a).name()==typeid (Entier).name()){
Entier* e = dynamic_cast<Entier*>(a);
if(pile.size()>=e->GetEntier())
{
Rationnel nb_moyenne = e->inv();
pile.push(e);
emit getSum(type);
a = pile.pop();
Constante* res = nb_moyenne * a;
qDebug()<<"res :"<<res->ConvertChaine();
pile.push(res);
}
else{
pile.push(a);
logger1->Write(&LogMessage(ERROR,"taille pile insuffisante"));
logger2->Write(&LogMessage(ERROR,"taille pile insuffisante"));
}
}
else{
logger1->Write(&LogMessage(ERROR,"type non conforme"));
logger2->Write(&LogMessage(ERROR,"type non conforme"));
}
emit finOp(&pile);
}
else{
logger1->Write(&LogMessage(ERROR,"taille pile insuffisante"));
logger2->Write(&LogMessage(ERROR,"taille pile insuffisante"));
}
}
示例2: qDebug
Element* Calculateur::fact()
{
if(typeid(*this->pileC->top()) == typeid(Expression))
{
throw std::logic_error("L'élément du haut de la pile est une expression");
}
if(typeid(*this->pileC->top()) == typeid(Complexe))
{ qDebug()<<"on est en complexe";
throw std::logic_error("La fonction factorielle ne s'applique pas au complexe");
}
if(typeid(*this->pileC->top()) != typeid(Entier))
{ qDebug()<<"on est en non entier";
throw std::logic_error("La fonction factorielle ne s'applique qu'au entier");
}
if(typeid(*this->pileC->top()) == typeid(Entier))
{ qDebug()<<"on est en entier";
Entier* m = dynamic_cast<Entier*>(this->pileC->pop()); /*!< module */
int a,f;
for(a=1,f=1;a<m->getXAsInt()+1;f*=a,a++);
this->push(new Entier(f));
delete m;
}
else
{
throw std::logic_error("L'élément du haut de la pile n'est pas un élement valide");
}
}
示例3: while
Reelle::Reelle(const Entier& p,const Entier& m){
/*Un réel ne peut pas être construit avec une mantisse nulle*/
if(m.getValeur()==0){LitteraleException("Construction: Mantisse nulle !","Reelle");}
else{value=p.getValeur();
double mantisse=(double)m.getValeur();
while(mantisse>=1)
mantisse=mantisse/10.0;
value+=mantisse;}
}
示例4: sum
Element* Calculateur::sum()
{
Entier* e = dynamic_cast<Entier*>(this->pop());
qDebug()<<"ici ça marche";
for(unsigned int i=0;i<e->getXAsInt()-1;i++)
{
this->addition();
}
qDebug()<<this->getPile()->top()->toQString();
}
示例5: Reel
Element& Reel::operator*(Element& e)
{
{
if(typeid(e) == typeid(Complexe))
{
Complexe& ecast = dynamic_cast<Complexe &>(e);
if(typeid(*ecast.getRe()) == typeid(Entier))
{
Entier* ccast = dynamic_cast<Entier *>(ecast.getRe());
Reel* tmp = new Reel(this->getX() * (float)ccast->getX());
Reel* tmpim = new Reel(this->getXAsFloat() * ecast.getIm()->getXAsFloat());
return *(new Complexe(tmp, tmpim));
}
else if(typeid(*ecast.getRe()) == typeid(Reel))
{
Reel* tmp = new Reel(this->getX() * ecast.getRe()->getXAsFloat());
Reel* tmpim = new Reel(this->getXAsFloat() * ecast.getIm()->getXAsFloat());
return *(new Complexe(tmp, tmpim));
}
else if(typeid(*ecast.getRe()) == typeid(Rationnel))
{
Reel* tmp = new Reel(this->getX()*(ecast.getRe()->getXAsFloat()/ecast.getRe()->getYAsFloat()));
Reel* tmpim = new Reel(this->getXAsFloat()* (ecast.getIm()->getXAsFloat()/ecast.getIm()->getYAsFloat()));
return *(new Complexe(tmp, tmpim));
}
else{}
}
else if(typeid(e) == typeid(Entier))
{
Entier& ecast = dynamic_cast<Entier &>(e);
return *(new Reel(this->getX() * (float)ecast.getX()));
}
else if(typeid(e) == typeid(Expression))
{
Expression& ecast = dynamic_cast<Expression &>(e);
return *(new Expression( this->toQString() + ' ' + ecast.getX() + ' * '));
}
else if(typeid(e) == typeid(Rationnel))
{
Rationnel& rcast = dynamic_cast<Rationnel &>(e);
return *(new Reel(this->getX()*(rcast.getXAsFloat()/rcast.getYAsFloat())));
}
else if(typeid(e) == typeid(Reel))
{
Reel& rcast = dynamic_cast<Reel &>(e);
return *(new Reel(this->getX()*rcast.getX()));
}
else{}
}
}
示例6: ComputerException
Litterale* OpMod::fonctionNum(Nombres *arg1, Litterale *arg2){
Entier* n1 = dynamic_cast<Entier*>(arg1);
Entier* n2 = dynamic_cast<Entier*>(arg2);
if (n1 == nullptr || n2 == nullptr)
throw ComputerException("Arguments invalides");
int val = (int)n1->getValue()%(int)n2->getValue();
Entier* res = new Entier(val);
if (n1->getNeg() || n2->getNeg())
res->setNeg(true);
return res;
}
示例7: mean
Element* Calculateur::mean()
{
Entier* e = dynamic_cast<Entier*>(this->pop());
unsigned int i;
for(i=0;i<e->getXAsInt()-1;i++)
{
this->addition();
}
Reel* div = new Reel(i+1);
Element* sum = this->pop();
Element* res = this->cast(&(sum->operator /(*div)));
delete div;
delete sum;
this->push(res);
}
示例8: Entier
Element& Entier::operator-(Element& e)
{
if(typeid(e) == typeid(Complexe))
{
Complexe& ecast = dynamic_cast<Complexe &>(e);
if(typeid(ecast.getRe()) == typeid(Entier*))
{
Entier* ccast = dynamic_cast<Entier *>(ecast.getRe());
Entier* tmp = new Entier(this->getX() - ccast->getX());
return *(new Complexe(tmp, ecast.getIm()->clone()));
}
else if(typeid(ecast.getRe()) == typeid(Reel*))
{
Reel* rcast = dynamic_cast<Reel *>(ecast.getRe());
Reel* tmp = new Reel((float) this->getX() - rcast->getX());
return *(new Complexe(tmp, ecast.getIm()->clone()));
}
else if(typeid(ecast.getRe()) == typeid(Rationnel*))
{
Rationnel* rcast = dynamic_cast<Rationnel *>(ecast.getRe());
Rationnel* tmp = new Rationnel(this->getX()*rcast->getY() - rcast->getX(), rcast->getY());
return *(new Complexe(tmp, ecast.getIm()->clone()));
}
}
else if(typeid(e) == typeid(Entier))
{
Entier& ecast = dynamic_cast<Entier &>(e);
return *(new Entier(this->getX() - ecast.getX()));
}
else if(typeid(e) == typeid(Expression))
{
Expression& ecast = dynamic_cast<Expression &>(e);
return *(new Expression( this->toQString() + ' ' + ecast.getX() + ' - '));
}
else if(typeid(e) == typeid(Rationnel))
{
Rationnel& rcast = dynamic_cast<Rationnel &>(e);
return *(new Rationnel(this->getX()*rcast.getY() - rcast.getX(), rcast.getY()));
}
else if(typeid(e) == typeid(Reel))
{
Reel& rcast = dynamic_cast<Reel &>(e);
return *(new Reel((float)this->getX() - rcast.getX()));
}
}
示例9: simplifier
int simplifier(Entier a, Entier b){
Entier& test = a.mod(b);
if (test.getValue() == 0){
return 1;
} else return 0;
}
示例10: CalculatriceException
Nombre& Entier::division(const Nombre& n) const {
// Nombre -> Entier
const Entier* ptEntier = dynamic_cast<const Entier*>(&n);
if (ptEntier == 0) {
// Nombre -> Reel
const Reel* ptReel = dynamic_cast<const Reel*>(&n);
if (ptReel == 0) {
// Nombre -> Rationnel
const Rationnel* ptRationnel = dynamic_cast<const Rationnel*>(&n);
if (ptRationnel == 0) {
throw CalculatriceException("Entier : division : Impossible d'effectuer le dynamic cast!");
} else { // Entier / Rationnel
if (ptRationnel->getNum().getX()/ptRationnel->getDen().getX()==0) {
throw CalculatriceException("Entier : division : Division par 0");
}
Entier num = Entier(mX * ptRationnel->getDen().getX());
Entier den = Entier(ptRationnel->getNum().getX());
Rationnel* res= new Rationnel(num.toEntier(), den.toEntier());
res->simplifier();
Nombre& ref = *res;
return(ref);
}
} else { // Entier / Reel
if (ptReel->getX()==0) {
throw CalculatriceException("Entier : division : Division par 0");
}
Nombre& ref = this->division(ptReel->toRationnel());
return(ref);
}
} else { // Entier / Entier
if (ptEntier->getX()==0) {
throw CalculatriceException("Entier : division : Division par 0");
}
Reel* res = new Reel(mX / ptEntier->getX());
Nombre& ref = *res;
return(ref);
}
}
示例11: getSum
void CalculatriceModele::getSum(int type){
if(pile.size()>=1){
Constante* a = pile.pop();
if(typeid (*a).name()==typeid (Entier).name()){
Entier* e = dynamic_cast<Entier*>(a);
int k = e->GetEntier();
if(pile.size()>=k)
{
for(int i=0; i<k-1; i++){
emit getAdd(type);
}
Constante* res = pile.pop();
pile.push(res);
if(typeid (*res).name()==typeid (Expression).name()){
emit getExpression();
}
}
else {
logger1->Write(&LogMessage(ERROR,"pas assez d'expressions"));
logger2->Write(&LogMessage(ERROR,"pas assez d'expressions"));
pile.push(a);}
}else{
pile.push(a);
logger1->Write(&LogMessage(ERROR,"type non conforme"));
logger2->Write(&LogMessage(ERROR,"type non conforme"));
}
emit finOp(&pile);
}
else{
logger1->Write(&LogMessage(ERROR,"taille pile insuffisante"));
logger2->Write(&LogMessage(ERROR,"taille pile insuffisante"));
}
}
示例12: savePileAvtExe
void CommandeDivision::execute()throw(LogMessage){
savePileAvtExe();
Constante* c1;
Constante* c2;
try{
c1 = _pileCourante->depiler();
c2 = _pileCourante->depiler();
if(typeid(*c1)==typeid(Expression) && typeid(*c2)==typeid(Expression)){
throw LogMessage("addition(): impossible d'appliquer un operateur sur 2 expressions",1);
}
if (typeid(*c1)==typeid(Expression)){
Expression* oldExpr=dynamic_cast<Expression*>(c1);
QString oldChaine=oldExpr->getExp();
QString newChaine;
if(typeid(*c2)!=typeid(Complexe)){
Nombre* nb=dynamic_cast<Nombre*>(c2);
newChaine = nb->toQString();
}
else{
Complexe* nb=dynamic_cast<Complexe*>(c2);
newChaine = nb->toQString();
}
oldChaine.remove(oldChaine.length()-1,1);
_pileCourante->empilerExpression(oldChaine.append(" "+newChaine+" "+'/'+'\''));
}
else if (typeid(*c2)==typeid(Expression)){
Expression* oldExpr=dynamic_cast<Expression*>(c2);
QString oldChaine=oldExpr->getExp();
QString newChaine;
if(typeid(*c1)!=typeid(Complexe)){
Nombre* nb=dynamic_cast<Nombre*>(c1);
newChaine = nb->toQString();
}
else{
Complexe* nb=dynamic_cast<Complexe*>(c1);
newChaine = nb->toQString();
}
oldChaine.remove(oldChaine.length()-1,1);
_pileCourante->empilerExpression(oldChaine.append(" "+newChaine+" "+'/'+'\''));
}
else{
if(_utilisateur->useComplexe()){
Complexe *co1;
Complexe *co2;
if(typeid(*c1)==typeid(Complexe))
co1 =dynamic_cast<Complexe*>(c1);
else if(typeid(*c1)==typeid(Entier)){
Entier* nb = dynamic_cast<Entier*>(c1);
co1 = nb->toComplexe();
}
else if(typeid(*c1)==typeid(Rationnel)){
Rationnel* nb = dynamic_cast<Rationnel*>(c1);
co1 = nb->toComplexe();
}
else if(typeid(*c1)==typeid(Reel)){
Reel* nb = dynamic_cast<Reel*>(c1);
co1 = nb->toComplexe();
}
if(typeid(*c2)==typeid(Complexe))
co2 = dynamic_cast<Complexe*>(c2);
else if(typeid(*c2)==typeid(Entier)){
Entier* nb = dynamic_cast<Entier*>(c2);
co2 = nb->toComplexe();
}
else if(typeid(*c2)==typeid(Rationnel)){
Rationnel* nb = dynamic_cast<Rationnel*>(c2);
co2 = nb->toComplexe();
}
else if(typeid(*c2)==typeid(Reel)){
Reel* nb = dynamic_cast<Reel*>(c2);
co2 = nb->toComplexe();
}
if(_utilisateur->useEntier()){
co1->attrToEntier();
co2->attrToEntier();
}
else if(_utilisateur->useRationnel()){
co1->attrToRationnel();
co2->attrToRationnel();
}
else if(_utilisateur->useReel()){
co1->attrToReel();
co2->attrToReel();
}
if(co1->getReel()==0 && co2->getImg()==0)
throw LogMessage("division(): impossible de diviser par 0",1);
else{
Complexe * res = *(co1)/co2;
_pileCourante->empilerConstante(res);
savePileApresExe();
}
}
//.........这里部分代码省略.........
示例13: mod
Entier Entier::mod(Entier e){return n%e.GetEntier();}
示例14:
Entier::Entier(const Entier &e)
{
this->value = e.getValue();
}
示例15: res
Entier operator+(Entier& a, Entier& b){
double valeur=a.getVal()+b.getVal();
Entier res(valeur);
return res;
}