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

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

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

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

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

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

отдельные

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

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

textual
Листинг программы
Option Explicit
 
' Класс Rational
'Определяет новый тип данных - рациональные числа и основные
'операции над ними - сложение, вычитание, умножение и деление.
'Рациональное число задается парой целых чисел (m,n) и изображается,
'обычно, в виде дроби m/n. Число m называется числителем, а
'n - знаменателем.  Для каждого рационального числа существует
'множество его представлений, например, - 1/2, 2/4, 3/6, 4/8, …
'задают одно и тоже рациональное число. Среди всех представителей
'можно выделить то, в котором числитель и знаменатель несократимы.
'Именно такие представители будут храниться в нашем классе.
'Операции над рациональными числами определяются естественным
'образом.Лучшим их описанием будут соответствующие им методы.
 
'Свойства класса Rational
Private m As Integer    'числитель
Private n As Integer    'знаменатель
 
'Конструкторы класса Rational
Private Sub Class_Initialize()
'Конструктор по умолчанию
'инициализирует рациональное число дробью 1/1
   m = 1
   n = 1
End Sub
 
Public Sub CreateRational(ByVal a As Integer, ByVal b As Integer)    ' собственный конструктор
'Собственный конструктор
'Выполняет довольно сложные действия,
'прежде чем свойства получат значения
   Dim d As Integer    'Наибольший общий делитель a и b
   If b = 0 Then
      MsgBox " Ошибка при создании рационального числа!" _
             & Chr(13) & "Знаменатель не должен равняться 0."
   Else
      ' приведение знака
      If b < 0 Then
         b = -b: a = -a
      End If
      ' приведение к несократимой дроби
      d = nod(a, b)       ' d - НОД(a,b)
      m = a \ d
      n = b \ d
   End If
End Sub
' Скрытая функция вычисления НОД(m,n)
Private Function nod(ByVal m As Integer, ByVal n As Integer) As Integer
   Dim p As Integer
   m = Abs(m): n = Abs(n)
   If n > m Then
      p = m: m = n: n = p
   End If
   Do
      p = m Mod n: m = n: n = p
   Loop Until n = 0
   nod = m
End Function
 
 
 
Public Function Plus(a As Rational) As Rational
   Dim d As Integer, u As Integer, v As Integer
   Dim R As New Rational
   u = m * a.Знаменатель + n * a.Числитель
   v = n * a.Знаменатель
   d = nod(u, v)
   R.Числитель = u \ d
   R.Знаменатель = v \ d
   Set Plus = R
 
End Function
Public Function Minus(a As Rational) As Rational
   Dim d As Integer, u As Integer, v As Integer
   Dim R As New Rational
   u = m * a.Знаменатель - n * a.Числитель
   v = n * a.Знаменатель
   d = nod(u, v)
   R.Числитель = u \ d
   R.Знаменатель = v \ d
   Set Minus = R
 
End Function
Public Function Mult(a As Rational) As Rational
   Dim d As Integer, u As Integer, v As Integer
   Dim R As New Rational
   u = m * a.Числитель
   v = n * a.Знаменатель
   d = nod(u, v)
   R.Числитель = u \ d
   R.Знаменатель = v \ d
   Set Mult = R
 
End Function
Public Function Divide(a As Rational) As Rational
   Dim d As Integer, u As Integer, v As Integer
   Dim R As New Rational
   u = m * a.Знаменатель
   v = n * a.Числитель
   If v = 0 Then
      MsgBox ("деление на нуль невозможно")
   Else
      d = nod(u, v)
      R.Числитель = u \ d
      R.Знаменатель = v \ d
      Set Divide = R
   End If
End Function
 
Public Sub PrintRational()
   Debug.Print (m & "/" & n)
End Sub
 
Public Property Get Числитель() As Integer
   Числитель = m
End Property
 
 
Public Property Get Знаменатель() As Integer
   Знаменатель = n
End Property
 
Public Property Let Числитель(ByVal NewValue As Integer)
   CreateRational NewValue, n
End Property
 
 
Public Property Let Знаменатель(ByVal NewValue As Integer)
   CreateRational m, NewValue
End Property

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


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

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

7   голосов , оценка 4 из 5
Похожие ответы