В поисках пятого угла

  • ↓
  • ↑
  • ⇑
 
14:00 

C++ псто

Три дня борьбы - и мне удалось вытащить весь вывод графики в моей недоигре в отдельный класс.
А всё почему? Потому что изначальные ошибки конструирования (нарушение абстракций) классов потом обходятся сильно дороже.
В основном всё уперлось хранение игрового фрейма, который из себя представляет вектор строк. Почему-то не хочет этот сраный вектор храниться в качестве закрытого члена класса, а я не умею заставить. В итоге психанул, закрытый член класса сделал ссылкой на вектор, а сам вектор создал оператором New в конструкторе. А я такой охуенный программист, что деструкторов у меня нет в принципе, посему память просто утекает. Ну и хуй с ней, в современных компьютерах её много!

Сам факт того, что я дошёл до понятия "игровой фрейм", говорит о многом. В частности, о попытке реализовать уже какой-то работающий в реалтайме движок, а не просто реагирующий на ввод через консоль.

А теперь внимание - следующая задача. Вот у нас есть клетка игрового поля, на которой одновременно лежит какой-то предмет и находится персонаж. Необходимо, чтобы игра показывала значок персонажа попеременно со значком предмета. И в это же время ожилала от игрока консольный ввод. На данный момент я нашёл такой вариант решения - запускается отдельный поток, который отсчитывает 700 мс скажем, после чего прибивает объект std::cin, ожидающий ввод. Выполнение программы продолжается, рисуется следующий фрейм, снова запрашивается ввод и запускается поток.

17:58 

Байдаркопсто

03:01 

Поездка на Белое море - фотоотчет

Так как до нормального текстового отчета руки не дошли и вряд-ли дойдут, то вот вам фоточки ))

12:13 

Пост-недопост

На работе аврал - изготавливаем приборы для научной экспедиции на Белое море. Приборы пока не готовы, но выезд назначен на понедельник. Это должно примерно дать представление о степени моей занятости. Так что я тут на пару недель сваливаю за Полярный круг. Поставлю лагерь на острове, установлю датчики, через 10 дней все сворачиваем и едем домой.

В связи с авралом не было времени написать про поездку в шхеры на день рождения, и я решил что лучше напишу хоть что-то сейчас, чем много и никогда)

Нас было трое - я, Юля-кот и замечательная Лена. И надувная байдарка "Щука-3", мою "двушку" по такому делу пришлось оставить дома.
Поездка принесла кучу опыта и впечатлений.

1. Если вы опаздываете не Финбан на электричку - вы можете обогнать её на метро и сесть в Девяткино. Даже если электричка скорая.
Проблема только в том, что надо успеть купить в Девяткино билет чтобы пройти турникеты, а это может быть невозможно. Я опоздал)

2. На Ладоге есть такой остров, который стоит в стороне от основной переговой гряды. Я все мечтал до него доплыть, но расстрояние по открытой воде казалось слишком большим для байдарки, а затея - опасной. Ну чтож, в этот раз у нас сел навигатор, проебался доп. аккум, плюс было туманно, и мы заблудились и приплыли на этот остров случайно. Мы даже не знали, что это остров, пока я не пошёл по берегу и снова не увидел заходящее солнце уже с другой стороны. Этого острова даже не было на нашей бумажной карте, я тупо не включал его в район плавания, когда её печатал год назад.

3. Я научился нормально пользоваться компасом. Взяв пару азимутов на известные мне ориентиры и построив на карте пару линий, мы выяснили, что точка их пересечения находится сильно за краем бумаги. Теперь без нормальной карты, компаса, транспортира и карандаша - никуда!)

4. На обратном пути мы провели первый боевой тест моего паруса. Результат - ошеломительный успех! Да, выяснилось много проблем и необходимость в доработках, но кто бы сомневался? Главное, что прототип выдержал, и весомую часть пути назад мы пролетели под парусом, не тратя силы на греблю. А сейчас я спешно делаю шверц и увеличенное перо руля перед Белым морем.

00:31 

Поход на выходные

Группа вконтакте.
Повод - мой ДР.
Поход на байдарках по Ладожским шхерам, в планах - ночевка на двух разных островах и походная баня.

00:25 

Вечер виски и стихов

Сегодня наткнулся и подумал вот что. Есть простой карандаш - графтитовый стержень и деревянная оболочка. Я могу погрызть его, сунуть в ухо или написать "хуй". А в руках иного человека - получится невероятная картина, настоящий шедевр. Так же и слова - нам всем они даны одинаково, но кого-то хватает максимум на "Вася, ёба, плесни-ка мне ещё!", я лично могу иной раз выдать какой-то связный интересный текст, а есть люди - настоящие маги, у которых простые слова складываются и вспыхивают так, что смотришь и не можешь оторваться.

Шелли танцует, и тень от ее волос накрывает клуб, как волна накрывает порт
Кэвин курит и молча стоит в углу, неподвижный и невидимый до сих пор.
Через две минуты глаза их встретятся, мир померкнет, сирена взвоет и все трамваи пойдут в депо,
Только он, она, эта музыка и больше нет никого уже;
Да, как видите, это очень простой сюжет.

Шелли танцует, и Кэвин танцует с ней, и ветер танцует там, им что-то двоим шепча
Музыка осязаема, как первый снег, как электричество, как теплота плеча
Контур огней сплетается в витражи; Шелли молчит, колеблется как свеча
Над потолком сверкает, гремит гроза.
Кэвин танцует, темны у него глаза.

Шелли танцует, и в танце она выражает то, что не может выразить в тишине.
"Тишина в два удара громит меня в решето, тишина поедает меня извне.
А тут вдруг она отступает, трусливо прячется в пустоту, и это все по твоей вине."
Пахнет лесным костром сигаретный дым.
Поздно уже назад отыскать следы.

Шелли танцует, и оба танцуют так, как будто жара и вестерн, текила со свистом пуль
Танцуют, не замечая, что вот уже час пустует диджейский пульт
Танцуют, как будто от всех дверей найдутся вот-вот ключи.
(Пожалуйста, музыка, только звучи, звучи.)
Прошу тебя, эй,
звучи.


Сегодня у меня вечер стихов и виски. И кресла на балконе. И трубки с табаком, который невероятным чудом не высох, лёжа на балконе. И вечер новой музыки. Давно я не сидел вот так, наедине с собой. Не хватает костра и шумящих над головой сосен. Но скоро они будут. Бесконечно хорошо и правильно.

Кстати, вопреки сложившейся у нас в России практике, виски это не напиток для компаний. Виски - это напиток одиночества, а в хорошем или плохом смысле, зависит от человека и ситуации. Это такая классная штука, когда в бокал на два пальца, и через полчаса тебя немного ведет. Надо просто правильно его пить.

P.S. автор стиха - Джек-с-фонарем

01:19 

Пятница выдалась жаркой

Утро началось с того, что в процессе ленивого листания ленты вконтакте я наткнулся на запись - репост сообщения с яхт-клуба о том, что вечером загорелся от китайского летающего фонарика один из лодочных сараев, и оказавшиеся поблизости люди спасли от огня яхту "Аврора". У нас в клубе две лодки с именем "Аврора", но упомянутый класс "Конрад-54" не оставляет вариантов — это НАША "Аврора", самая огромная парусная яхта в клубе, рассчитанная на 12 человек экипажа, которой мы пару дней назад втроем с помощью домкрата ставили на место лопасть руля. И именно в нашем сарае, получается, был вчера пожар. Часов в 10 с лишним утра звонит капитан, говорит что я ОЧЕНЬ нужен. Я отпрашиваюсь с работы и лечу в яхт-клуб. с часу дня и до 11 вечера я провожу на высоте около 7 метров с ломом и шуруповертом, постепенно обгорая на солнце. Суть в том, что наш сарай надо было снести ещё в мае. Ну а тут - сам бог велел! Аврора не пострадала, а сарай мы снесли. В субботу - выход на "Кубе", катать людей и зарабатывать деньги.

13:31 

Про репосты вконтакте

Сижу, остаётся три часа до УЗИ.

И я тут кое-что заметил. Всё чаще в моей ленте в ВК появляются посты с просьбой "максимальный репост", авторы которых не получают желаемого. Люди больше не репостят. Грубо говоря, народ научился соотносить важность определенной информации и силу той информационной волны, которую они могут пустить. Когда я что-то публикую от своего лица в ВК - эта информация сразу доносится до ~130 человек, которые на меня подписаны. Такова ширина фронта информволны, которую пускаю лично я. Если информация покажется важной кому-либо из этих 130 человек - он пустит новую волну, фронт которой будет соответствовать количеству его подписчиков. И я, в момент публикации, должен учитывать эту возможность. Люди, в большинстве своём не любящие думать и считать, быстро убедились в порочности репостов — размер информповода вообще никак не соотносился с тем объемом информационного шума, который он создавал. Если мой сосед пытается пристроить котенка, зачем об этом рассказывать тысячам людей, многие из которых в тысячах километров от этого котенка?

В итоге я репощу либо довольно важную политическую информацию (из разряда "это нужно рассказать всем"), либо достаточно конкретные запросы близких людей, которые с 99% не пойдут дальше. К примеру, если мой друг ищет съемное жилье - я публикую его запись на случай, если среди моих подписчиков есть человек, которые может помочь. И судя по всему, к аналогичной схеме пришло большинство людей, уставших от вала мусорной информации.

04:09 

Программирования на C++ пост

Прототип моей ncurses-based игрушки готов. Есть поле 20х20 клеток, покрытое "туманом войны", по которой ползает персонаж (управляется стрелочками) и в пределах радиуса своей видимости открывает карту.

Я не делал дизайн-документа, не составлял ТЗ - просто бросился с головой в код: барахтался, бился головой о стены, доёбывал Алекса на работе и наконец нащупал ногами кое-какую почву. Самое смешное - большую часть времени я программировал на своём смартфоне (дешевый Highscreen на Андроиде)!

Получилось это так - в очередной раз всё сломав, я пытался заставить проект снова компилироваться на компе. В какой-то момент пришла в голову мысль, что я всё равно работаю не над интерфейсом игры, а над "скелетом" - классами и их взаимодействием - и можно закинуть исходники на телефон и использовать время поездки на работу и прочие свободные минутки. Я скопировал все исходники в отдельную папочку, безжалостно вырезал оттуда все упоминания библиотеки для вывода текста (ncurses), заменив весь вывод примитивным текстовым. Где раньше игра мне рисовала игровое поле - вместо этого стала выводить надпись "Нарисовано игровое поле!". И всё в таком духе.

Я пытался заставить проект компиляться на смартфоне около трех дней, по нескольку раз перелопатив весь код. Исправив тонну ошибок, я получал всё новые ошибки компиляции. Сдавшись, я скинул исходники Алексу - он исправил буквально пару ошибок, и они оказались последними! Игра запустилась на телефоне!

Придя домой, я смержил изменения со старой "версией для компьютера", после чего завёл репозиторий на github, чтобы актуальный код всегда был доступен с любого устройства, и легко можно было его мержить.

Исходники можно посмотреть здесь
.

Дальше я планирую вывести на экран характеристики персонажа, сделать генерацию монстров и взаимодействие с ними, сделать обработчик победы/поражения в игре, базовое взаимодействие ("n" - новая игра, "q / ESQ" - выход, сохранение/загрузка автоматические). И после этого возьмусь за написание диздока и ТЗ.

00:50 

Роликово - Самокатное

Ребятишки, я вам лайфхак принёс.
Допустим, у вас есть самокат или ролики.
И скорее всего, накопилась кучка плохо вращающихся или вставших колом подшипников.
Я подскажу, что вам надо сделать ))

читать дальше

00:03 

День, когда сбываются мечты

Левее перед глазами - навигационные приборы, экран с картой фарватера и положением по GPS. Паруса спущены, притянуты к гикам. Где-то внизу, под ногами, рокочет дизель - палуба слегка дрожит. В руках - штурвал. Впереди по курсу - Санкт-Петербург. Мне приходится щуриться и наклоняться то влево, то вправо - мачты и паруса заслоняют ориентир. Справа задувает очень свежий галфвинд, гонит волну — вода бьется в правую скулу, брызги залетают на палубу, и многотонная стальная махина норовит уйти с курса — а я стараюсь её удержать. Штурвал крутится очень легко, на небольшие его движения - менее половины оборота в каждую сторону - корабль не реагирует. Да, это вам не яхта - такое судно может работать ледоколом, когда лёд не толстый. Если бы в жизни можно было бы выиграть, как в компьютерной игре - я бы праздновал победу, по крайней мере на минимальном уровне сложности. Штурвал в руках. Финальная музыка. Титры.

Вторая сложность - это спустить на воду "Кубу", отходить на ней 200 миль, отучиться и получить права.
Третья - стать капитаном собственной яхты.

Как говорится, хочешь рассмешить бога - расскажи ему о своих планах. Но если мне доведется увидеться с ним раньше, чем хотелось бы - у меня уже есть некоторое право показать ему средний палец.

