Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
 VBA Найти значение функции  [new]
Victorious
Member

Откуда:
Сообщений: 5
Добрый вечер, очень нужна помощь с примером, где нужно найти значение функции m. Сижу над ним с самого обеда и никак не соображу что делать. Наибольшее затруднение вызывает нахождение первой строки, я не понимаю как записать, а раз уж не получается найти первое, то и все последующее не клеится. Помогите пожалуйста.

К сообщению приложен файл. Размер - 26Kb
30 апр 20, 16:42    [22125833]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
miksoft
Member

Откуда:
Сообщений: 38464
8 класс, похоже...

не помню, есть ли min/max в стандартном пакете Math, но если даже нет, то легко делается через if then else endif
да и все остальное делается через if
30 апр 20, 16:56    [22125846]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Victorious
Member

Откуда:
Сообщений: 5
miksoft, проблема в том, что я не могу расписать это... Получается бред сивой кобылы, я бы не стал писать, если бы мог сам, не могли бы вы, пожалуйста,помочь с этим?
30 апр 20, 16:58    [22125848]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
miksoft
Member

Откуда:
Сообщений: 38464
Victorious,

Показывайте ваш код.
30 апр 20, 17:01    [22125853]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Victorious
Member

Откуда:
Сообщений: 5
miksoft, код совершенно неправильный и максимально тупой, еще и не законченный..Вба начали изучать в этом семестре, я первокурсник, доосваивать приходится дома самому..и не очень удачно как видите

Title = "Ввод исходных данных": Vvod = "Введите значение переменных "
10 X = CSng(InputBox(Vvod & " X", Title)) 'Ввод X
Y = CSng(InputBox(Vvod & " Y", Title)) 'Ввод Y
a = CSng(InputBox(Vvod & "a ", Title)) 'Ввод à
b = CSng(InputBox(Vvod & " b", Title)) 'Ввод b
c = CSng(InputBox(Vvod & " c", Title)) 'Ввод c
Dim max, min, max2, d, m As Double
If X > 0 And Y > 2 Then GoTo 1
Else: GoTo 2
End If
1 If max < min Then
max2 = max
Else: c = min
1 If (Log(X) > (X + Y)) Then
   max = Log(X)
Else: max = X + Y
End If
If Math.Cos(1 - ((c * X ^ 2) / b)) < a * X Then
   min = Math.Cos(1 - ((c * X ^ 2) / b))
Else: min = a * X
End If
2 If Y > 0 And X < 0 Then GoTo 3
Else: m = 1 + X ^ 2
End If
If X < Y Then
  d = X
Else
  d = Y
End If
3 m = 1 + Math.Cosx ^ d
End Sub

Модератор: Для оформления кода есть тэг [ SRC ]


Сообщение было отредактировано: 1 май 20, 07:01
30 апр 20, 17:24    [22125868]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Gennadiy Usov
Member

Откуда:
Сообщений: 2204
Victorious,

Запомни правило: никогда не писать сразу всю программу.

У тебя три раза встречается min. Сделай сначала процедуру и проверь.
Далее - max, похоже на min и проверь.
Составь цепочку min и max и проверь.

А далее - постепенно нагружай и проверяй.
30 апр 20, 17:45    [22125879]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Eolt
Member

Откуда: Russia
Сообщений: 1622
Victorious,

Какой адъ. Вам точно не стоит писать код. Не ваше это...
1 май 20, 01:19    [22126040]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
exp98
Member

Откуда:
Сообщений: 2438
Victorious, не используй номера строк, это аттавизм, оставшийся от 80-х.
Заместо них используй символьно-числовые метки (напр lab1: ....... lab2: ......... и т.д.) как в нормальных языках.
Но здесь всё делается без меток.

Вместо ифов можно один оператор переключения:
switch ....
case ....
....
case ....
....
default ....
....
end switch

Да и вообще, прочти хелп по языку. И потренируйся в простейшем программировании с кем-нибудь.
1 май 20, 18:17    [22126314]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
booby
Member

Откуда:
Сообщений: 1995
Gennadiy Usov
...

У тебя три раза встречается min. Сделай сначала процедуру и проверь.
Далее - max, похоже на min и проверь.
....

Извините за любопытство, а можно посмотреть, как правильно min и max
на VBA реализовывать, покажете?
Модератор: Может не стоит от темы топика удаляться? Если нет советов для ТС, то лучше бы промолчать


Сообщение было отредактировано: 1 май 20, 21:18
1 май 20, 21:09    [22126386]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Dima T
Member

Откуда:
Сообщений: 14879
Eolt
Victorious,

Какой адъ. Вам точно не стоит писать код. Не ваше это...

Все мы с чего-то начинали. Он же сказал что первый курс заочно.
1 май 20, 21:23    [22126397]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
booby
Member

Откуда:
Сообщений: 1995
Dima T,

