Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 27
1

Проверка InputBox с использованием Property метода

02.11.2017, 09:06. Показов 981. Ответов 17

Author24 — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Cub()
Dim C As New Class1
Dim A As Variant
Dim B As Integer
A = InputBox("Введите число для возведения в куб")
If Not IsNumeric(A) Then
MsgBox ("Не верное значение")
Else
B = A * A * A
MsgBox "Число в кубе  = " & B
Set C = Nothing
End If
End Sub
строку 5,6,7 нужно в Class модуль сделать, сам многое перепробывал, только учусь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2017, 09:06
Ответы с готовыми решениями:

Не заносится значение с использованием InputBox
Добрый день! я новенький в делфи и поэтому вызывается затруднение во следующем строкой кода ...

Проверка корректности ввода даты InputBox
Добрый день. Есть вопрос. Я прошу пользователей вводить дату через inputBox. В сообщении конечно...

Проверка на число в InputBox вызывает ошибку
a = InputBox("a") Do While Not IsNumeric(a) MsgBox "Ошибка" a = InputBox("a") Loop b =...

Проверка на допустимость вводимых значений в TextBox и в Inputbox
Есть программа, но не знаю как сделать так чтобы пользователь вводил только числа в TextBox и в...

17
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
02.11.2017, 09:52 2
Цитата Сообщение от EgorP Посмотреть сообщение
строку 5,6,7 нужно в Class модуль сделать, сам многое перепробывал, только учусь
Сделай метод в классе и в него засунь нужный код, вызывай как C.MethodName
1
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
02.11.2017, 11:55 3
Лучше так писать:
Visual Basic
1
B=A^3
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.11.2017, 12:13 4
Цитата Сообщение от vice4 Посмотреть сообщение
Лучше так писать:
B=A^3
Осмелюсь спросить чем лучше?
Короче запись? А вообще, операция возведения в степень выполняется медленнее умножения, и по этому, при частом обращении, как раз таки рекомендуют заменять её умножением.
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
02.11.2017, 12:31 5
Цитата Сообщение от Pro_grammer Посмотреть сообщение
операция возведения в степень выполняется медленнее умножения, и по этому, при частом обращении, как раз таки рекомендуют заменять её умножением
Пруф есть?
0
285 / 213 / 42
Регистрация: 04.02.2015
Сообщений: 1,344
02.11.2017, 13:25 6
Цитата Сообщение от vice4 Посмотреть сообщение
Пруф есть?
Рука лицо!
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.11.2017, 16:52 7
Цитата Сообщение от vice4 Посмотреть сообщение
Пруф есть?
Практика сила.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
s = Timer
For i = 1 To 1000000
c = 10 ^ 3
Next
Print Timer - s
End Sub
Private Sub Command2_Click()
s = Timer
For i = 1 To 1000000
c = 10 * 10 * 10
Next
Print Timer - s
End Sub
При равных условиях у меня примерно в 10 раз возведение в степень медленнее умножения.
1
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
02.11.2017, 22:50 8
Сочинил функцию для возведения в степень ))
Visual Basic
1
2
3
4
5
6
7
Function Степень(ByVal Num#, ByVal arg#)
    Степень = 1: For arg = 1 To arg: Степень = Степень * Num: Next
End Function
 
Private Sub Form_Load()
    Debug.Print Степень(10, 3)
End Sub
Добавлено через 1 минуту
=1000
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.11.2017, 06:38 9
Цитата Сообщение от fever brain Посмотреть сообщение
Сочинил функцию для возведения в степень
так то оно так, но твоя функция медленнее стандартной ^ в 2.5 раза.
Или в ~25 раз медленнее простого умножения
1
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
03.11.2017, 06:48 10
Цитата Сообщение от Pro_grammer Посмотреть сообщение
в ~25 раз медленнее простого умножения
Честно говоря не проверял, был уверен что работает побыстрее
Скорей всего нужно чтото другое использовать, байтовая перестановка или асемблерные вставки
0
28 / 28 / 4
Регистрация: 07.06.2017
Сообщений: 166
03.11.2017, 08:17 11
Есть еще дихотомический алгоритм возведения в степень. Но не думаю, что он быстрее будет, чем банальное перемножение.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
s = Timer
For i = 1 To 1000000
c = 10 ^ 3
Next
Print Timer - s
End Sub
Private Sub Command2_Click()
s = Timer
For i = 1 To 1000000
c = 10 * 10 * 10
Next
Print Timer - s
End Sub
Так-то быстрее, но вот если вместо 10 подставить 2 и возводить 2 в 20 степень, то у меня переполнение. Хотя 2^20 считается. Придется писать так:

Visual Basic
1
2
c = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
c = c * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
Но поскольку нужна универсальная подпрограмма, то я или к использованию степени склоняюсь, или к методу fever brain.
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
03.11.2017, 23:17 12
Выбор за вами.
Миниатюры
Проверка InputBox с использованием Property метода  
2
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
04.11.2017, 05:48 13
Цитата Сообщение от vice4 Посмотреть сообщение
возводить 2 в 20 степень, то у меня переполнение
Цитата Сообщение от vice4 Посмотреть сообщение
Придется писать так:

Visual Basic
1
   c = 2& * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2
1
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
04.11.2017, 06:34 14
Цитата Сообщение от SoftIce Посмотреть сообщение
c = 2& * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * . . . .
Проявите фантазию ребята
Visual Basic
1
2
3
4
5
6
7
8
Function СтепеньScript(ByVal Num#, ByVal Arg#)
    Static Script As Object: Do While Script Is Nothing: Set Script = CreateObject("MSScriptControl.ScriptControl"): Exit Do: Loop: Script.Language = "VBScript"
    СтепеньScript = Script.eval(Mid$(Replace(Space(Arg), " ", "*" & Num), 2))
End Function
 
Private Sub Form_Load()
    Debug.Print СтепеньScript(10, 3)
End Sub
Добавлено через 2 минуты
= 1000
0
6804 / 2831 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
04.11.2017, 06:37 15
Ребята, во всём нужна мера
Если 1 или 100 раз вычислить степень, то конечно, вполне подойдет стандартная функция ^
Разницу во времени ни кто не заметит.
А вот к примеру в играх есть формула, которая определяет коллизии объектов и основана на исчислении расстояний,
там формула
AB = √(xb - xa)^2 + (yb - ya)^2
2 раза вычисляется степень и применять эту формулу в непрерывном цикле нужно миллионы раз подряд для различных объектов на игровом поле.
Вот тут выигрыш во времени очень существенный, если заменить квадрат на умножение.
1
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
04.11.2017, 06:43 16
Цитата Сообщение от Pro_grammer Посмотреть сообщение
AB = √(xb - xa)^2 + (yb - ya)^2
Конечно эту формулу нужно распарсивать с присвоением к переменным сначало результаты корней
затем перемножением, бесспорно что при многократном вызове не следует оставлять так
0
10 / 6 / 0
Регистрация: 06.11.2017
Сообщений: 21
06.11.2017, 20:33 17
Проблема здесь в том что в VB6 насколько мне известно используется вещественное возведение в степень - без разницы какое число стоит справа - целое или дробное.
К тому же в коде ТС вообще используется Variant, так что разговор скорости здесь вообще не имеет смысла.
1
oh my god
1454 / 793 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
09.11.2017, 13:11 18
Давно хотел поставить Вам отзыв, но почемуто не могу этого сделать, возможно какойто баг на форуме
но знайте я это сделаю !
0
09.11.2017, 13:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2017, 13:11
Помогаю со студенческими работами здесь

Как обратится к non static property из static метода
День добрый, сразу вопрос static - как правильно статический или статичный? У меня есть некий...

Выполнить с использованием данного метода
public static int Members(int value) { if (value <= 0) ...

Проблема с использованием метода VK.Group
Ребята хочу на лист бокс вывести группы юзера ! Но за место этого мне цикл наваливает вот такую...

Проверка метода Гаусса
Написала программу решения СЛАУ методом Гаусса. Я в программировании новичек, написать написала, но...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru