Сложение и вычитание обыкновенных дробей - VB

Узнай цену своей работы

Формулировка задачи:

Необходимо составить

программу обучения сложению и вычитанию обыкновенных дробей

. Числители и знаменатели дробей записывать в

отдельные

TextBox. В этой же программе необходимо найти НОД и НОК полученноой при ответе дроби.

Решение задачи: «Сложение и вычитание обыкновенных дробей»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. ' Класс Rational
  4. 'Определяет новый тип данных - рациональные числа и основные
  5. 'операции над ними - сложение, вычитание, умножение и деление.
  6. 'Рациональное число задается парой целых чисел (m,n) и изображается,
  7. 'обычно, в виде дроби m/n. Число m называется числителем, а
  8. 'n - знаменателем.  Для каждого рационального числа существует
  9. 'множество его представлений, например, - 1/2, 2/4, 3/6, 4/8, …
  10. 'задают одно и тоже рациональное число. Среди всех представителей
  11. 'можно выделить то, в котором числитель и знаменатель несократимы.
  12. 'Именно такие представители будут храниться в нашем классе.
  13. 'Операции над рациональными числами определяются естественным
  14. 'образом.Лучшим их описанием будут соответствующие им методы.
  15.  
  16. 'Свойства класса Rational
  17. Private m As Integer    'числитель
  18. Private n As Integer    'знаменатель
  19.  
  20. 'Конструкторы класса Rational
  21. Private Sub Class_Initialize()
  22. 'Конструктор по умолчанию
  23. 'инициализирует рациональное число дробью 1/1
  24.   m = 1
  25.    n = 1
  26. End Sub
  27.  
  28. Public Sub CreateRational(ByVal a As Integer, ByVal b As Integer)    ' собственный конструктор
  29. 'Собственный конструктор
  30. 'Выполняет довольно сложные действия,
  31. 'прежде чем свойства получат значения
  32.   Dim d As Integer    'Наибольший общий делитель a и b
  33.   If b = 0 Then
  34.       MsgBox " Ошибка при создании рационального числа!" _
  35.              & Chr(13) & "Знаменатель не должен равняться 0."
  36.    Else
  37.       ' приведение знака
  38.      If b < 0 Then
  39.          b = -b: a = -a
  40.       End If
  41.       ' приведение к несократимой дроби
  42.      d = nod(a, b)       ' d - НОД(a,b)
  43.      m = a \ d
  44.       n = b \ d
  45.    End If
  46. End Sub
  47. ' Скрытая функция вычисления НОД(m,n)
  48. Private Function nod(ByVal m As Integer, ByVal n As Integer) As Integer
  49.    Dim p As Integer
  50.    m = Abs(m): n = Abs(n)
  51.    If n > m Then
  52.       p = m: m = n: n = p
  53.    End If
  54.    Do
  55.       p = m Mod n: m = n: n = p
  56.    Loop Until n = 0
  57.    nod = m
  58. End Function
  59.  
  60.  
  61.  
  62. Public Function Plus(a As Rational) As Rational
  63.    Dim d As Integer, u As Integer, v As Integer
  64.    Dim R As New Rational
  65.    u = m * a.Знаменатель + n * a.Числитель
  66.    v = n * a.Знаменатель
  67.    d = nod(u, v)
  68.    R.Числитель = u \ d
  69.    R.Знаменатель = v \ d
  70.    Set Plus = R
  71.  
  72. End Function
  73. Public Function Minus(a As Rational) As Rational
  74.    Dim d As Integer, u As Integer, v As Integer
  75.    Dim R As New Rational
  76.    u = m * a.Знаменатель - n * a.Числитель
  77.    v = n * a.Знаменатель
  78.    d = nod(u, v)
  79.    R.Числитель = u \ d
  80.    R.Знаменатель = v \ d
  81.    Set Minus = R
  82.  
  83. End Function
  84. Public Function Mult(a As Rational) As Rational
  85.    Dim d As Integer, u As Integer, v As Integer
  86.    Dim R As New Rational
  87.    u = m * a.Числитель
  88.    v = n * a.Знаменатель
  89.    d = nod(u, v)
  90.    R.Числитель = u \ d
  91.    R.Знаменатель = v \ d
  92.    Set Mult = R
  93.  
  94. End Function
  95. Public Function Divide(a As Rational) As Rational
  96.    Dim d As Integer, u As Integer, v As Integer
  97.    Dim R As New Rational
  98.    u = m * a.Знаменатель
  99.    v = n * a.Числитель
  100.    If v = 0 Then
  101.       MsgBox ("деление на нуль невозможно")
  102.    Else
  103.       d = nod(u, v)
  104.       R.Числитель = u \ d
  105.       R.Знаменатель = v \ d
  106.       Set Divide = R
  107.    End If
  108. End Function
  109.  
  110. Public Sub PrintRational()
  111.    Debug.Print (m & "/" & n)
  112. End Sub
  113.  
  114. Public Property Get Числитель() As Integer
  115.    Числитель = m
  116. End Property
  117.  
  118.  
  119. Public Property Get Знаменатель() As Integer
  120.    Знаменатель = n
  121. End Property
  122.  
  123. Public Property Let Числитель(ByVal NewValue As Integer)
  124.    CreateRational NewValue, n
  125. End Property
  126.  
  127.  
  128. Public Property Let Знаменатель(ByVal NewValue As Integer)
  129.    CreateRational m, NewValue
  130. End Property

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы