![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, Товарищи. Помогите прервать цикл. результат цикла график в чарте. надо чтобы в цикле при наложении условия, данная итерация убиралась и точка в чарте не рисовалась.
![]() ![]() Последний раз редактировалось placiba, 16.04.2009 в 12:44. |
#2
|
||||
|
||||
![]() не очень понял, что требуется, но циклы обычно прерываются командой "break".
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра. |
#3
|
||||
|
||||
![]() Цитата:
|
#4
|
|||
|
|||
![]() Да, такие команды пробовала. тока у меня там фишка такая есть, надо чтобы точка на которую накладывается некоторое условие в цикле, совсем из счета убиралась. эт так трудно объяснить.
![]() И спасибо, заранее. ![]() |
#5
|
|||
|
|||
![]() У меня цикл пересчитывается n раз. Предположим i=1 в этот момент выполнилось необходимое условие №1 прерывания цикла и данная точка на график не рисуется. Затем пошла вторая итерация. Вот в этой итерации уже условие №1 может и не выполняться. А мне надо чтобы таже самая точка все равно на график не рисовалась.
Мож ей какой флажок прикрепить... |
#6
|
||||
|
||||
![]() Создай массив. При каждом проходе цикла, если какое- то условие выполнилось- записывай в массив координаты точки. А при прорисовке графика- пробегай по массиву, если не находишь в массиве координаты, то рисуй точку, находишь- не рисуй.
|
#7
|
|||
|
|||
![]() Спасибо Вам ,TOJluK. Попробую так.
![]() |
#8
|
|||
|
|||
![]() я обещала код. Вот он:
Код:
for i:=1 to n do //задаем массив начальных значений begin y0[i]:=dy*(i-1); R0[i]:=dR*(i); end; while z<120 begin for i:=1 to n do BEGIN runge2(R0[i],y0[i], z);// заранее заданная функция которая считает координату if R[i]<0.5 then Continue;// Уберет все R[i]<0,5 при первой итерации (i=1) ,предположим это будит R[2], при второй итерации R[2] может не быть >0.5, но мне нужно чтобы эта точка все равно исключалась и не рисовалась на графике {x:=x0[i]; y:=y0[j];} chart1.series[0].AddXY(z,R0[i]); z:=z+dz; END; end; эта часть кода. ![]() Предложенный TOJluK вариант решения, немного не подходит. Не понятно как учесть те R[i] которые будут просчитываться в следующей итерации (те же самые по порядку i ). Надеюсь, смогла объяснить понятно. Рада любой идее, заранее спасибо. Последний раз редактировалось placiba, 16.04.2009 в 19:18. |
#9
|
|||
|
|||
![]() Ну и заведи себе массив точек исключения. Можно просто по индексу.
Тогда условие будет что-то типа: Если R[i]<.5 то занести точку в массив исключений Если точка в массиве исключений то не рисовать Код:
var ExceptionPoints : Array Of Integer; function IsExcept(N : Integer) : Boolean; var I :Integer; begin Result := False; For I := Low(ExceptionPoints) to High(ExceptionPoints) Do Begin Result := N = ExceptionPoints[i]; If Result Then Break; End; end; procedure AddExcept(N : Integer); begin If Not IsExcept(N) Then Begin SetLength(ExceptionPoints,Length(ExceptionPoints)+1); ExceptionPoints[High(ExceptionPoints)] := N; End; end; // далее твой код. меняем условия: if R[i]<0.5 then AddExcept(I); If IsExcept(I) Then Continue; // И опять твой код |
#10
|
|||
|
|||
![]() Спасибо большое Вам за идею.
![]() Все в юнит вставила, так классно, все делает. Такая радость. Пасибо!!! Последний раз редактировалось placiba, 16.04.2009 в 23:07. |