а что Вы за советы ТС здесь принимаете - "вам не надо писать" или "не используй номера строк"?
Какой "совет" лучше?

min и max здесь, очевидно, часть задачи.
Увидеть образец реализации было бы полезно не только для TC.
Имхо...

Сообщение было отредактировано: 1 май 20, 22:19
1 май 20, 22:20    [22126430]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
exp98
Member

Откуда:
Сообщений: 2438
booby, а я малость пополемизирую.
Имеем фрагмент.
Dim max, min, max2, d, m As Double
If X > 0 And Y > 2 Then GoTo 1
Else: GoTo 2
End If
1 If max < min Then
max2 = max
Else: c = min
1 If (Log(X) > (X + Y)) Then
........
Видим, что объявленные переменные используются без ЯВНОЙ инициализации. Такие вещи ВБА разрешает, но они имеют ограничения. Видим числовую метку "1" в нескольких строках и " GoTo 1".
Начинающий не должен использовать такое, а использующий должен точно понимать, что он делает.

Промежуточное ИМХО: изучение ВБА (как и другого ЯП) правильно начинать с обучения основам программирования вообще.
Не верю, что прям так сразу им дали ЯП. И да, код "пахнет" недостаточным пониманием основ пр-я - с них лучше и начать. Тем более при таком уровне понимания программирования вообще, давать пример использование функции преждевременно. А уж ВБА примеров в инете тьма тьмущая.
Сегодня 3-е мая, ТС - 30 апреля и больше ни гу-гу.

Сообщение было отредактировано: 3 май 20, 15:22
3 май 20, 15:22    [22126896]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Gennadiy Usov
Member

Откуда:
Сообщений: 2204
Не надо грузить на начинающего рассуждения о метках, или ещё чего-нибудь ...

Три условия:

если x,y то :
иначе если x,y то :
иначе: .

И больше ничего!
3 май 20, 16:05    [22126904]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
booby
Member

Откуда:
Сообщений: 1995
exp98,

У начинающего есть право использовать слова, смысла которых он не понимает.
Он так знакомится с ними и запоминает само звучание, потом и смысл подойдет.
А стареющему разрешено выживать из ума, это объяснимо.
Но тогда участие в темах, в которых он не знаком или плохо знаком с предметом - на свой страх и риск, нельзя ожидать снисхождения.

автор
Видим, что объявленные переменные используются без ЯВНОЙ инициализации. Такие вещи ВБА разрешает, но они имеют ограничения.

Вы вообще зачем это пишите?
Что вас манит и заставляет...
3 май 20, 16:27    [22126911]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
exp98
Member

Откуда:
Сообщений: 2438
booby, адвокат из вас никакой.
И выпады в сторону чьего-либа ника не выглядят доблестью.
3 май 20, 20:02    [22126972]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
Алексей Роза
Member

Откуда: РФ
Сообщений: 556
Eolt
Victorious,

Какой адъ. Вам точно не стоит писать код. Не ваше это...

да ладно уж... препода сжечь, а пациенту объяснить нормально, как правильно
и пойдёт на поправку.
3 май 20, 20:48    [22126976]     Ответить | Цитировать Сообщить модератору
 Re: VBA Найти значение функции  [new]
booby
Member

Откуда:
Сообщений: 1995
exp98
booby, адвокат из вас никакой.
И выпады в сторону чьего-либа ника не выглядят доблестью.

Нет никаких выпадо.
Хотели "полемизировать" - "полемизируйте"

exp98
Видим, что объявленные переменные используются без ЯВНОЙ инициализации.

В VBA вообще невозможно ни явно объявить, ни неявно использовать переменную без её неявной инициализации.
В VBA не существует неинициализированных переменных.
Это не доблесть, а простой факт, следующий из знания синтаксиса языка.
То, что следовало в этом месте сказать - говорится совсем другими словами:
В отличие от Fortran, где тип задается для всех переменных одной декларации предварительно,
в VBA каждая переменная требует собственного указания типа.
Поэтому (сокращенное) объявление
Dim max, min, max2, d, m As Double

эквивалентно
Dim max as Variant, min as Variant, max2 As Variant, d as Variant, m As Double


Вероятно (по вероятности, соответствующим намерениям автора) правильным объявлением было бы
Dim max as Double, min as Double, max2 As Double, d as Double, m As Double


exp98б вы представления не имеете о предмете, по поводу которого взялись рассуждать и "полемизировать".

Это и не наезд, и не защита кого-либо.

Если настаиваете ли на разборе своего утверждения:
автор
не используй номера строк, это аттавизм...
,
попробуйте сначала правдоподобно вспомнить и пояснить, зачем вы вообще его написали...
3 май 20, 22:26    [22127017]     Ответить | Цитировать Сообщить модератору
Все форумы / Программирование Ответить