Автор: varvara
У меня выводится в результате последнее увеличившееся значение функции и полученные при этом кластеры, а как сделать, чтобы выдавалось предыдущее значение и соответствующие ему кластеры. http://ifolder.ru/6740938 |
|
их придется сохранять отдельно.
Т.е. вам надо будет держать два варианта : (1) текущий и (2) предыдущий. От этого не убежишь.
А чередовать их можно двумя вариантами (ну я вижу 2):
1) после каждого "круга" сравнивать текущих с предыдущим и если условие не удовлетворилось, то просто копировать все текущие данные, затирая предыдущие.
типа: если х1 это предыдущее значение, а х2 текущее, то просто делаем х1=х2. и дальше вновь заполняем х2 уже новыми значениями.
2) вместо копирования использовать псевдонимы (т.е. индексы массивов или указатели).
типа: если хх2 -- это указатель на тот же тип что и х1,х2 и он указывает на переменную с текущим значением, а хх1 -- указатель на предыдущее, тогда можно сделать так...
if xx1=address_of(x1) then begin xx1:=address_of(x2);xx2:=address_of(x1);end
else begin xx1:=address_of(x1);xx2:=address_of(x2);end
Можно так же использовать массив. скажем х -- это массив размером 2. тогда
i2 -- это текущее значение, а i1 -- это предыдущее.
после проверки на остановку, делаем так
i1 = 1-i1;
i2 = 1-i2;
а значения получаем так х[i1] или x[i2]
Первый способ нагляднее, но второй намного экономичнее.