|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.12.2012, 18:50 | #1 |
Регистрация: 16.12.2012
Сообщений: 4
|
Создание программы подбора шестерен
Коллеги, помогите начинающему программисту. Потребовалось по работе создать программку для подбора шестерен для получения определенной характеристики обработки из имеющегося набора. Сделал программку, все работает, кроме одной строки кода. Подскажите, кто может, в чем проблема. Код следующий:
Код:
Последний раз редактировалось Stilet; 16.12.2012 в 19:06. |
16.12.2012, 21:44 | #2 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
пример скиньте
Единственный способ стать умнее, играть с более умным противником...
|
16.12.2012, 23:21 | #3 |
Регистрация: 16.12.2012
Сообщений: 4
|
Так вот же код написал. Там и проблемная строка. Перед ней соответствующий комментарий.
Эта строка должна предотвращать применение одного и того же элемента массива более одного раза, для этого порядковый номер элемента повторяться не должен. Из четырех просчитываемых для набора шестерен, таким образом, любая шестерня может быть применена в составе этого набора только один раз, что и требуется. Но эта строка не работает, из-за этого бывает применение одной шестерни более одного раза. Почему не работает эта строка, в этом вопрос. Заранее благодарен за ответ. Последний раз редактировалось Владимир VBA; 16.12.2012 в 23:30. Причина: дополнение |
16.12.2012, 23:30 | #4 |
Пользователь
Регистрация: 18.03.2012
Сообщений: 68
|
Возможно , там не ИЛИ должно быть а И, т.е должны все неравенства проверяться . А у вас проверяется только ИЛИ одно из всего перечисленного, программа нашла одно совпавшее или и пошла считать , а другие условия возможно что и не попадают под это условие . Как говорят гуру - что вы написали - то программа и делает . Может на словах запишите это условие If ......................... Then
Последний раз редактировалось eikhner; 16.12.2012 в 23:37. |
16.12.2012, 23:50 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
человеческим языком здесь
If i <> j Or i <> k Or i <> n Or j <> k Or j <> n Or k <> n Then написано если есть хоть одна несопадающая пара значений, то РАБОТАЕМ замените все or на and.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
17.12.2012, 01:44 | #6 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Если вынести повторяющиеся проверки из самого внутреннего цикла и использовать правильные типы переменных, время работы программы сокращается более чем в 4 раза, на моем компе с 2.2 до 0.48 с:
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Последний раз редактировалось Казанский; 17.12.2012 в 01:56. |
17.12.2012, 07:31 | #7 |
Регистрация: 16.12.2012
Сообщений: 4
|
Йосиф старенький! Коллеги, гениально. Действительно, надо заменить ИЛИ на И. Как хорошо, что есть на свете умные люди. Спасибо за исправление!
Отдельно большое спасибо, уважаемый коллега Казанский. Потратили время, переписали код, я душевно тронут. Еще раз спасибо, удачи! |
17.12.2012, 11:12 | #8 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ещё можно чуть ускорить, заменив
If n <> i And n <> j And n <> k Then на If n <> i Then If n <> j Then If n <> k Then ... end if end if end if Ну и выше тоже есть одно AND. Так после первого несовпадения остальные проверки производиться не будут. Правда в данном случае ускорение будет небольшое, а код станет сложнее вообще и читаться в частности... Думаю поэтому Алексей сэкономил буквы
webmoney: E265281470651 Z422237915069 R418926282008
|
17.12.2012, 11:24 | #9 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Упрощается это другим способом:
Код:
Правильно поставленная задача - три четверти решения.
|
17.12.2012, 11:55 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Ну да, так нужно опросить все 3 переменных (или 6 в общем случае), и произвести ещё 5 арифметических действий (или 4?)
Но зато записано элегантно. Но работает только с числами.
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание программы для управления некоторыми функциями другой программы | Юрий1991 | Общие вопросы Delphi | 6 | 03.02.2012 15:32 |
Алгоритм подбора цвета по целому | kraw2 | Общие вопросы Delphi | 3 | 30.11.2010 16:18 |
составление программы подбора символов... | ssetxx | Помощь студентам | 0 | 15.10.2010 23:44 |
Спам атака методом подбора. | Alex Cones | Свободное общение | 14 | 21.10.2009 11:22 |
Метод подбора (доделка программы ) | soulmaster | Помощь студентам | 3 | 12.12.2007 11:12 |