powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите составить формулу
11 сообщений из 11, страница 1 из 1
Помогите составить формулу
    #34323434
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно составить код для рассчёта параметров для изготовления вертикальных жалюзи. Застрял на месте расчёта количества бегунков. Надо, исходя из: CarrierQ - количествово бегунков, которое надо найти, BlindWidth - ширина жалюзи, MaxStep максимальный шаг, EdgeFix - фиксированное расстояние от краёв
Код: plaintext
1.
2.
3.
4.
5.
Function CarrierQ(BlindWidth As Long) As Long
Const MaxStep =  114 
Const EdgeFix =  139 
CarrierQ = 
End Function
рассчитать CarrierNo, что бы результат отвечал такому условию:
(BlindWidth-EdgeFix)/(CarrierNo -1)=<MaxStep
Подскажите, пожалуйста, как.

На данный момент никакой формулы нет, мастер берёт калькулятор и пробует значение по памяти, если отвечает условию - то всё нормально, если нет - берётся значение на 1 большее...
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323538
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подбором сделать слабо?
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323556
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слабо - не знаю как...
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323569
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элементарная задача для ученика 4-5-го класса.
(BlindWidth-EdgeFix)/(CarrierNo -1)=<MaxStep
(BlindWidth-EdgeFix)/MaxStep=(CarrierNo -1)
((BlindWidth-EdgeFix)/MaxStep)+1=CarrierNo

Кажется так. Только здесь вопрос с округлением. если есть дробная часть, то её отбрасывать или прибавлять к ней 1. Попробуй. (наверно надо просто отбросить)
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323585
ByKiSНужно составить код для рассчёта параметров для изготовления вертикальных жалюзи. Застрял на месте расчёта количества бегунков. Надо, исходя из: CarrierQ - количествово бегунков, которое надо найти, BlindWidth - ширина жалюзи, MaxStep максимальный шаг, EdgeFix - фиксированное расстояние от краёв
Код: plaintext
1.
2.
3.
4.
5.
Function CarrierQ(BlindWidth As Long) As Long
Const MaxStep =  114 
Const EdgeFix =  139 
CarrierQ = 
End Function
рассчитать CarrierNo, что бы результат отвечал такому условию:
(BlindWidth-EdgeFix)/(CarrierNo -1)=<MaxStep
Подскажите, пожалуйста, как.

На данный момент никакой формулы нет, мастер берёт калькулятор и пробует значение по памяти, если отвечает условию - то всё нормально, если нет - берётся значение на 1 большее...
Ну, ты, блин, даешь... Это же задачка на уровне 10-го класса школы...
Тебе формула почти в чистом виде дана...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Исходное Условие-ограничение:
[color=red](BlindWidth-EdgeFix)/(CarrierNo - 1 )=<MaxStep[/color]

преобразуем неравенство в равенство:
(BlindWidth-EdgeFix)/(CarrierNo - 1 ) = MaxStep
После преобразования получим:
(BlindWidth-EdgeFix)/ MaxStep = CarrierNo - 1 
или
((BlindWidth-EdgeFix)/MaxStep)+ 1  = CarrierNo .

Так как (BlindWidth-EdgeFix)/MaxStep чаще всего не будет целым числом, то выделим из него целую часть. В итоге получим:
CarrierNo = INT((BlindWidth-EdgeFix)/MaxStep)+ 1 
Либо ты что-то не так объясняешь...
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323587
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подбором можно делать в цикле
Код: plaintext
1.
2.
3.
4.
5.
i= 2 
While (BlindWidth-EdgeFix)/(i - 1 )=<MaxStep
   i=i+ 1 
wend
CarrierNo=i
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323704
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы пробовали? Что-то недоходит до меня...

Код: plaintext
CarrierQ = Round(((BlindWidth - EdgeFix) / (MaxStep)) +  1 ; 0 )

BlindWidthCarrierQ(BlindWidth-EdgeFix)/(CarrierNo -1)=<MaxStep150013TRUE142912FALSE
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323755
ByKiSА Вы пробовали? Что-то недоходит до меня...

Код: plaintext
CarrierQ = Round(((BlindWidth - EdgeFix) / (MaxStep)) +  1 ; 0 )

BlindWidthCarrierQ(BlindWidth-EdgeFix)/(CarrierNo -1)=<MaxStep150013TRUE142912FALSE
Ну, тогда округляй в бОльшую сторону. Т.е. если будет CarrierQ = 11,371, то округляй до 12, а затем прибавляй 1...

А вообще, условие: а <= b настолько нечеткое, что можно сделать: const CarrierQ = 100000 и не париться...
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34323779
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во дурак я... Забыл округлять и мучаюсь :-)
Так работает
Код: plaintext
1.
CarrierQ = Round((((BlindWidth - EdgeFix) / (MaxStep)) +  1 ) +  0 . 5 ,  0 )
Спасибо
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34324345
ByKiS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять в тупике... Надо, что бы в кайсе "С" (если получили нечет прибавить 1), я пробовал с округлением но что то не то выходит. Неправильные результаты. Подскажите как исправить.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function CarrierQ(TapeWidth As Double, BlindWidth As Double, CtrlType As String) As String

Select Case CtrlType
    Case "A"
    CarrierQ = Round((((BlindWidth - EdgeFix) / MaxStep) +  1 ) +  0 . 5 ,  0 )

    Case "C"
    CarrierQ = Round((Round((((BlindWidth - EdgeFix) / MaxStep) +  1 ) +  0 . 5 ,  0 ) /  2 ),  0 ) *  2 
    
...
Рейтинг: 0 / 0
Помогите составить формулу
    #34325747
ByKiSОпять в тупике... Надо, что бы в кайсе "С" (если получили нечет прибавить 1), я пробовал с округлением но что то не то выходит. Неправильные результаты. Подскажите как исправить.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function CarrierQ(TapeWidth As Double, BlindWidth As Double, CtrlType As String) As String

Select Case CtrlType
    Case "A"
    CarrierQ = Round((((BlindWidth - EdgeFix) / MaxStep) +  1 ) +  0 . 5 ,  0 )

    Case "C"
    CarrierQ = Round((Round((((BlindWidth - EdgeFix) / MaxStep) +  1 ) +  0 . 5 ,  0 ) /  2 ),  0 ) *  2 
    


К сожалению, Паскаль с Бейсиком не помню... Но должно быть примерно так:
Код: plaintext
1.
2.
 1 . Вычислить  CarrierQ;
 2 . Если остаток (от деления на  2 ) больше  0  и тип="С", то добавить  1 ; иначе - оставить без изменений...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите составить формулу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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