Вход в систему
РФЭИ/ИТ
Неправильные дроби Практика: обыкновенные дроби Язык программирования Scala
Сократимость Арифметические операции

Неправильные дроби

У неправильной дроби модуль числителя больше или равен модулю знаменателя.

Добавим метод isImproper:

def isImproper = math.abs(numerator) >= math.abs(denominator)

Класс должен поддерживать вычисление целой части и остатка неправильной дроби.

Добавим метод integer, возвращающий целую часть дроби (результат целочисленного деления числителя на знаменатель):

def integer: Int = numerator / denominator

Также добавим метод remainder, возвращающий остаток от деления в виде дроби:

def remainder: Fraction = new Fraction(numerator % denominator, denominator)

Представление неправильной дроби: алгебраическая запись в виде суммы или разности целой части и остатка.

Добавим метод toImproperString, который реализует этот пункт спецификации:

def toImproperString =
  if (!isImproper) toString
  else {
    var result = ""
    val i = integer
    val r = remainder
    result += i
    if (r.numerator != 0) {
      if (i > 0)
        result += " + "
      else result += " - "
      result += r.abs.toString
    }
    result
  }

Изучите принцип его действия самостоятельно. Попробуйте упростить его.

Проверка

val f1 = new Fraction(8,-6)
f1: Fraction = -8/6
f1.isImproper
res0: Boolean = true
f1.integer
res0: Int = -1
f1.remainder
res0: sandbox.Fraction = -2/6
f1.toImproperString
res0: String = -1 - 2/6
Сократимость Арифметические операции
2012 © ООО «Территория Образования»
Сделано с помощью Circumflex