С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
27 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 4

Даны 2 натуральных числа M и N.Вывести старшую цифру дробной части и младшую цифру целой части числа M/N

17.11.2010, 15:05. Показов 4115. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста написать программки в VBA:

1)Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N (дробную часть округлить до 0,000001).

2)Составить программу, позволяющую получить словесное описание школьных отметок (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2010, 15:05
Ответы с готовыми решениями:

Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Даны натуральные числа M и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N. Тему считаю полезной,...

Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Сделала программу по заданию, но почему-то результат выводит целочисленный, когда ввожу например числа 3 и 2. Результат должен получится...

Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N.Pascal

11
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
17.11.2010, 16:10
2:
Visual Basic
1
MsgBox Choose(InputBox("Введите оценку:"), "Плохо", "Неудовлетворительно", "Удовлетворительно", "Хорошо", "Отлично")
0
27 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 4
17.11.2010, 20:27  [ТС]
Спасибо! Ещё бы насчёт 1ой задачи кто-нибудь помог...
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.11.2010, 00:18
Ну что значит помог... 2 часа штудировал Кена Гетца — и вот
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Nut() 'выводит цифры частного M и N, примыкающие к десятичному разделителю
Const M = 345, N = -125: Dim PosOfDelimiter As Byte, stroka As String
If N = 0 Then Exit Sub
 
MsgBox "Округлённое до 6-го дробного знака частное M/N = " & FormatNumber(M / N, 6)
 
MsgBox "В виде строки: " & Str(M / N) 'Str всегда использует точку и не пишет нули'
 
PosOfDelimiter = InStr(1, Str(M / N), ".")
 
MsgBox "Позиция разделителя в десятичной записи M/N: " & PosOfDelimiter
 
stroka = Str(M / N)
 
MsgBox "Цифра перед раделителем:" & vbTab & Mid(stroka, PosOfDelimiter - 1, 1) & _
vbCr & "Цифра после раделителя: " & vbTab & Mid(stroka, PosOfDelimiter + 1, 1) & _
vbCr & vbCr & "Исходная дробь: " & _
IIf(M / N < 0, "-", "") & Abs(M) & "/" & Abs(N) & " (" & M / N & ")"
End Sub
0
Частенько бываю
 Аватар для Vlanib
750 / 331 / 42
Регистрация: 20.06.2007
Сообщений: 854
18.11.2010, 05:31
А зачем так сложно?
Visual Basic
1
2
3
4
5
6
Sub Task()
'Даны натуральные числа М и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N (дробную часть округлить до 0,000001).
Dim N, M, iSt As Integer, iMl As Integer, sMsg As String
M = Val(InputBox("M:")): N = Val(InputBox("N:"))
MsgBox FormatNumber(M / N, 6) & vbNewLine & M \ N Mod 10 & "," & Int((M / N - M \ N) * 10)
End Sub
0
27 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 4
18.11.2010, 10:40  [ТС]
Благодарю!

Добавлено через 23 минуты
А насчёт второй задачи есть другие варианты?
0
204 / 43 / 6
Регистрация: 15.10.2010
Сообщений: 125
18.11.2010, 12:05
Цитата Сообщение от Дмитрий В. Посмотреть сообщение
Благодарю!

Добавлено через 23 минуты
А насчёт второй задачи есть другие варианты?
есть и другой вариант, правда не такой короткий. Если правильно поняла, Вам нужно описание вводимого балла?

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub ocen()
 
Dim ball%
Dim chisl
 
chisl = Array("плохо", "неудовлетворительно", "удовлетворительно", "хорошо", "отлично", "такой оценки не существует")
ball = Val(InputBox("Введите оценку"))
MsgBox (chisl(IIf(ball > 5 Or ball < 1, 5, ball - 1)))
 
End Sub
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.11.2010, 13:35
Цитата Сообщение от Vlanib Посмотреть сообщение
А зачем так сложно?
Чтобы работало в нерусифицированной среде (где десятичный разделитель, возможно, точка).

Кроме того, хотел сохранить следы своего продвижения к решению.

Добавлено через 11 минут
Устранил ошибку, возникающую при M=N и при M=-N.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub NutSmart() 'выводит цифры частного M и N, примыкающие к десятичному разделителю
Const M = 125, N = -125: Dim PosOfDelimiter As Byte, stroka As String
If N = 0 Then Exit Sub
 
MsgBox "Округлённое до 6-го дробного знака частное M/N = " & FormatNumber(M / N, 6)
 
MsgBox "В виде строки: " & Str(M / N) 'Str всегда использует точку и не пишет нули'
 
stroka = Str(M / N): If Abs(M) = Abs(N) Then stroka = stroka & ".0"
 
PosOfDelimiter = InStr(1, stroka, ".")
 
MsgBox "Цифра перед раделителем:" & vbTab & Mid(stroka, PosOfDelimiter - 1, 1) & _
vbCr & "Цифра после раделителя: " & vbTab & Mid(stroka, PosOfDelimiter + 1, 1) & _
vbCr & vbCr & "Исходная дробь: " & _
IIf(M / N < 0, "-", "") & Abs(M) & "/" & Abs(N) & " (" & M / N & ")"
End Sub
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.11.2010, 23:50
Но в итоге и это работало неверно; вот окончательный
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub NutStrut() 'выводит цифры частного M и N, примыкающие к десятичному разделителю
Const M = 5000, N = 225
Dim PosOfDelimiter As Byte, stroka As String
If N = 0 Then MsgBox "Деление на 0.", vbExclamation: Exit Sub
 
stroka = Str(M / N) 'Str всегда использует точку и не пишет незначащие нули'
 
PosOfDelimiter = InStr(1, stroka, "."): If Abs(M) = Abs(N) Then stroka = stroka & ".0"
 
If Mid(stroka, PosOfDelimiter - 1, 1) = " " Then stroka = Replace(stroka, " ", "0")
'заменили пробел на 0
 
If Mid(stroka, PosOfDelimiter - 1, 1) = "-" Then
stroka = Replace(stroka, "-", "-0") 'заменили "-" на "-0"
PosOfDelimiter = PosOfDelimiter + 1
End If
 
MsgBox "Цифра перед разделителем:" & vbTab & Mid(stroka, PosOfDelimiter - 1, 1) & _
vbCr & "Цифра после разделителя:" & vbTab & vbTab & Mid(stroka, PosOfDelimiter + 1, 1) & _
vbCr & vbCr & "Исходная дробь: " & _
IIf(M / N < 0, "-", "") & Abs(M) & "/" & Abs(N) & " (" & M / N & ")", vbInformation
End Sub
Вот не пришло же в голову использовать функции Fix или Int! Зато узнал много нового.
Миниатюры
Даны 2 натуральных числа M и N.Вывести старшую цифру дробной части и младшую цифру целой части числа M/N  
0
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
19.11.2010, 14:17
А вот тут я уже сам собой доволен (потратив ещё 40 минут). И не зря!
Visual Basic
1
2
3
4
5
6
7
8
9
Sub Nutrition() 'выводит цифры частного M и N, примыкающие к десятичному разделителю
Const M = 8, N = -5: If N = 0 Then MsgBox "Деление на 0.", vbExclamation: Exit Sub
Dim r As Single: r = M / N
    MsgBox "Перед разделителем:" & vbTab & Abs(Fix(r) Mod 10) & _
    vbCr & "После разделителя:" & vbTab & Abs(Fix((r - Fix(r)) * 10)) & vbCr & _
    vbCr & "Исходная дробь: " & IIf(M / N < 0, "-", "") & _
    Abs(M) & "/" & Abs(N) & " (" & Format(r, "0.000000") & ")", vbInformation
'Fix просто отсекает дробную часть. Если заменить Fix на Int, то при r<0 будут ошибки!
End Sub
Отказ от строковых функций, думаю, тоже в плюс! Спасибо за интересную задачу.

Добавлено через 47 минут
Да, M и N натуральные! Поэтому есть излишества. Но ведь... поэт в России > чем поэт!
1
27 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 4
19.11.2010, 19:55  [ТС]
Это тебе спасибо)))
1
 Аватар для Sasha_Smirnov