А вообще этот день был безумно длинным. Начался он с вечера субботы - когда я, подходя в гости к Насте (которая теперь живет отдельно), увидел из под порога припаркованного автомобиля свечение. Светился экран телефона. Лежат оный таким образом, что было понятно - человек выходил из машины и обронил. Я набрал номер, который был в числе последних вызовов. Человек на том конце "провода" начал разруливать ситуацию, но владелец телефона вдруг исчез. На рабочем номере девушка трубку не брала. По интернету не отвечала. Утром выяснилось, что она так и не появилась. Все родственники и друзья - на ушах. А мне пришлось взять трубку с собой на палубу и таскать, пока наконец хозяйка не объявилась, жива и здорова.

Что ещё я не упомянул? Пока корабль стоял на зимовке, выход в акваторию Финского залива перекрыл строящийся КАД. Нам пришлось опустить стеньгу (верхушку грот-мачты), чтобы пройти под будущей дорогой. Потом были поставлены два паруса - стаксель и бизань, и судно пошло довольно бодрым темпом. После возвращения (в процессе которого вашему покорному слуге дали порулить) мы устроились на палубе, вывесили на специальных кронштейнах мангал прямо за борт, пили водку и закусывали шашлыком. После чего втроём с уже НАШИМ капитаном добрались до "Кубы" и довели до конца субботнюю уборку мусора.

Но и этим мой день не кончился - я поехал возвращать телефон. Меня встретил знакомый той девушки, владелец СТО, очень горячо поблагодарил и довёз до дома на ДИЗЕЛЬНОМ кабриолете. И вот наконец история закончилась. Я лежу дома на своей кровати — уставший, а лицо горит от загара и ветра.

02:04 

Как прошли мои выходные

Сперва я купил спецовку - комбез и куртку. Очень давно хотел, если честно, но мысль была какая-то недооформившаяся. Всю жизнь мне спецовку выдавали по месту работы, и как то думалось, что оттуда они и берутся обычно. Хочешь свою - укради с работы. Мысль о том, что можно просто её купить, как-то не приходила в голову.

В час дня субботы я был в яхтклубе, со спецовкой и шуруповертом. Мне был вручен лом, я залез на крышу пристройки к огромному сараю, где стоит яхта, и начал планомерно эту пристройку сносить. Потом несколько нудных часов выдирал гвозди. Ситуация осложнялась тем, что гвоздодёр был совмещенный с ломом, держал я его одной рукой, и все время приходилось работать с согнутой спиной. К вечеру стало понятно, что на следующее утро мне организм всё это припомнит. После сноса пристройки в сарае образовалась дыра, которую мы с капитаном успешно заделали и стали собираться домой. Кэп так посматривал на меня иногда, мол как оно там, ещё шевелится? Один раз спросил - мол, тяжело даётся яхтинг? Услышав мой ответ на тему, что ничего другого я не ожидал, одобрительно хмыкнул. Договорились на следующие выходные, либо если будет вариант - то он свяжется со мной, чтобы в будни вечерком поработать. Суть работы, как я понял, такова - огроменный сарай, в котором стоят две яхты, надо разобрать после успешной зимовки. Надеюсь, что разбирать надо только ту половину, что с "Кубой" - вторая яхта просто нереально огромная, только представьте - диаметр её алюминиевой мачты около 50см. "Куба" практически готова к спуску на воду, надо перекрасить корпус и ватерлинию, можно управиться за день. В прошлый год она всё лето простояла "в доке", ремонт закончили только в августу. На воду решили не спускать.

В воскресенье по плану был показ комнаты потенциальной съемщице. Съездил постригся по этому случаю и прибрался в зале. Комната девочку не устроила.

Ну и под вечер воскресенья облачился в спецовку, заперся на балконе с инструментом (и литром разливного пива) и начал ваять! Фактически, план я перевыполнил:

1. заново перепроектировал баллерный узел, упростив его
2. выпилил две "выкройки" из листового алюминия, пару 6 см кусочков палаточных дуг, закладную деталь из фанеры
3. собрал весь узел вместе с пером руля на саморезах, подогнал руль чтобы вращался в вертикальной плоскости

4. придал перу руля аэродинамическую форму (крыло) шлифмашинкой
5. покрыл морилкой, высушил строительным феном, зашкурил вставший дыбом ворс
6. покрыл морилкой, высушил строительным феном, снова зашкурил - уже начисто
7. покрыл первым слоем лака, повесил сушиться на балконе

04:58 

Максидом / байдарочное

Бля, почему я раньше там не был?!
Там есть в продаже фанера 1200х600, это просто чудо какое-то!
Везде в строительных магазинах фанера продаётся листами 1450х1450 - без распила на месте и без машины одному не утащить.
А распил часто происходит только по рабочим часам - то есть, вечером после работы купить лист фанеры можно только целиком.

Короч, купил лист, пришло время делать лопасть руля, баллерное устройство и шверц для байдарки. Открытие сезона с полноценной парусной байдаркой, способной идти боком и даже против ветра - становится всё более реальным.

UPD:
Дело наконец-то сдвинулось с мертвой точки.
Это был третий вечер подряд, когда я сидел на полу около собранной и накачанной байдарки, с разбросанным вокруг алюминиевым профилем и деревяшками, и растерянно смотрел на то место, где должен стоять руль. Три дня, по несколько часов, я так медитировал. Наконец чертёж начерчен, осталось выпилить лопасть руля из фанеры и развертку из детали из листа алюминия, правильно её согнуть и собрать конструкцию. Классическое решение с рулем на "Щуке" выглядит так. Но мало того, что заводской руль денег стоит - конструкция в принципе не рассчитана на нагрузки, которые у меня планируются. Обычно его используют на байдарках, чтобы курс корректировать при гребле - а у меня парус 3.8 квадрата.
запись создана: 06.04.2016 в 21:20

23:39 

Ищем жильца

Итак, пришло время это написать.
Мы ищем жильца. Мы - это я и Паныч.
Комната - большой проходной зал с балконом в трехкомнатной квартире.
Территориально - ст.м. Проспект Большевиков, 10 минут на "локальной" маршрутке (29р проезд на данный момент).
Цена - 9500р за комнату, включая коммуналку, электричество и интернет.

Ищем адекватного, незапарного человека, желательно "из своих" - по знакомству или по духу))

02:29 

Разного и ЯРОСТИ псто

Наконец поставил себе новую пружину переднего амортизатора в самокат, 25 марта открыл сезон. Вопреки моим опасениям, пружина подошла идеально по всем характеристикам. Пруток чуть толще, чем у оригинальной, длина - чуть больше. В результате амортизатор не пробивается, даже если я на самокат прыгаю всем весом! Стуки полностью прекратились, ход снова стал ровный, как сразу после покупки.

После работы поехал в "максилаб" забрать с проявки плёнку. Ожидал, что там совсем пиздец - ан нет! Большая часть плёнки отфоткалась, хотя насколько плохо - сказать пока не могу. Хотел отсканировать в электронный вид, но не тут-то было! Меня не устроили ни цены, ни разрешение.

"А где же ярость?" - спросите вы. ИХ ЕСТЬ У МЕНЯ!
В двух совершенно разных фирмах, занимающихся в том числе фотопечатью (Максилаб и Яркий Мир) девочки на кассе не знают понятия "разрешение сканирования". ОБЕ! с честными и наивными глазами начали твердить про 300 DPI. В первый раз я сперва охренел, а потом прочитал краткую и вдохновенную лекцию о том, что если у вас с пленки 35х24мм получается картинка максимальным разрешением 3000х2000, а 1 дюйм это 25.4мм, то можно сторону пленки длиной 24мм условно считать за один дюйм, и тогда разрешение вашего сканера около 2000 DPI.

В Ярком Мире, снова услышав про 300 DPI, я вздохнул и попросил прайс, на котором были указаны варианты разрешений итоговых картинок. Выяснил, что у них сканер до 4000 DPI, но цена за сканирование одной катушки плёнки 700р! У меня от таких цен волосы зашевелились во всех местах. Я лучше по цене двух пленок возьму дешевый сканер со слайд-модулем - и потом уже, отобрав единичные, самые крутые кадры — можно их сканировать поштучно на крутом оборудовании за деньги. К слову сказать, предельная разрешающая способность моей пленки 260 пар линий на 1 мм, это 260x2x25.4 = 13200 DPI. А вот с объективом я не разобрался, как посчитать, для аналоговой съемки там ад, пиздец и формулы :D

А вообще, для сравнения - у меня цифровая зеркалка 8 Mpix, а сканирование плёночного кадра с 4000 DPI даст на выходе 21.4 Mpix.

23:05 

Фото-псто

Отдал в проявку плёнку, не стал проявлять сам. Как подсказал Филипп, я наебался с батарейками - поставил в "Зенит 122" две "таблеточки" LR44, а надо хитрые какие-то с пониженным вольтажом. В итоге экспонометр мне безбожно врал, а я ему верил. Ну и ISO64 ситуацию не улучшило. После долгого разглядывания фотопленок на витрине, увидел невзрачную катушку с ч/б пленкой (ISO100\36, за 200р) с подписью maxilab. Оказалось, что им пленка приходит большими бобинами, а они сами её в катушки сматывают. Взял.

