0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 6
|
|
1 | |
Напишите процедуру на языке VBA, которая определяет сократимость дроби22.04.2017, 23:34. Показов 1095. Ответов 3
Метки нет (Все метки)
Помогите ,пожалуйста, с написанием программы на языке VBA.
Вот условие: Напишите процедуру на языке VBA, которая определяет сократимость дроби a/b (b≠0) . Вычисление наибольшего общего делителя чисел a и b оформить в виде функции. Исходные данные: 1. a=2, b=0 1 Результат: 1. Неверно введено b 2. a=3, b=5 3. a=6, b=8 2. Дробь 3/5 не сократима 3. Дробь 6/8 сократима на 2 Вот немного начала (может и не правильно): Function НОД(a, b) While a <> b If a > b Then a = a - b Else b = b - a End If Wend НОД = a End Function Sub List6_11() Dim a As Long, b As Long, НОД As Variant a = CDbl(InputBox("Введите a", "Исходные данные")) b = CDbl(InputBox("Введите b", "Исходные данные")) If b = 0 Then MsgBox "Неверно введено b" If НОД =(a,b) Then MsgBox "Дробь" & a / b & ("сокротима на ") & f End Sub
0
|
22.04.2017, 23:34 | |
Ответы с готовыми решениями:
3
Определить сократимость дроби Напишите программу, которая сортирует массив по убыванию суммы цифр числа. Используйте функцию, которая определяет сумму Создайте процедуру, которая делит дроби Напишите программу, которая определяет время суток |
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
||||||
23.04.2017, 09:51 | 2 | |||||
1
|
0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 6
|
|
23.04.2017, 22:06 [ТС] | 3 |
спасибо , а можете подсказать как правльно написать примерно так (другие MsgBox немного нужны )
Function GCD(ByVal a As Long, ByVal b As Long) As Long Dim i& GCD = 1 If a < 2 Or b < 2 Then Exit Function If Not (a Mod 2) Then If Not (b Mod 2) Then Do Until (a Mod 2) Or (b Mod 2) GCD = GCD * 2 a = a \ 2: b = b \ 2 Loop End If End If i = 3 Do Until (i > a) Or (i > b) Do Until (a Mod i) Or (b Mod i) GCD = GCD * i a = a \ i: b = b \ i Loop i = i + 2 Loop End Function Sub List6_11() Dim a&, b&, s$ s = InputBox("Введите числитель") If s = "" Then Exit Sub a = Abs(Val(s)) Denominator: s = InputBox("Введите знаменатель") If s = "" Then Exit Sub b = Abs(Val(s)) If b = 0 Then MsgBox "Неверно введено b": GoTo Denominator MsgBox ("Дробь " & a & "/" & b & "сократима на" & GCD(a, b)) MsgBox ("Дробь" & a & "/" & b & " не сократима ") End Sub Добавлено через 9 часов 25 минут Homarty, спасибо , а можете подсказать как правльно написать примерно так (другие MsgBox немного нужны ) Function GCD(ByVal a As Long, ByVal b As Long) As Long Dim i& GCD = 1 If a < 2 Or b < 2 Then Exit Function If Not (a Mod 2) Then If Not (b Mod 2) Then Do Until (a Mod 2) Or (b Mod 2) GCD = GCD * 2 a = a \ 2: b = b \ 2 Loop End If End If i = 3 Do Until (i > a) Or (i > b) Do Until (a Mod i) Or (b Mod i) GCD = GCD * i a = a \ i: b = b \ i Loop i = i + 2 Loop End Function Sub List6_11() Dim a&, b&, s$ s = InputBox("Введите числитель") If s = "" Then Exit Sub a = Abs(Val(s)) Denominator: s = InputBox("Введите знаменатель") If s = "" Then Exit Sub b = Abs(Val(s)) If b = 0 Then MsgBox "Неверно введено b": GoTo Denominator MsgBox ("Дробь " & a & "/" & b & "сократима на" & GCD(a, b)) MsgBox ("Дробь" & a & "/" & b & " не сократима ") End Sub
0
|
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
|||||||||||
23.04.2017, 23:37 | 4 | ||||||||||
[VB]Dim i&
i=GCD(a,b) If i>1 Then MsgBox "Дробь " & a & "/" & b & "сократима на " & i Else MsgBox "Дробь" & a & "/" & b & " не сократима " Добавлено через 22 секунды
Это добавите вместо Msgbox Добавлено через 2 минуты Пропустил в конце кода
0
|
23.04.2017, 23:37 | |
23.04.2017, 23:37 | |
Помогаю со студенческими работами здесь
4
Напишите программу, которая определяет время в виде «чч:мм» Напишите программу, которая определяет количество элементов массива Напишите программу, которая определяет, во что превращаются S рублей Напишите программу, которая определяет наибольшее число в файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |