10.02.2018, 13:55
|
Прохожий
|
|
Регистрация: 09.02.2018
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
|
|
Цитата:
Сообщение от lmikle
Что-то мне кажется, что ты что-то напутал в реализации алгоритма.
Можешь рассказать сам принцип, а то у тебя получается, что ты сравниваешь все ячейки со всеми, что, как мне кажется, не правильно.
ЗЫ. Сравнивать по епислон лучше так:
Код:
function CompareValues(a, b, eps : Extended) : Boolean;
begin
Result := abs(a-b) < abs(eps);
end;
Ну и убери паразитные строки типа
Плюс поправь форматирование кода, а то нечитабельно.
|
Спасибо что откликнулись!
Код поправлю.
Паразитные строки уберу.
Все правильно, я всю таблицу со всей сравниваю, мне надо разделить циклы, но вот как?
Пытался использовать GOTO Label, вообще программа уходила в бесконечный цикл.
Код:
Цель такая
Берем одно число(они заданы как квантования во второй
таблице, в 0 столбце(обороты) и 0 строке(положение дроссельной заслонки))
ищем ПДЗ в нужном столбце таблицы 1, если не находим,
то добавляем допуск +0,1(например ищем 3, если не находим,
то пойдет и 2,9 и 3,1),
если не нашли, добавляем еще 0,1, и так пока не упремся в значение
которое задано в трек баре 1, если не находим ни чего,
то выбираем следующее значение ПДЗ, если нашли нужное ПДЗ, то в
той строке таблицы 1 ищем обороты, начиная с значения
заданного во второй таблице (кванты)[0,1], пусть там 600, ищем сначала
точное совпадение, не нашли ищем уже (с шагом 1)
599 и 601, не нашли 598 и 602, и так пока не упремся в максимальную
погрешность заданную в трек бар 3, если нашли записали
значение в таблицу 2, в место пересечения оборотов и ПДЗ , если нет
тогда выбираем значение из таблицы 2 [0,2] и до конца столбца идем,
если больше ни чего нет выбираем следующее положение ПДЗ.
|