Показать сообщение отдельно
  #3  
Старый 10.02.2018, 13:55
DrInfinity DrInfinity вне форума
Прохожий
 
Регистрация: 09.02.2018
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Что-то мне кажется, что ты что-то напутал в реализации алгоритма.
Можешь рассказать сам принцип, а то у тебя получается, что ты сравниваешь все ячейки со всеми, что, как мне кажется, не правильно.

ЗЫ. Сравнивать по епислон лучше так:
Код:
function CompareValues(a, b, eps : Extended) : Boolean;
begin
  Result := abs(a-b) < abs(eps);
end;
Ну и убери паразитные строки типа
Код:
variable := 0;
Плюс поправь форматирование кода, а то нечитабельно.

Спасибо что откликнулись!
Код поправлю.
Паразитные строки уберу.
Все правильно, я всю таблицу со всей сравниваю, мне надо разделить циклы, но вот как?
Пытался использовать 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] и до конца столбца идем,
 если больше ни чего нет выбираем следующее положение ПДЗ.
Ответить с цитированием