Example #1
0
Litteral& Rationnel::operator/(const Rationnel & l) const {
    //diviser c'est multiplier par l'inverse
    double tmp = (getNumerator()*l.getDenominator())/(getDenominator()*l.getNumerator());
    if (isInt(tmp))
        return LitteralManager::getInstance().addEntier(static_cast<int>(tmp));
    QString s;
    s = QString("%1/%2").arg(getNumerator()*l.getDenominator()).arg(getDenominator()*l.getNumerator());
    return LitteralManager::getInstance().addRationnel(s);
}
Example #2
0
Litteral& Rationnel::operator*(const Rationnel & l) const {
    //si le nouveau dénominateur vaut 1, alors on ajoute un entier
    double tmp = (getNumerator()*l.getNumerator())/(getDenominator()*l.getDenominator());
    if (isInt(tmp))
        return LitteralManager::getInstance().addEntier(static_cast<int>(tmp));
    //Sinon on fait un rationnel
    QString s;
    s = QString("%1/%2").arg(getNumerator()*l.getNumerator()).arg(getDenominator()*l.getDenominator());
    return LitteralManager::getInstance().addRationnel(s);
}
Example #3
0
RationalNumber RationalNumber::operator*(const RationalNumber &r) const {
   RationalNumber temp;

   if (r.getNumerator() == 0) {
      temp.setValue(0,1);
      return temp;
   }
   if (getNumerator() == 0) {
      temp.setValue(0,1);
      return temp;
   }


   int a = this->_num;
   int b = this->_den;
   int c = r._num;
   int d = r._den;
   int gcd_val = gcd( a, d );
   int gcd_val2 = gcd( b, c );
   a /= gcd_val;
   d /= gcd_val;
   b /= gcd_val2;
   c /= gcd_val2;
   temp._num = a * c;
   temp._den = b * d;
   return temp;
}
Example #4
0
Litteral& Rationnel::operator/(const Entier& l) const {
    double tmp = l.getValue()/getValue();
    if (isInt(tmp))
        return LitteralManager::getInstance().addEntier(static_cast<int>(tmp));
    QString s;
    s = QString("%1/%2").arg(getNumerator()).arg(getDenominator()*l.getValue());
    return LitteralManager::getInstance().addRationnel(s);
}
Example #5
0
Litteral& Rationnel::operator*(const Entier& l) const {
    double tmp = l.getValue()*getValue();
    //Si le double résultant n'a plus de partie décimale, alors on le transforme en entier
    if (isInt(tmp))
        return LitteralManager::getInstance().addEntier(static_cast<int>(tmp));
    //Sinon on ajoute en tant que rationnel comme prévu
    QString s;
    s = QString("%1/%2").arg(l.getValue()*getNumerator()).arg(getDenominator());
    return LitteralManager::getInstance().addRationnel(s);
}
Example #6
0
void RationalNumber::invert(void) {
   int top = getNumerator();
   int bot = getDenominator();

   if (top == 0) {
      return;
   }

   setValue(bot, top);
}
Example #7
0
Litteral& Rationnel::operator-(const Reel & l)  const {
    double d = getNumerator() / getDenominator();
    return LitteralManager::getInstance().addReel(l.getValue()-d);
}
Example #8
0
Litteral& Rationnel::operator-(const Entier& l) const {
    QString s;
    s = QString("%1/%2").arg(l.getValue()*getDenominator()-getNumerator()).arg(getDenominator());
    return LitteralManager::getInstance().addRationnel(s);
}
Example #9
0
RationalNumber RationalNumber::getInversion(void) const {
   RationalNumber anumber(getDenominator(), getNumerator());
   return anumber;
}