5562 / 1370 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
20.11.2010, 22:58
Вы будете смеяться, но предыдущий вариант (в связи с тем, что Format производит округление) иногда врёт! Так что тремя часами мозгового штурма мы не отделались (это что! в 1990-м, на БЭСМ, по 2 семестра уходило!).

А теперь... барабанная дробь...
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Nutria() 'выводит цифры частного M и N, примыкающие к десятичному разделителю
Const M = 888, N = 30
'Const M = -715100000000#, N = 999999
Dim r As Variant: r = CDec(M) / CDec(N)
'Ограничения по модулю:
If Abs(M) > 7.151 * 10 ^ 11 Then MsgBox "M слишком велико.", vbExclamation: Exit Sub
If Abs(N) > 7.151 * 10 ^ 11 Then MsgBox "N слишком велико.", vbExclamation: Exit Sub
If N = 0 Then MsgBox "Деление на 0.", vbExclamation: Exit Sub 'в случае деления на 0
'Результат:
    MsgBox "Перед разделителем:" & vbTab & Abs(Fix(r) Mod 10) & _
    vbCr & "После разделителя:" & vbTab & Abs(Fix((r - Fix(r)) * 10)) & vbCr & _
    vbCr & "Исходная дробь: " & IIf(M / N < 0, "-", "") & _
    Abs(M) & "/" & Abs(N) & " (" & r & ")", vbInformation
'Fix просто отсекает дробную часть. Если заменить Fix на Int, то при r<0 будут ошибки!
End Sub
(И то, в отдельных случаях, округление до 10 в минус 6-й (при r=0,999999...), может дать лажу!)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2010, 22:58
Помогаю со студенческими работами здесь

Вывести старшую цифру дробной части и младшую цифру целой части числа M/N
Люди, помогите, пожайлуста, решить задачи! Кто-какие знает: 1. Даны натуральные числа M и N. Вывести старшую цифру дробной части и...

Вывести старшую цифру дробной части и младшую цифру целой части числа
дыны натуральные числа m и n. вывести старшую цифру дробной части и младшую цифру целой части числа M/N.

Вывести старшую цифру дробной части и младшую цифру целой части числа
Даны натуральные числа M и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N.

Вывести старшую цифру дробной части и младшую цифру целой части числа m/n
Даны натуральные числа m и n вывести старшую цифру дробной части и младшую цифру целой части числа M/N. Хелп

Вывести старшую цифру дробной части и младшую цифру целой части числа
Даны натуральные числа M и N. Вывести старшую цифру дробной части и младшую цифру целой части числа M/N.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru