powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с кодом Do While.. Loop
17 сообщений из 17, страница 1 из 1
Помогите разобраться с кодом Do While.. Loop
    #38644396
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Прошу у вас о помощи. Так как я совсем недавно начала разбираться с языком vba, то очень трудно. И столкнулась с ситуацией, когда в конце не выдается ответ - выдается окошко, но без какого-либо результата. Помогите, пожалуйста, найти ошибку в коде

Код: vbnet
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.
Private Sub Command1_Click(Index As Integer)
Dim n As Integer, s As String, v As Single
Dim y1 As Variant, y2 As Variant, x1 As Variant, x2 As Variant, a1 As Variant, b1 As Variant
Const a As Variant = 0.01, b As Long = 1000, e As Double = 0.01, pi As Double = 3.141592654
 x1 = a: x2 = b: n = 0
 s = Text1.Text
 v = Val(s)
Do While Abs(x1 - x2) <= 2 * e
 n = n + 1: a1 = x1: b1 = x2
 x1 = (x1 + x2) / 2 - e / 2: x2 = (x1 + x2) / 2 + e / 2
 y1 = pi * x1 ^ 3 + pi * x1 * (3 * v / (pi * x1 ^ 2)) ^ 2 + pi * x1 ^ 2
 y2 = pi * x2 ^ 3 + pi * x2 * (3 * v / (pi * x2 ^ 2)) ^ 2 + pi * x2 ^ 2
 If y1 < y2 Then
 a1 = a1: b1 = x2
 End If
 If y1 = y2 Then
 a1 = x1: b1 = x2
 End If
 If y1 > y2 Then
 a1 = x2: b1 = b1
 End If
Loop
x1 = a1: x2 = b1
MsgBox ответ, vbOKOnly, "Расчитанные параметры"
End Sub

Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644421
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
na_styush_aне выдается ответ
Код: vbnet
1.
MsgBox ответ, vbOKOnly, "Расчитанные параметры"

Почему не выдается? Выдается, как раз содержимое переменной "ответ". А что вы в нее положили?
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644435
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
x1 и x2 должны быть в ответе, но только уже после прохождения всего цикла столько раз, чтобы в конце удовлетворяло условию Abs(x1 - x2) <= 2 * e
А что нужно написать вместо слова "Ответ"?)
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644436
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С ответом разобралась,теперь выдает результат, но он не зависит от вводимого v
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644439
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
na_styush_aон не зависит от вводимого v
Код: vbnet
1.
v = Val(s)

а где тут, собственно, вводится v? и вообще, где тут хоть что-то вводится?
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644441
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
s = Text1.Text
v = Val(s)

v - это единственная переменная, которая меняется, все остальные константы уже записаны в условии Const a As Variant = 0.01, b As Long = 1000, e As Double = 0.01, pi As Double = 3.141592654
может его нужно как-то по-другому вписать? в других формах этой же программы такой код прокатил
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644443
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
условие Abs(x1 - x2) <= 2 * e не срабатывает сразу, поэтому внутри цикла While ничего не выполняется

Поставьте точку останова в начале программы и проследите по шагам, как она работает
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644446
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,
Abs(x1 - x2) <= 2 * e
с этим тоже разобралась, в условии нужно было знак > поставить;
проверила код по шагам, делаете ее несколько раз и выдает результат, при этом результат абсолютно не зависит от вводимого значения v
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644464
скуотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OFFЛюбопытно, что за алгоритм.
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644469
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скуотища,
нахождение оптимальных геометрических параметров по методу дихотомии
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644472
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
OFFna_styush_aскуотища,
нахождение оптимальных геометрических параметров по методу дихотомии
Упс... Наверное я эти лекциии в своё время прогулял. Из всех букв узнал только "методом дихотомии".

Из кода понятно только, что есть некая функция с параметром. Надо рассчитать что-то в завичимости от параметра...
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644474
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,
эх у меня и лекций то таких не было, я вообще не с кафедры программирования, а вот на дипломе столкнулась с тем, что нужно написать программу, вот и осваиваю в быстром (мега-быстром) темпе . Да только даже не с кем посоветоваться и спросить! Одна отрада - форум
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644477
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
na_styush_a,
"оптимальные геометрические параметры" это что такое?
Спрашивал у гугла - отсылает на "Расчет оптимальных геометрических параметров акустических антенн в системах технического слуха" .

ЗЫ: понимал бы, что Вам надо от программы - было бы проще что-то советовать.
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644481
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,

у меня есть исходный объем, который можно менять, вписывая нужное значение в Text1. И есть формула с помощью которой рассчитывается радиус. Благодаря методу дихотомии можно определить такой радиус при котором площадь поверхности определенного тела (объем которого мы вписали вначале) будет наименьшей. Вот как то так...
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644487
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
na_styush_a,
при такой постановке задачи не хватает зависимости поверхности тела от "радиуса".
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644497
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,

y1 = pi * x1 ^ 3 + pi * x1 * (3 * v / (pi * x1 ^ 2)) ^ 2 + pi * x1 ^ 2
y2 = pi * x2 ^ 3 + pi * x2 * (3 * v / (pi * x2 ^ 2)) ^ 2 + pi * x2 ^ 2

вместо y1 и y2 используется как раз площадь поверхности
...
Рейтинг: 0 / 0
Помогите разобраться с кодом Do While.. Loop
    #38644512
na_styush_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем принявшим участие огромнейшее спасибо! Получилось сделать - скажем так методом научного тыка и с помощью дельных советов и рекомендаций получилось!!! ура)) Спасибо
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите разобраться с кодом Do While.. Loop
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]