|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.03.2008, 14:20 | #1 |
Пользователь
Регистрация: 18.02.2008
Сообщений: 15
|
Как выйти из бесконечного цикла!
Описание программы Cначала программа генерирует случайным образом начальную популяцию особей. Для этого используется встроенная функция генератора случайных чисел (ГСЧ) С-компилятора. Причем, значения хромосом генерируется в заданных пределах, то есть коэффициент заполнения в диапазоне от 0,1 до 1, число ступеней от 1 до 10 и амплитуда напряжения каждого ПМ от 0 до 100В.Затем, в бесконечном цикле запускаются функции. Производится расчет временных параметров – функция “calcT()”, то есть длительность импульса и длительность ступени , а также задержка включения каждого ПМ . Далее с помощью функции расчета амплитуд ступеней “calcUds()” заполняется массив Uds[j][i]. Зная амплитуды ступеней и временные параметры ступенчатого напряжения, формируется виртуальное ступенчатое напряжение по синусоидальному закону для каждой особи и делается выборка из 1024 отсчетов за период для реализации алгоритма БПФ – функция “calcS1()”. Для полученных напряжений вычисляются амплитуды гармоник с помощью функции реализующей БПФ - “fft()”, по которым уже рассчитывается коэффициент гармоник по формуле 3.2. Получив все необходимые данные, программа переходит к функции “calcF()”, которая рассчитывает значения функции пригодности для каждой особи в поколении по формуле 3.1. Полученные значения функции пригодности проверяются функцией “stop()” на выполнение критерия остановки. В случае выполнения условия остановки, программа переходит к выводу полученных результатов – функция “output()”. Если критерий остановки не выполнился, то программа переходит к выполнению функции “Sel()” – селекция особей Код:
|
02.03.2008, 14:29 | #2 |
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
|
функция break завершает цикл
|
02.03.2008, 14:38 | #3 |
Пользователь
Регистрация: 18.02.2008
Сообщений: 15
|
Но тут вот какая вещь,программа должно прекратить работать перейдя на функцию output()
Код:
|
02.03.2008, 14:42 | #4 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Эдуард, ну а если, к примеру,
void TForm1::Stop() сделать bool TForm1::Stop() ... |
02.03.2008, 14:52 | #5 |
Пользователь
Регистрация: 18.02.2008
Сообщений: 15
|
|
02.03.2008, 14:55 | #6 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
02.03.2008, 17:53 | #7 |
Пользователь
Регистрация: 18.02.2008
Сообщений: 15
|
Я правильно понял,что вы имели ввиду.Т.е после того как критерий остановки удволетварен,что в свою очередь значит dF<0.1,функция Stop() должна вернуть значение 1 или 0,и затем проверяется условие
if(Stop(значение)) break; и программа прекращает работу |
02.03.2008, 18:05 | #8 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Ну разумеется! Вы же сами написали: После прохождения критерия остановки Stop() программа переходит к функции output()-т.е вывод результата, после чего программа должна остановиться. output у Вас внутри Stop'а, так что после нее делать ничего не нужно - выходим из цикла.
|
02.03.2008, 18:21 | #9 |
Пользователь
Регистрация: 18.02.2008
Сообщений: 15
|
А как правильно будет с точки зрения синтаксиса.Вот допустим у меня выполнилось условие dF<0.1,затем идет функция output(),и после чего Stop возвращает значение 1 т.е Stop(1),а потом проверка if (Stop(1)) break;
Код:
|
02.03.2008, 18:26 | #10 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Какой еще "Stop(1)"! Просто "if(Stop()) break;", как я выше написал. Главное, не забывайте из Stop() еще и 0 возращать, если проверка не прошла, а то всё начнет глюками покрываться.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание цикла. | lexusus | Общие вопросы C/C++ | 6 | 27.05.2008 17:38 |
Пытаюсь выйти в инет с компа через мобилу, в момент соединения комп начинает виснуть | Sava | Свободное общение | 5 | 29.04.2008 18:02 |
Выход из цикла | RIO | Помощь студентам | 1 | 21.04.2008 22:55 |
Оператор цикла с предусловием While. Оператор цикла с пост условием Repeat | McMilin | Помощь студентам | 7 | 11.11.2007 14:10 |
Паскаль. Сумма бесконечного ряда | Tream | Помощь студентам | 4 | 13.10.2007 23:42 |