Сложение и вычитание обыкновенных дробей - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д