К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

ОФФ: v77 Арифметика. Ряды чисел. Написать кратчайшуу ф-цию.

0 - 19.05.2017 - 19:40
Для тех, кому не лень размяться в арифметике - Задача :
Составить наикратчайшую функцию, вычисляющую У от Х.
Имеем Таблицу значений из двух колонок Х, У .
У= f(x); Написать ф-цию на 1Сv77. А можно и на любом языке, важен алгоритм.
Сравнивать длину кода будем по коду в 77.



121 - 25.05.2017 - 06:29
Цитата:
Сообщение от Оля П Посмотреть сообщение
Возможно, чего-то не понимаю.
А ты поняла, что за формула
МинЦена=75+7*х+?(х%2=0,?(х>57,3,1),?(х>44,2,0));
Что за цифры 75, и 7? Для чего и зачем х%2 , можешь объяснить этот алгоритм ?
122 - 25.05.2017 - 06:52
Цитата:
Сообщение от Ирли Бёрд Посмотреть сообщение
когда продавать алкоголь дороже стало в убыток
На редиске объясняю. Например, на рынке продавцы договорились продавать редиску по цене не ниже 50р за пучок. Все себе стоят и торгуют по 50Р, а один маленький, но очень гордый, продавец выставил цену 60р. Все хорошо распродались, а наш гордый продавец продал всего один пучок какому-то сумасшедшему олигарху, который цену не спрашивает, и даже сдачу не берет. День простоял, а всей выручки не хватило и место на рынке оплатить. Вот тебе пример, когда дороже продавать себе в убыток. Рынок, панимаш-ли.
123 - 25.05.2017 - 08:15
Цитата:
Сообщение от Шухер Посмотреть сообщение
Все себе стоят и торгуют по 50Р, а один маленький, но очень гордый, продавец выставил цену 60р.
Блин.
Так вот же ж
Я то наивно думала, что это старый-престарый бородатый-пребородатый анекдот.

Но Шухер его умудрился превратить в реалии.

"Идёт мужчина по Привозу. Видит, продают семечки. У одного торговца цена - 10 копеек, у другого - 10 копеек. Отдельно сидит еврей и торгует семечками по 20 копеек за стакан.
- Товарищ, почему вы продаёте семечки по двадцать копеек, а другие - по десять?
- Вы что, сами не понимаете, что двадцать копеек таки больше, чем десять?"
(с)
124 - 25.05.2017 - 08:17
Цитата:
Сообщение от USSR Посмотреть сообщение
я бы все таки подуиал именно а сторону табличного хранения данных
Зачем какие-то таблицы плодить, если все замечательно вычисляется по формуле? Полностью исключает ошибки, которые могут закрасться при составлении таблиц, ибо их нет вообще.
Формула, сссЭр ! :))

Раньше, когда мнения расходились, спрашивали - "ты с какова городу?" :)
Сейчас можно обновить мем :
Ты по какому учебнику учился? :)))
Гость
125 - 25.05.2017 - 08:25
Дело хозяйское. У всех свои предпочтения
Гость
126 - 25.05.2017 - 08:27
Табличный способ универсален, легко меняются данные и очень нагляден
127 - 25.05.2017 - 10:23
Цитата:
Сообщение от USSR Посмотреть сообщение
зачем вычислять в точках, в которых итак все известно ?
Спорим тут за рыбу-мясо. Этих известных точек может быть достаточно много, что захочется придумать формулу, чтобы не заполнять таблицу в ручную.
Гость
128 - 25.05.2017 - 10:32
Чем больше точек, тем сложнее решить задачу аппроксимации. А там еще не дай бог вступит в дело такая вещь, как "плохая обусловленность" системы линейных уравнений со всеми своими красивыми последствиями. Я просто В ПРИНЦИПЕ не вижу необходимости параметризовывать этот дискретный набор данных, если использоваться будет только он. Аппроксимируют для вычислений в промежуточных точках, интерполируют для предсказания в отсутствующих точках. А искать функцию, чтобы вычислить уже имеющееся значение в имеющейся точке .. ну нравится, вычисляй. Дело вкуса каждого. Благо сейчас функция относительно некривая )
Гость
129 - 25.05.2017 - 10:33
а заполнять вручную все равно придется, хотя бы для того чтобы получить формулу.
130 - 25.05.2017 - 11:11
Цитата:
Сообщение от USSR Посмотреть сообщение
Я просто В ПРИНЦИПЕ не вижу необходимости параметризовывать дискретный набор данных
Позволь, немножко расскажу тебе про "В ПРИНЦИПЕ" :)
Когда я только закончила институт, то попала по распределению в одно интересное тульское КБ. Там как раз разрабатывали одну не менее интересную штучку, стоящую ныне на вооружении под названием "Зоопарк-2".
И есть там во внутренностях этого зоопарка один интересный такой вычислитель. Не суть важно, что он вычисляет, но в мою бытность там в ПЗУ (на той элементной базе) на момент сдачи комплекса военприемке оставалось свободными всего 22 байта.
Начальник мой, Марк Исаакович, как только не изгалялся, чтобы впихнуть программку для этого спецвычислителя в ограниченный объем ПЗУ. И ведь умудрился. А меня при этом знаешь как в мой код на ассемблере тыкал носом. До сих пор нос болит.

Вот он бы выразился про "В ПРИНЦИПЕ".

Это сейчас мегабайт туда, мегабайт сюда - фигня вопрос. Пару гиг на диске вообще мелочь.
Разбаловались. Особенно 1С-ники.

А так то между запихнуть в ПЗУ массив данных или коротенькую формулу - В ПРИНЦИПЕ разница немножко есть :)

Поэтому сабж (под знаком OFF, напомню) вполне себе имеет право на существование.
Не для решения какой-то конкретной сиюминутной задачки по 1С, а именно как OFF.
Поэтому не нравится - просто не открывай подобные ветки, промаркированные "OFF", и всего-то.
Для разработки на 1С это никак не повлияет.
это же оффтопик.
У волшебника вон "страну 404" обсуждают в оффтопиках, а тут Бронштенйа с Семендяевым и Корна с Корн.

Кстати, у меня Г. и Т. Корн за 3 руб. 89 коп., год 1973, а у тебя год 1978 и цена уже 4 руб., так что можно сделать некий предположительный вывод, что и в 70-х годах инфляция была, на 11 копеек за пять лет справочник подорожал. :)
131 - 25.05.2017 - 11:38
130-Блондинка в шок > у меня 1977, 3-70:

132 - 25.05.2017 - 12:47
Если не решать подобные задачи, не лазить по справочникам и учебникам, мозг засыпает, просто теряет способность думать. Мозг, как бы, окутывает лень и чем дальше находишься в ленной спячке, тем тяжелее выбираться из этого состояния. Я вот очень благодарен всем участникам этой дискуссии, и лично товарищам Зеленому, Гене и Блондинке в шок с этой аппроксимацией. У меня сейчас такой прилив энергии, какая-то Радость появилась, получаю удовольствие. Кому-то нравится сканворды решать, а кому-то арифметика нравится.
133 - 25.05.2017 - 12:58
Кажись придумал, как погрешность побороть до нуля для 2У и остальных рядов. 22 байта в нашем ПЗУ еще есть свободных, попробуем впихнуть код. :)
Гость
134 - 25.05.2017 - 15:23
(130)Длинный рассказ) я видел много всяких вычислителей, и сам делал решения с помощью только целочисленной арифметики, только сложение и вычитание и умножение-деление на 2 путем сдвигов регистра. Поэтому знаю, что такое быстродействие и память тогда и сейчас. Ну нравится Вам, аппроксимируйте, завтра изменится пара значений в таблице, начнете снова аппроксимировать, лишь только для того, чтобы получить те же самые точки по которым аппроксимировали. На этот случай я тоже могу вспомнить про кота, которому делать нечего. Ну если настаиваете, что не в ПРИНЦИПЕ,пусть будет не в принципе, пусть аппроксимация будет единственным верным решением )) А Корны были всякие, у меня 4 издание, 821 стр.
Гость
135 - 25.05.2017 - 15:26
(133)Можно еще долго придумывать разное и бороть, в этой области занятий хватит ) Как проснулся, сразу на борьбу, позавтракал и опять бороться ) Считаться это все будет на ДВК-2 или на Спектруме ?)
136 - 25.05.2017 - 19:08
USSR в принципе не желает порешать математическую задачку. Придумывает всякие отговорки, чтобы ничего не делать. Настоящий программист, матёрый :)
137 - 25.05.2017 - 19:31
Не получается выровнять для ряда 2У без "если". Очень уж жесткие рамки, нет возможности для маневра. Ну и ладно. Лучше другую задачку уже решать. С этой успешно справились.

Блондинка в шок нашла самое интересное решение. Даже USSR, зная и покруче решения, не смог применить их на практике, и продемонстрировать их крутость.
Всем огромное спасибо, было приятно пообщаться.
Появится еще похожая задачка, непременно сразу к вам :)
Гость
138 - 25.05.2017 - 20:03
(136)Я предложил решение исходной задачи, но без аппроксимации, поэтому я задачу решил. Аппроксимировать я нигде не обещал. Решений несколько: Массив, Справочник, РегистрСведений, выбирай не хочу. А строить функцию по точкам, чтобы потом опять получить эти же точке, ну это вне моих вкусовых предпочтений. Иногда Пискунов просто лишний ) У нас был препод по вышке, со странностями, но он обожао математику и его за это уважали. Так у него за правильное, ер длинное решение можно быдо на экзамене элементарно получить пару. Он просто смотрел, что это полторы страницы, а не 5 строчек и банан в зачетку.
139 - 25.05.2017 - 20:23
Цитата:
Сообщение от USSR Посмотреть сообщение
Он просто смотрел, что это полторы страницы
У тебя и получилось на полторы страницы. Сам массив, а потом поиск по нему и извлечение инфы. А у всех пара строк кода из коротеньких формул, которые легко читаются.
Хорошо, что 1С-никам не надо описывать векторную графику, а то бы можно было себе представить размерчик таких массивов. Я так считаю, если есть хоть какая-то малая возможность воспользоваться вычислениями, надо ими воспользоваться, максимально избегать наваливания кучи справочников и ненужных лишних массивов.
Гость
140 - 25.05.2017 - 20:34
(139)не буду спорить, каждому свое. Вычисления разные бывают. Какой тут массив 200 точек, говорить то смешно про размер. Будет векторная графика, будет другой разговор, зачем все в кучу валить. Здесь была другая задача. Останемся при своем.
141 - 26.05.2017 - 23:43
Предлагаю всем недоспорившим померяться силами в этой ветке: Как в Екселе реализовать такой алгоритм?
142 - 27.05.2017 - 06:34
141-Ткачик >
По накатанной :)
x y
1 367
2 439
3 517
4 613
5 721
6 823
7 931

Уравнение линейной регрессии имеет вид
у=95*х+ 250
Спускаем вниз на 20 пунктов нашу прямую, чтобы все заданные известные точки оказались выше расчетных, и потом при вычислениях округляем вверх.
у = 95*х +230 --> вычисляем х и округляем вверх до целого.
х=(у-230)/95
Нашли ближайшее значение Х, теперь сравниваем У(х) с У_табличным(х). Если У_табл меньше тогда спускаемся Х=х-1.
Х- порядковый номер в заданном ряду значений У.

Можно написать макрос, а можно и в ячейке формулу составить по условию.
Еще надо по диапазону ограниечение на Мин, чтобы не выскочить.
В данном примере Х не может быть больше 7.

143 - 27.05.2017 - 08:11
Цитата:
Сообщение от Шухер Посмотреть сообщение
Если У_табл меньше тогда спускаемся Х=х-1
Это я тут наврал, наоборот надо.
Подумал, лучше вообще не округлять вверх. Сразу проверить округление вниз до целого. Если табличное значение окажется меньше, добавляем х = цел(х)+1
Пример, вычислим ближайший больший У_табл для у= 437:
х=(437-230)/95 = 2,18
х=цел(2,18) = 2
У_табл(2) = 439
х= ?(У_табл >у , х, х+1);
439 > 437 х=2
Гость
144 - 27.05.2017 - 10:26
(142Б143)И воткнешь ты эту хрень заказчику, будет она исправно считать какое-то время, тут ты уедешь в Турцию или в Крым попу греть, и как обычно бывает, Заказчик решит поменять пару-другую точек. И не работает потом и кровью полученная функция, и заново надо ее получать. И так всякий раз. Называется все это - одноразовое решение.
145 - 27.05.2017 - 12:16
144-USSR > В целом я с тобой согласен, универсальностью метод не блещет. Заточен под конкретные данные.
В данном конкретном примере я просто обкатываю понравившийся мне метод. Не могу согласиться, что везде надо именно таблицы использовать. Если в них менять как попало данные, и твой универсальный метод тоже запросто в тупик можно загнать. Данные должны быть некоторым образом упорядочены и подчиняться некоторой логике. Этот спор ни о чем. Вместо спора и порожней болтовни, помоги человеку решить его задачу в Ексель.
146 - 27.05.2017 - 13:00
Цитата:
Сообщение от USSR Посмотреть сообщение
и как обычно бывает, Заказчик решит поменять пару-другую точек
хи.. 1С-ники порой такие предсказуемые. Все зашорены Заказчиками и Отпусками в Крыму :)))
Вообще то если это для 1С, то такие элементарные моменты (вариации исходных данных) обычно оговариваются еще на момент постановки ТЗ.

Возможно (только возможно) данные в таблице будут меняться ежедневно. И тогда решение Шухера не годится.

А возможно (опять же - только возможно) - это просто задачка из учебника, и тогда решение Шухера очень даже вполне.
================================================== ====
Цитата:
Сообщение от USSR Посмотреть сообщение
Называется все это - одноразовое решение.
Да. И что? Не вижу ничего предосудительного в таком решении задачки из учебника. Ты же не будешь говорить, что учебники перепечатываются ежемесячно. :)

зы: судя по другим темам автора, он ни разу не программист. И уж не 1С-ник точно.
А вот студент - вполне может быть.. И для него такое одноразовое решение - весьма неплохо.
По крайней мере, будет что-то оригинальное в сравнении с общей массой других студентов, которые будут тупо решать перебором таблиц. Особенно, если в методичке не оговорена вариативность исходных данных.
И, я надеюсь, у его преподавателя нет зашоренности насчет Заказчика и Турции.
147 - 27.05.2017 - 13:03
А если необходимо предусмотреть, что данные ряда могут меняться, конечно так чтобы ошибка аппроксимации не зашкаливала, и данные соответствовали с допустимой погрешностью прямой у=ах+в. Тогда можно легко автоматизировать пересчет (а,в) по правилу Крамера, по известным уже формулам. И можно спокойно ехать в Турцию.
Гость
148 - 27.05.2017 - 13:40
(145)Из какого учебника?)
Было же сказано вроде, что это прикладная задача. цифры - цены на алкоголь. Предсказуемость состоит не в том, чтобы бы быть озабоченным заказчиком, а в том, что делаются некачественные решения, сделанные на тоненького и целиком зависящие от программиста. Немало видел конфигураций, где и ищется по коду или по наименованию товара, где скидки программируются с конкретными числами в формулах. И ведь работало, и даже правильно. Если речь лишь об аппроксимации, то ради бога, всякое решение имеет право быть. Если речь об исходной задаче получения цен, то аппроксимация один из возможных подходов к решению, на мой взгляд, крайне неудачный. И не надо перебирать никаких таблиц. Это же не решение, если строится некая зависимость, а потом в точках округляется вверх-вниз. В чем ценность этого решения ? Как упражнение - ну разве что. Как прикладное решение - ну извините. А если уж строится зависимость, то ее тоже надо строить согласно математической науке. Я честно говоря не вьехал, а в чем состоят вычислительные ограничения задачи, почему надо короткий код ? Это где-то на орбите будет вычисляться ?)
Гость
149 - 27.05.2017 - 13:47
(147)а с правилом Крамера все красиво только на учебных примерах второго-третьего порядка. Задачи аппроксимации как правило плохо обусловлены (определитель бывает близок к нулю) и можно нахватать огромные погрешности. С помощью хранения этого ряда в справочнике я решил бы эту задачу максимум за полчаса, причем данные хранились бы наглядно, их можно было бы распечатать, подписать и тд. а не манипулировать какой-то непонятной формулой, неизвестно откуда взятой. Тем более, что для получения этой формулы все равно надо заносить данные в Excel или Маткад (там тоже можно ошибиться), но об этом как-то умалчивается.
150 - 27.05.2017 - 13:49
но вообще то, если это задание из методички для студентов именно на знание Ексель, а не на алгоритмы,
то я бы в так сформулированном задании в (141) вообще бы использовала специфические функции
ВПР()
или даже для несортированного списка ПРОСМОТР(), ИНДЕКС(), ПОИСКПОЗ()

Понятно, что в (141) задание именно про Ексель (не про 1С).
Непонятно, на что упор - на "нестандартный" алгоритм или на знание типовых функций Екселя, в частности, той же функции ВПР()
Если на нестандартный алгоритм - то решение Шухера для преподавателя будет явно нестандартное :)
Если на тупое знание Екселя- то смотри вышеперечисленные функции.
Если на универсальность и предполагаемый отпуск в Анталии - то, естественно, решение через перебор таблиц. Особенно если наряду с отпуском предположить, что табличные данные могут быть произвольными и ряд через линейное уравнение просто не сможет решаться в принципе, вдруг там будет "ряд ступеньками", причем абсолютно произвольными ступеньками.
151 - 27.05.2017 - 13:56
148-USSR >
Цитата:
Сообщение от USSR Посмотреть сообщение
ыло же сказано вроде, что это прикладная задача. цифры - цены на алкоголь.
Да ты что? Ну-ка ну-ка ткни меня носом в (141) - где это сказано? Где-где? Не вижу.. В упор.

зы: мда.

1С-ник, "ясновидящий про Турцию и Заказчика", не удосужился прочитать задание в (141), которое (задание) вообще опубликовано даже не в разделе форума 1С, а совершенно в другом разделе ("Разработка программ") да и опубликовано человеком, к 1С не имеющим никакого отношения.

пичалька.. как же ж ты с Закачиками то договариваешься? При такой то невнимательности к заданию..
152 - 27.05.2017 - 14:07
В общем, конкретно для (141) - в Ексель юзается функция ВПР(). Код копипастить (даже не писать) лень, ибо Яндекс дает 20 млн результатов поиска.

Все.
153 - 27.05.2017 - 14:41
152 + хотя разумеется, как сказано выше, можно использовать и другие функции - ИНДЕКС(ПОИСКПОЗ())

ну и разумеется должны предусмотреть сравнение на точное/ неточное, тут использовать функцию ЕСЛИОШИБКА()

короче алгоритм типа такого
1. вариант с ВПР() и используется "Х", "У"
Сначала через ВПР() ищем на точное совпадение У. Если нашли - то вот они и "Х" и "У" :)
ЕСЛИОШИБКА() - то делаем поиск на неточное сравнение (получаем ближайшее снизу) и соответственно Х=Х+1, а от него уже получаем соответствующий У.

- вариант с ПОИСКПОЗ() (и даже без "Х")
опять же сначала поиск на точное сравнение
ИНДЕКС(ПОИСКПОЗ()) нашли - молодцы, а
- ЕСЛИОШИБКА(), то поиск на неточное, получаем ближайший снизу индекс и увеличиваем его на 1.
ИНДЕКС(ПОИСКПОЗ()+1)
Гость
154 - 27.05.2017 - 14:53
(150)ну уж извините, коли я не разобрался в политических тонкостях техзадания. Я понял так как понял. Мои заказчики тут совершенно непричем, с ними общаться никого на помощь не зову, сам управляюсь. Недовольных заказчиков тоже не наблюдал. Поэтому не надо все в одну "женскую" кучку сваливать. Надо всего лишь четко формулировать задачу (чего я добивался с самого начала), тогда можно обсуждать и решения. Если это учебная задача, то я хотел бы видеть дословно как она формулируется. Я очень сомневаюсь, что именно так как нам ее преподали.
(Шухер) в чем проблема без всяких ломаний и стеснений выложить задачу в исходном виде, чтобы не вводить в заблуждение прогрессивную и непрогрессивную общественности? Если ты учишься, то что в этом стыдного? Это наоборот почетно и правильно. Если это действительно торговля алкоголем, то тоже не вижу ничего зазорного.
155 - 27.05.2017 - 16:02
154-USSR >В (141) другая задача.
Шухер тут ни при чем. Эту задачу выложил сторонний человек в другом разделе форума, а предложил сюда в эту ветку Ткачик.
Постановка этой второй задачи к Шухеру не имеет никакого отношения. :)

Задание к этой второй задачке сформулировано, по моему, однозначно в части среды разработки (четко указано - Ексель) да и само по себе весьма специфично в части требований к знанию конкретных функций Екселя, и поэтому отсюда я сделала предположение (см. внимательно в (146) -"возможно" sic!) что это чисто учебная задача. Потому что спрашивать на форуме про "алгоритмы в Ексель" для реальных практических задач - хм... ну как то оно.. хм...
А вот для студента такой вопрос - естественен.
Причем даже смею предположить, для студента не "программистских специальностей", а какого-нибудь финансиста-экономиста-бухгалтера. Причем возможно даже не ВУЗА, а техникума. Читают же им какой-нибудь курс, связанный с IT. :)

======== А это меня развеселило. Без обид. Просто юморно выглядит. ==========================

Цитата:
Сообщение от USSR Посмотреть сообщение
Поэтому не надо все в одну "женскую" кучку сваливать...
[а ниже]
уж извините, коли я не разобрался в политических тонкостях техзадания. Я понял так как понял
Ну я то сразу четко отделила эту задачу от задачи Шухера, поэтому насчет кучки не ко мне :)
и поэтому не поняла, почему ты так самокритично называешь свою кучку "женская".
:))))))
156 - 27.05.2017 - 16:10
вы же вроде собирались угомониться и разойтись миром?


К списку вопросов






Copyright ©, Все права защищены