А ещё нашёл для смартфонов приложение-экспонометр, вот такое:


Умеет мерять как прямой свет, так и отраженный. Причем прямой меряет датчиком освещения на лицевой панели (подносишь смарт к объекту съемки экраном к себе), а отражённый - через основную камеру на задней крышке.

15:21 

Фотосессия)

Я беру два фотоаппарата, свою зеркалку и пленочный "Зенит 122" с ч/б плёнкой, и еду на Крестовский. Если вдруг кто жаждет получить черно-белую бумажную фотокарточку со своим плохо получившимся лицом - вы знаете как меня найти.

13:07 

Кратко-пост

Автошкола перенеслась с 15 на 22е - не набралась группа. Поставил себе приложение, в процессе поездки на работу и обратно учу билеты. Все довольно легко и логично, пока всё запоминалось с первого раза - к вечеру первого дня я прогонял 5 билетов из 40 без ошибок.

Стал узнавать про яхт-школу, выяснил что получить "рулевого прибрежных судов" (международные права, система IYT) дешево не получится. Везде полный курс обучения от 80 до 100 тысяч. В итоге выбрал trysail.ru: 25 т.р. теория, потом 40 т.р. за недельный выход по Балтике, всего надо будет две недели на воде провести, но между ними допускается большой промежуток. Таким образом, я могу уложить первые траты в вменяемые 65 т.р. после чего хорошо подумать, надо ли оно мне, подкопить ещё 40 т.р. и закончить обучение, получив международные права.

На самом деле у меня что-то неясное со здоровьем. Несмотря на мои попытки питаться правильно, живот продолжает побаливать. Я плотно занялся этим сейчас, побывал у терапевта, завтра запись к гастроэнтерологу и сдача анализов.

03:39 

С++

Иногда натыкаешься на чужой код и аж дух захватывает.
Сегодня вот решал задачу: определить количество возможных расстановок N ферзей на доске NxN, так чтобы они не били друг друга.
Так как осознать, как работает стандартный алгоритм, у меня ума не хватает, решил попробовать брутфорс.
Столкнулся с проблемой - для перебора поля NxN нужно N уровней вложенности циклов.

Наткнулся на эту вот жемчужину.
Это гениально по нескольким причинам:
1. чувак придумал, как сделать динамически переменную вложенность циклов без рекурсивных функций, просто через один цикл
2. реализовал это коротко и так, что понятно даже таким дибилам, как я
3. у него учтена возможность задать отдельные ограничения для итераторов вложенных циклов

В итоге моя задача решилась в ТРИ значимых строчки.
Это перебор всех вариантов расстановки (восемь в восьмой степени для обычной доски) и проверка функцией check, бьют ли ферзи друг друга.



P.S. Stepic.org всё равно не принял ответ, тупой перебор работает слишком медленно, 5 секунд для доски 8х8, пару минут 9х9 и так далее, по очень крутой экспоненте. Придётся делать через рекурсию и по уму.

P.P.S. Попытался распараллелить на два потока - хер там! )) Но сама попытка!

05:31 

Программистское

Выполнил последнее задание восьмого раздела курсов по с++ производства Яндекса.
Больше всего бесит, что я не умею передавать даже банально статичный (двухмерный) массив в функцию по указателю, из-за чего не могу в нужный момент использовать функцию, и приходится для отладки по нескольку раз копипастить огромные куски кода, потом править каждый по нескольку раз, потом удалять.

После долгих изысканий и гуглёжки вроде нашёл решение, как передать функции двухмерный массив — в качестве параметра передаётся указатель на первый элемент массива &arr[0][0], в самой функции этот элемент принимается как ссылка на переменную int *a, плюс к ней ещё две переменных - размерность массива m*n. После чего доступ к остальным элементам массива реализуется в цикле пизданутой конструкцией *(a + i*m + j).

Работает это так. Выделение памяти под статичный массив идёт в области стека линейно, то есть одним куском. Зная адрес ячейки памяти, где хранится первый элемент, мы можем получить все остальные, напрямую извлекая содержимое памяти с заданным смещением. Прикол в том, что чужой пример с реализацией такого способа у меня отлично работает, а мои попытки его использовать успеха не приносят))

главная