Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 6

Напишите процедуру на языке VBA, которая определяет сократимость дроби

22.04.2017, 23:34. Показов 1233. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2017, 23:34
Ответы с готовыми решениями:

Определить сократимость дроби
Всем привет:) я тут впервые нашел такой замечательный форум в поиске а теперь к делу... помогите пожалуйста сделать такую...

Напишите программу, которая сортирует массив по убыванию суммы цифр числа. Используйте функцию, которая определяет сумму
Напишите программу, которая сортирует массив по убыванию суммы цифр числа. Используйте функцию, которая определяет сумму цифр числа. ...

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

3
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
23.04.2017, 09:51
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Function GCD(ByVal a As Long, ByVal b As Long) As Long 'greatest common divisor
    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 TestGCD()
    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 "Неправильный знаменатель.": GoTo Denominator
    MsgBox "Наибольший общий делитель дроби " & a & "/" & b & ": " & GCD(a, b)
End Sub
1
0 / 0 / 0
Регистрация: 22.04.2017
Сообщений: 6
23.04.2017, 22:06  [ТС]
спасибо , а можете подсказать как правльно написать примерно так (другие 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
[VB]Dim i&
i=GCD(a,b)
If i>1 Then
MsgBox "Дробь " & a & "/" & b & "сократима на " & i
Else
MsgBox "Дробь" & a & "/" & b & " не сократима "

Добавлено через 22 секунды
Visual Basic
1
2
3
4
5
6
Dim i&
i=GCD(a,b)
If i>1 Then
    MsgBox "Дробь " & a & "/" & b & "сократима на " & i
Else
MsgBox "Дробь" & a & "/" & b & " не сократима "
Добавлено через 1 минуту
Это добавите вместо Msgbox

Добавлено через 2 минуты
Пропустил в конце кода
Visual Basic
1
End If
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2017, 23:37
Помогаю со студенческими работами здесь

Напишите программу, которая определяет время суток
Напишите программу, которая по введенному числу из промежутка 0..24, определяет время суток.

Напишите программу, которая определяет время в виде «чч:мм»
помогите очень надо Известно время вылета самолета: НН часов и ММ минут, а также продолжительность полета (НР часов и МР минут). ...

Напишите программу, которая определяет количество элементов массива
народ ,помогите пожалуйста решить срочно!!! Прошу Вас .....заранее благодарю)). Создайте файл, содержащий массив целых чисел....

Напишите программу, которая определяет, во что превращаются S рублей
Напишите программу, которая определяет, во что превращаются S рублей при инфляции P процентов через N лет. Использование цикла...

Напишите программу, которая определяет наибольшее число в файле
Текстовый файл CISLA.TXT содержит ряд натуральных чисел. Каждое из этих чисел может содержать до 100 десятичных цифр и отображается в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru