Цитата:
|
the_little,
Понятно, я сталкивался с похожим калькулятором непрактичный жуть, изменились цены на комплектующие маленькие ворота дорожают сильней, и сиди возись, а был бы норм алгоритм (с исходной программы) просто правиш определенный коэффициент и все. (потому как бухгалтера эти таблицы составлять особо не спешат) у них типа своих забот полон рот |
Цитата:
Я конечно сделал через парсер считывание этих таблиц. Но все равно не понимаю, как так можно считать... Ну там же площадь. Сделать расчет от площади + коэффициенты какие-нибудь и все... Я не представляю как будут эти таблицы перечитывать)) |
Возник вопрос с поиском нужного элемента в массива.
Вот код, которым пользуюсь. function checkArr(arr,a,b) { return arr[arr.findIndex(el=>el[0]>a)-1][arr[0].findIndex(el=>el>b)-1]; } Я так понимаю смысл такой. Находится элемент который больше заданного значения, и потом индекс уменьшается на 1. Тогда задача так и стояла, если значение попадает между 2-х заданных, считать по меньшему. Все работает как надо. Сейчас задача обратная. Считать по большему. Я попробовал изменить функцию на такую (вроде как должен искать меньшее и потом индекс увеличивать на 1), но выдает всегда минимальное значение... function checkArr(arr,a,b) { return arr[arr.findIndex(el=>el[0]<a)+1][arr[0].findIndex(el=>el<b)+1]; } |
сейчас кажется дошло...
он же начинает искать с первого значения, и соответсвенно натыкается сразу на самое первое, которое получается меньше заданного. Поэтому он и выдает при любых заданных - самое минимальное.... Хмм, надо что-то переписать наверное. Такая логика уже не сработает... МОжно ему как то сказать, чтобы он от максимального значения шел? |
блин, там же просто можно убрать -1
|
return arr[arr.findIndex(el=>el[0]>=a)][arr[0].findIndex(el=>el>=b)]; |
заметил непонятный баг
Диапазон ширины в одном массиве 600-1800. Пока задается ширина меньше 1000, считает нормально. Как только вписываешь 1000 или больше - выдает первый столбец... Как такое может быть? |
Проверил на первой функции, которая на другом массиве работала нормально.
function checkArr(arr,a,b) { return arr[arr.findIndex(el=>el[0]>a)-1][arr[0].findIndex(el=>el>b)-1]; } тоже глючит. До каких-то значений работает нормально, потом дает сбой... Может из-за парсера..., но такие таблицы руками в массив загонять дело не благодарное... |
Дело не в парсере... Массив проверил. в многомерном массиве 52 массива, в каждом 122 элемента.
Запросил data[51][121] - выдал правильное угловое значение. Т.е. весь массив заносится там куда-то. парсится таблица нормально. Видимо в функции какая-то проблема, но в чем понять не могу. |
Часовой пояс GMT +3, время: 07:42. |