касательно онлайн курсов для новичесов imho, на степике лучше пройти курс от cs center, чем аналогичный от mail.ru, это https://stepik.org/course/7 и его продолжение https://stepik.org/course/3206 если у кого то есть положительный опыт прохождения других онлайн курсов - пишите в тред
дали задание на многопоточность:умножить 2 матриц.Я правильно понимаю что нужно в одном потоке(пусть их всего 2) обработать половину строк и столбцов и во втором другие половины.Так?
>>1286190 Нет, тебе надо на каждую единицу данных которую можно посчитать независимо запускать отдельный тред. В твоём случае это на каждую строку в левой матрице
double number; vector<double> numbers; while (cin>>number) { while (numbers.size()<3){ numbers.push_back(number); cout << numbers[numbers.size()-1] << '\n'; } } Мне нужно, чтобы после ввода числа оно сразу же выводилось, но проблема в том, что оно выводится 3 раза вместо одного и в том,что выводящееся записывается в вектор.
>>1286157 (OP) Господа, чего можно не особо громоздкого навернуть чтобы иметь представление о последнем стандарте плюсов?
Мне для общего развития. Жизнь-то по-всякому повернуться может, авось и приятную работейку на крестах встречу. Был даже знакомый стартаперо-хуяпер, который в датасайнс укатился, грил что если из крестов пользовать самые последние фичи то в целом это один из приятнейших языков для вкатывания в 2к18 если ты не веб-макак.
Сам я пока наткнулся ровно на то почему в своё время в плюсы не полез - чудовищный исторический разброс применяемых методов даже в плане чистых бестпрактис. Вплоть до того что в книгах ДОСовские идиомы встречаются.
>>1286883 Лучше б как все, с питончика С чистый если очень уж хочется работу с памятью показать А насчёт scratch кстати у нас в школе применяли какой-то графический язык, было норм
>>1286803 Последня книга Мейерса "Эффективный и современный С++", в котором поднимаются вопросы изменений в языке с С++11 и С++14. Это абсолютный минимум, но который уже требует от тебя бекграунда в С++, а именно четкого понимания того, зачем вообще потребовалось расширять стандарт языка и его возможности, то есть требует знания С++98. Дальше все хуже. Статьи в интернете - мусор по большей части. Что может помочь - это видео с конференций в шапке. Есть еще второе издание "Шаблонов С++" Джосаттиса, в котором более-менее детально описывается что произошло с шаблонами в С11 и С++17. Эта книга замечательная, появился русский перевод по сумашедшей цене, но для практикующего разраба это стоит того. Есть второе издание "Стандартной библиотеки" Джосаттиса, там stl стандарта С++11. В книге "Параллельное программирование на С++ в действии" Энтони Уильямса обсуждаются и используются средства поддержки параллельного исполнения в стандарте С++11. Для большинства же изменений в стандарте с трудом можно найти вменяемое объяснение что и как. Приходится тупо набивать шишки на практике и пытаться хоть-что то понять обращаясь к тексту самого стандарта, который теперь просто монструозен по объему.
>>1287018 Начал изучать Go и просто охуел от того как просто и понятно можно всё сделать. Нужен С++2 или ещё что, обратная совместимость это пиздец на таком промежутке времени
>>1287039 В го кстати хотят генерики какие-то сделать Но вот я сейчас задумался о своих словах об обратной совместимости и понял что не прав. По сути с++ определяется обратной совместимостью и если её убрать то останется просто ещё один язык, как раст или д, да ещё с ебанутой системой дизайна комитетом
>>1287045 >останется просто ещё один язык, как раст или д ммм, за крестами стоит огромное количество инструментария разработки, библиотек на все что угодно, наработанных десятилетиями практик, книг и материалов
>>1287053 да ладна явка выстрелила в ентерпрайзе, это да особенно все что касается middleware, по сути в этой области решения на яве задавили все остальное сишка и кресты же - универсальный инструмент
>>1287063 дело движется к тому что в следующие стандарты таки в стандартную библиотеку добавят средства работы с сетью http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4771.pdf но это встречает некое сопротивление, в том числе и по идеологическим причинам, основанных на том что невозможно создать эффективную универсальную библиотеку для работы с сетью, это будет всегда компромис ну а существующих библиотек полно
Сап, двач. Такой вопрос. Есть последовательность байтов. Хранить её планирую в векторе беззнаковых чаров. В неё нужно класть как однобайтовые, так и 2 и более байтовые цифры. То есть если надо положить какой-нибудь uint16, то сначала идёт(допустим) старший байт, затем младший.
Ничего умнее следующего пока не придумал, но я думаю что должны быть способы.
template<typename T> void insert(std::vector<unsigned char>& vec, const T elem) { const auto ptr = reinterpret_cast<unsigned char>(&elem); for (int i = 0; i < sizeof(elem); i++) vec.push_back(*(ptr+i)); }
>>1287178 >есть последовательность байтов, но планирую класть туда цифры Твой метод не годится потому что ты не знаешь какая на твоём процессоре эндианность Вообще непонятно что ты хочешь сделать, это говно не распаковать потом
Ребят такой вопрос по Visual Studio 2017. Поставил WDK и SDK для 10. Теперь при компиляции проектов. Пишет "warning MSB8038: устранение рисков Spectre включено, однако библиотеки Spectre с устраненными рисками не найдены."
Нашел в свойствах проектах эту настройку и отключил. Но этот конфиг по умолчанию для всех проектов врубился. Как мне для всех создаваемых проектах вырубить эту настройку "Устранение рисков Spectre", постоянно в каждом проекте заходить и вырубать совсем бред...
расскажите о перспективах крестов. Сам работаю веб мартыханом уже несколько лет, давно мечтаю перекатиться в более серьёзное программирование, задрочить алгоритмы и устроиться в яндекс или подобную контору.
в универе были кресты и какое-то представление имею о них, но не уверен в их перспективности. Знаю, что много совковых нии-параш, где люди десятилетиями пишут си подобный крестокод без каких-либо современных технологий за копейки: это типичная работа для крестовика в рашке? или скорее исключение из правил и большая часть вакансий - машин лёрнинг с нейронными сетями и искусственным интеллектом и алгоритмами?
не лучше ли вкатываться в джаву/скалу/свифт? питон не перевариваю
>>1287911 >о перспективах если одним словом: становятся специализированным инструментом если с точки зрения работы: нужно много знать, тупо много учить, денег будешь получать при этом меньше чем если бы занялся каким-то другим программированием если действительно хочешь вкатываться - проверь себя: открой на середине "шаблоны с++" джосаттиса или майерса посленюю книгу или какой-нибудь доклад с cppcon или boostcon или, еще лучше, любую библиотеку мета-программирования из boost и спроси себя, потянешь ли ты это и при этом будь готов работать за 80 в дс уже зная все это
>>1287911 все так, в НИИ ебашут на крестах и ку-тэ за 45-80 т.р. (МАКСИМУМ) кадрам с 10 годами платят может около 90. Работа тупая, откатные проекты и прочее говно, перспектив никаких.
Аноны, всем добра, можете подсказать, что можно добавить в мейн функцию, чтобы она не казалась пресной ? Дело в том, что программа по сути вычисляет хуйню и все.Нужно обязательно задействовать функции, по этому все вычисления происходят у меня в отдельной функции, начиная с "Insert..." заканчивая выводом результата. Препод доебывает, говоря что в главной должно быть хоть что-то, а я хуй знает что туда добавить, кроме как cout << "" << endl; ... namefunct(); system("pause"); return 0;
>>1288145 Хорошо, сейчас сделаю( по правде я так планировал с самого начала сделать) А можно какой-нибудь цикл добавить, который будет тоже участвовать в процессе, но чтобы не переписывать само вычисление(для меня это оказалось не слишком легкой задачей, т.к. вникать начал не так давно)
>>1287911 Забей ты хуй на кресты. Зп ниже чем у жавистов, голова болит больше. Да и кресты уже не те кресты, а какое то новомодное говно. И если выбирать между ними то жава однозначно
>>1288183 >Какое говно генерирует крестовый компилятор - это еще гадать надо. ты всегда можешь смотреть ассемблерный выхлоп компилятора вообще то это стандартная практика при любой оптимизации кода, даже не нужно проводить замеры и прочее, глянул что сгенерились правильные инструкции и значит ты на верном пути
>>1287919 >>1287982 >кадрам с 10 годами платят может около 90 >при этом будь готов работать за 80 в дс уже зная все это пиздец полный, через год работы джуном на пыхе получал уже больше. Печаль-беда, придётся оставаться веб-какахой изи перекатываться в джаву для удовлетворения жажды знаний. Ну или свифт (только кому он нахуй нужон)
Ребзи, что значит вот эта штука после описания структуры например? struct name {}val; вот после фигурных скобок указывается, как это называется? гуглю че то не правильно подскажите плз, почитаю
>>1288495 што значет не дает? 1. Small String Optimization - относительно небольшие строки не требуют динамических аллокаций 2. AllocatorAwareContainer - со стандартными стрингами можно использовать кастомные аллокаторы. Охуенно, если ты хочешь память поконтролировать. 3. std::string - алиас для специализированного char-ами типа std::basic_string, который охуенен тем, что поддерживает не только 1-байтные символы, но и больше. Никогда не забывай про Юникод, программы щас не только американцы используют 4. std::char_traits - мало того, можно еще и кастомизировать привычные операции для стандартных строк. Хочешь, чтобы у тебя были новые пиздатые строки, которые можно сравнивать, игнорируя то, заглавные ли символы или строчные? Запили новые char_traits, делай алиас using MyCaseInsensitiveString = std::basic_string<char, MyCaseInsensitiveCharTraits> и на нахуй, у тебя есть твои пиздатые строки, не надо писать васянские функции compareCaseInsensitive, потому что у тебя из коробки есть operator==, который сделает то, что надо.
https://moikrug.ru/vacancies/1000045444 мой круг интересен тем, что показывает количество просмотревших вакансию вот, например, 2500 просмотров так чтож работодатели имеют из чего выбирать, их, наверное, завалили резюмехами
Общее представление об структурах и алгоритмах; C++14/17; RAII и как правильно его готовить (move семантика, чем отличается prvalue от xvalue, умные указатели (чем make_shared отличается от shared_ptr)); Паттерны-хуятерны; динамический полиморфизм (плюсом будет знание, как делают «виртуальные» функции на сях, почему штатный полиморфизм в плюсах плох, разницу между сообщениями и методами (и почему существуют такие библиотеки как Folly.Poly, dynamix, dyno)); статический полиморфизм; метапрограммирование; По многопоточности: потоки, блокировки (желательно знать еще транзакционную память и как её использовать (смотри TBB) ), атомарные опрерации (желательно иметь предстовление о memory order, strong/weak опреации), конкурентные структуры, общее представление о lock-free алгоритмах ( wait-free будет плюсом, но я так и не нашел где они используются за пределами академической среды); общее представление о гетерогенном программировании (task based программирование, flow graph (смотри все в TBB, она должна стать, де факто, твоей основной библиотекой по многопоточности)) Ближе к хардверу: представление о том, что твой код будет представлять (x86 ассемблер, особенно со всеми расширениями - боль, можно понимать LLVM IR и ты мало что потеряешь от этого); само собой, как компиляция происходит, общее представление о posix (когда его применять); Еще плюсом будет умение грамотно пользоваться менеджерами пакетов типо conan; правильно деплоить свое приложение; общие скиллы для программиста(система контроля версий, анализаторы, сайнитайзеры, форматеры кода, jira, уметь в тайм-менеджмент и не заваливать дедлайны); следить что там происходит в мире плюсов;
>>1289465 >запили Джун и мидл, да и сеньор — это не про запиливание lockfree структур данных. Этим специально обученные люди занимаются. Ну или просто такая структура берётся на стороне.
Есть ли смысл вообще отказаться от всех сырых невладеющих поинтеров в пользу optional reference_wrapper?
Что требуется для запуска программы, написанной на C++?Аноним04/11/18 Вск 15:04:31#110№1289612
Нужен ли для работы самого простого Hello World'а какой-нибудь Visual Studio C++ Redistributable? Или какие-то библиотеки, которых нет на винде по умолчанию? Покопался я в exe'шнике, получившемся при компиляции следующего кода:
#include <iostream> int main() { std::cout << "Hello, world!\n"; }
>>1289520 там написано что это минимальные требования к миду касательно знания собственно крестов помимо этого тебе нужно знать английский и иметь базовые social skills и, да, платить тебе будут не "мильон в месяц", а 80-100 и это в дс
В прошлом треде не ответили, репостну в этот, может за месяц шарящий анон поможет Прошу помощи. Хотел разобраться с тем как работает next_pemutation и завис. Нашёл хорошую статью на стаковерфлоу, там всё достаточно чётко обьяснили. Но я всё равно не пойму. Как функция меняет значения с 1243 до 1324 за один переход цикла? Я так понимаю мы берем число и проверяем, что если все числа справа от него в убывающем порядке то больше возможных комбинаций справа нет. Но как блять оно перешло с 1243 до 1324, там ведь только свап нужен. И как работает while (!(i < --k)), оно должно выбирать наибольший элемент или как? И почему j меняет значение только иногда, оно ведь по идее должно с каждой итерацией меняться, разве нет? Статью с оверфлоу и скрин вывода вывод значений я для удобства добавил прикладываю. https://stackoverflow.com/questions/11483060/stdnext-permutation-implementation-explanation
>>1289750 while (!(i < --k)) исполняется только когда все числа справа от i в убывающем порядке и исчет справа, соответсвенно оно найдёт наименьшую цифру которая больше *i и тем самым обеспечит минимальный переход при пермутации
>>1289770 О, тот самый шарящий анон. Если не устал то можешь помочь на остальные вопросы ответить? Я то я сидел с бумажкой и ручкой писал, и в итоге всё равно где-то туплю. Первый час я правда потратил чтобы понять что после while(!(i < *--k)) нет фигурных скобок сука
>>1289750 >Но как блять оно перешло с 1243 до 1324, там ведь только свап нужен 1324-1243 < 1342-1243, просто свапа мало, надо и остальные цифры привести в порядок возрастания чтобы алгоритм выбрал пермутации 13хх
>>1289750 J меняет значение если все цифры справа в убывающем порядке, то есть итерации исчерпаны. После этого цифра высшего порядка меняется и для все цифр справа всё начинается снова, тут есть некоторая рекурсивность
>>1289780 Это in-place алгоритм, он не выделяет никакой памяти и даже не знает какого типа значения он пермутирует, как бы он выделял память или ещё что?
>>1289786 Не пойму как он это будет делать. Вот если стрелочками показать ну или написать просто то какой код будет исполнятся если вернется фолс? Если тру то цикл просто пойдет дальше выходит.
>>1289790 Вооооо. Спасибо большое. Все части кода я вроде более-менее понял. Сейчас будет свободных часов 5 впереди, буду сидеть разбираться пока не смогу написать аналогичный алгоритм сам. Какой-то очень адекватный анон пошёл.
Всем здрасьте. Хочу разобраться с литералами. Вот считывать сколь угодно длинные строки я умею, а как считывать сколь угодно длинные числа? В какие переменные их можно положить и как?
>>1289963 Не очень понял, но предлагается написать что-то типа my_long_int(const string num)??? А как такая конструкция будет считывать записи типа my_long_int mli = 1234 ??? И еще вопрос, попробовал скомпилировать, плюсы вообще не хотят работать с числами, в которых много знаков.
>>1290004 >попробовал скомпилировать, плюсы вообще не хотят работать с числами, в которых много знаков ???????????????????????? ???????????? ????????????????????????????????????????? ??????
>>1290022 Короче вопрос такой. Могу ли я поймать в какую-то переменную число из 60 символов и если могу то в какую максимально примитивнуюпеременную? В смысле там есть реализация в бусте длинной арифметики, но я что-то не смог найти конструктор этих чисел и посмотреть во что там собственно ловят.
>>1290070 Сука, я же обещал себе не заходить в этот тред поле того, как ни один человек в нем не знал, что такое ПОД-типы и какие у них особенности инициализации. Нахуй вы вообще что-то пишите если в плюсах на уровне школьника разбираетесь?
>>1290066 Не существует. Стандарт это позволяет, но нужно реализовать компилятор с соответствующим расширением, делающим валидным литералы бесконечной длины.
>>1290066 Лучшее, что ты можешь с подобным синтаксисом - использовать какой-нибудь кастомный тип для большой арифметики и user-defined literals, чтобы конструировать из строки с цифрами число, как тут уже сказали:
struct BigInteger { unsigned long digits; };
BigInteger operator""_bigint(const char* value, unsigned long len) { return { len }; }
void foo() { BigInteger x = "123213213124512512542132213"_bigint; }
Как понять в qt когда надо делать delete для объекта, а когда нет? А то в руководствах нихуя не чистят после выделения памяти в куче и у меня диссонанс какой-то.
>>1290128 У объекта есть owner, который чистит всех у кого он числится влалельцем. Соответственно если овнер не нулевой, то чистить не надо, надо чистить только самый топовый объект
>>1290134 QApplication у тебя живет на стеке и поэтому деструктор у него вызовется сам при выходе QApplication из области видимости. Собственно, насколько я помню, это справедливо для всех Qt-объектов
>>1290153 Используй умные указатели, люк. В современном С++ сырые указатели это зашквар. В частости тут подойдет либо unique_ptr либо QSharedPointer. Но вообще загугли это, я с Qt не работал очень давно и может там есть какие-то проблемы с этим.
>>1290170 По-твоему для использования умных указателей нужно сдать экзамен и получить диплом? Как правило это сорокалетние старперы так рассуждают, которые привыкли срать new и delete везде, вместо того, чтобы этого не делать. >как панацею Твои проекции.
Аноны, а бест практисы в факе не содержат в себе задач для самостоятельного решения? А то как-то так главу прочитал, через неделю только пятую часть вспомнишь. Или там нужно основные моменты уловить просто?
Погромисты, приветствую ! Пишу свои хайворлды (лабы) в Sublime text, компилируя gcc (MinGW) под шиндой. Все классно, мне это очень удобно, приятно и легко. Ранее использовал готовые IDE и там в свойствах проджекта задавалась возможность компиляции с всеми библиотеками и прочими ресурсами в готовый файл (это RAD Studio) с MSVC все еще проще было так как регисты есть на всех пк (под шиндовс ofc), а мне их с головой.
Закинул в PATH путь до MinGW и в Build system (Sublime - Tools) выбрал С++ Single file. Компилирую по Ctrl+B, все работает, но стоит перетащить бинарник туда где не установлена MinGW естественно ничего не запускается сыпя ошибками о отсутствии библиотек.
Как можно безболезненно выйти из ситуации (устал компилировать потом отдельно в VS) ? Может достаточно просто закинуть зависимости в папку с бинарником ?
Все что указано в include: #include "windows.h" #include "iostream" #include "cstring" #include "fstream"
Не помню кстати какие что конкретно в ошибке указывалось, возможно надо еще чего добавить ?
Сап, двач! Нужен совет. Я хочу сделать себе лёгкое логирование(в файл) работы функций. Так вот, как это сделать? Идея в том, чтобы создать макрос/функцию, которая оборачивает другую функцию, выводит значения всех её параметров, затем вызывает, а затем выводит результат. Что можно попробовать?
>>1286157 (OP) Джентельмены, походу только здесь могу докопаться до истины В одном треде Сексача произошел срач между околоайтишниками: https://2ch.hk/sex/res/4884780.html один утверждал, что можно "прочитать пару книжек по С++ и алгоритмам" и уже бежать искать работу за 100-150к, даже без всякого опыта, в качестве пруфа кидался этот пикрил. В ответ ему прилетало что он хуй и чмо, но без особых аргументов Так кто прав-то??
>>1291329 >прочитать пару книжек по С++ и алгоритмам если просто так прочитаешь - ничего в голове не останется а если выполнять примеры и делать упражнения, то "пара книг" у тебя годик вьябывания по 10 часов в день займет современные кресты, это ни сишка, но даже тот же k&r будешь делать пару месяцев минимум
Аноны, пытаюсь разобраться с сортировкой вставками, и возникло пару вопросов. В данном коде функция merge будет вызываться каждый раз, или сначала mergeSort пойдет в рекурсию? Я так понял оно не выполниться только если размер подмассива еденичный, то есть начиная с размера равного двойке оно будет сортировать. И когда оно будет мёржить? Теория звучит гораздо проще реализации
>>1291373 Всё, в целом с алгоритмом я разобрался, но осталась пара вопросов: этот >>1291373 и где в этом коде реализуется сортировка? Я так понял цикл while выбирает одно из значений и сравнивает его с аналогичным в другой части массива, и в итоге записывает одно из них, увеличивая количество записанных чисел и указатель в одном из массивов. Но когда я рисовал алгоритм на листочке я так и не понял где оно сортирует его, если при достижении размера 1 слияние не выполняется, а при двойке оно просто их сливает. Может кто пояснить на конкретно этом коде? cpp.sh/2x7x5
>>1291404 Ну бля я хуй знает как описать, там практически весь алгоритм это слияние двух подмассивов и рекурсия, а вот момент минимальный подмассив сортируется я не могу понять точнее найти
>>1290073 >что такое ПОД-типы На работе на мой вопрос чё это за хуйня тимлид сказал "хуй знает, наверное pairs of double", так что не будь так строг к анонам, анон.
>>1291419 Пиздец ты тупой Внизу дерева останется два или 3 элемента которые будут мерджится, а мерджатся они в порядке возрастания Возьми небольшой массив и пройдись по алгоритму в уме
>>1291423 >В плюсах никто классы с типами не путает Алсо на сппреференс то и дело в описании сбиваются с классов на типы и наоборот, так что не всё так однозначно.
>>1291422 Сейчас пройдусь, только ответь на первый вопрос пожалуйста. Сначала функция сама себя вызовет, а потом только будет мёржить? Выходит оно сначала 2+2 сложит, потом 4+4 и по возрастанию?
>>1291430 Оно разве до 1 дойдет? Там ведь если размер равен 1 то return. Если оно с еденицы складывать начинает то сортировка понятна. >>1291429 Кинул же в том посте еще
>>1291434 Ну вот как-то так выходит, верно? АААА блять, оно же сначала разделит массив на два, а потом в рекурсии проверит. Спасибо аноны, выручаете, как всегда.
Эй, дегенераты с ПОД типами: > A Plain Old Data Structure in C++ is an aggregate class that contains only PODS as members, has no user-defined destructor, no user-defined copy assignment operator, and no nonstatic members of pointer-to-member type. Greater detail can be found in this answer for C++98/03.
>>1291442 http://www.heaventools.ru/pe-explorer.htm Этим чтоли посмотри. Ты куда вкатываешься вообще: в сиспрограмминг или фронтэнд с портфолями? Даже без всего этого можешь тупо пытаться смотреть какие длл требует и добавлять в папочку (костыли из костылей костыльных)
>>1291490 >Requirements Either: a scalar type; a class type (class or struct or union) that: is a trivial type; is a standard layout type; has no non-static members that are non-POD; an array of such type. Далеко не только то, что ты описал, а вообще к чему ты это? Я как раз и писал, что даже тимлид не знал, что такое pod, говорит pairs of doubles.
>>1291498 На всякий случай scalar это possibly cv-qualified arithmetic, pointer, pointer to member, enumeration, or std::nullptr_t type, другими словами с под типами гораздо чаще сталкиваетесь, чем думаете.
>>1291498 Я всё к тому что проведя очень много времени за всем этим вычитыванием остаешься в ситуации когда даже с сраной джава макаки требуют меньше чем с тебя за большие деньги. Нахуй так жить. Перекатываюсь
>>1291505 Да я не провожу много времени, просто столкнулся в реквайрментсах с POD типами, спросил, получил ответ про пары даблов, решил загуглить. Я не какой-то там книжный червь. Как раз про то и говорю, что не то, что аноны с двача, чувак с дохера годами опыта понятия не имел что это.
любая офисная работа лучше работы грузчиком или вообще работы в магазине ты, наверное, просто не был на дне, не вьябывал на погрузке, не стоял в магазе в зале или на кассе, не работал в цеху на заводах, даже по студенчеству и тебе не с чем сравнить
>>1291490 Да, через манифесты это еще тот костыль. Никуда я не вкатываюсь, каким - то местом попал в местный универ мухосранска на ОТи погромист специальность (ПИ), сам я не погромист ниразу, точнее писал много чего и были времена действительно веселый,даже банчил своими продуктами. Но я к этому перегорел еще до 20 - ти лет и это уже далеко не то что мне нужно ин лайф. Соответственно ВУЗ кончаю так сквозь пальцы чтобы маму не обижать. Там постоянно что - то погромировать надо, но, в основном основы основ (то что я описал в инклуд это максимум что может понадобится) максимум ООП какой - нибудь. Я уже не могу терпеть всякие IDE, мне чистый компилятор и текст эдитор за глаза, но, свои програмки я должен демонстрировать в вузе, где они не открываются. Чтобы начали открываться приходится в стужии финал компилировать, но это иногда черевато переделыванием половины кода нахуй. Узнать какие библиотеки требует заранее я тоже не могу. Неужели не предусмотрен вариант чтобы все зависимости в бинарник сами запоковались ну или в папку копирнулись. Может можно скормить бинарник линкеру там или компоновщику. Я хз как параметры компиляции в стандартном пресети билда саблайма менять.
>>1291521 Сравнил грузчика в порту с пинанием хуев с тележками. Эти сраные 8 часов с офисными дегенератами подрывает здоровье посильнее физического труда.
Почему std::map insert требует pair? Это же лишняя аллокация. Погуглил и пишут что есть emplace, но только в C++11. Почему нельзя было сделать это в ранних версиях? Просто метод с двумя параметрами (ключ и значение), а не один параметр-пара.
>>1291991 Алсо, есть ли какие-то более менее стандартные реализации concurrent map для плюсов? Итерироваться не нужно, только вставка-удаление. Или только мьютекс вручную?
>>1292032 вернее, относительно легко делается lock-free стек и очередь, что собственно и сделано в boost но реализация хорошего lock-free map - адски сложное дело
>>1292010 Нет, в С++ переменые умеют храниться на стеке, а не указывать куда-то в кучу, как в случае управляемых языков. Поэтому выделение памяти под std::pair будет просто как для любой локальной переменной. Вызов конструктора компилятор заинлайнит и поэтому тут вообще никаких проблем нет. Зато сам map хранит свои ноды в куче, так что там аллокаций будь здоров, без pool-аллокатора это крайне тормозная штука, не рекомендую. Но заменой параметров у insert ситуацию не поправишь.
>>1292073 ну это понятно, что для мапов и списков вместо аллокатора по умолчанию по идее лучше взять кастомный, основанный на пуле, например из буста пул взять только вот посмотреть бы как на практике это реализуют в работающих проектах
Аноны подскажите пожайлуста, почему первое считывание не работает? Дальше все хорошо идёт, а в первой проблема. Структуры использовать нельзя, препод заебал уже
>>1292420 По заданию не более 12 букв во всех трёх строках. Но за помощь спасибо. Не заметил как-то. Алсо, тут еще одна проблема. Программа зависает во всех случаях, даже если я просто ввожу значения из файла во входной поток. Дело в том что оно не видит где конец файла и пытается считать дальше, или в чём? Код приложу сейчас. cpp.sh/3zvej
>>1292425 С радостью бы использовал шаблонные классы, но препод сказал что тот, кто будет использовать СТЛ до его изучения получит по ебалу, а его работу не примут. В чём тогда смысл учить наперед я не понимаю. Но учу. >>1292428 Спасибо, извиняюсь за невнимательность.
Сап. Есть такая (стандартная?) функция exit(). Нужно ли ей такую строку прописывать #include <cstdlib> ? Убрал эту строку, вроде пашет. Книга по которой изучаю наверно уже старая. Если не собираюсь использовать старый компилятор можно уже писать без этой строчки?
>>1292864 stackoverflow.com/questions/35910043/why-does-rand-compile-without-including-cstdlib-or-using-namespace-std Вам в ваших ебучих шарагах надо курс по гуглению давать, с экзаменами
Крестобояре, внимание, вопрос: почему при вводе символа вместо числа показанный фрагмент кода впадает в истерию и начинает циклически перезапускать код не спрашивая ввода значения через scanf?
Не тот скрин отправил, сейчас исправлюсь. Алсо, scanf юзал только потому что он помог мне избавиться от этого циклического говна в предыдущем фрагменте, когда я заменил им cin. Но тут почему-то не сработало.
>>1292730 имхо, не лучше, но на уровне лично мне одинаково интересно смотреть доклады и у них и у нас второе, признаюсь, мне не хватает знаний английского языка, когда докладчики начинают объяснять какие-то новые концепции, вводимые в язык, с которыми я еще не сталкивался проще сначала послушать человека который говорит о том же но на русском языке
Всем сап. Есть задание: описать в методах класса два конструктора. Один должен инициализировать поля единицами, другой - заданным набором значений. Как сделать так, чтобы по выбору пользователя (1 пик) >Введите 1, чтобы.. У меня срабатывал конструктор, заполняющий произв. значениями, а при нуле - единицы. Пытаюсь запихнуть всё это в операторы ветвления, но после этого у меня перестают определяться методы из этого класса. Как быть? Весь код: https://pastebin.com/8uBFNi4f
Анон, почему когда я в visual studio ввожу 1234567890 в этe программу, то вместо 9876543210 я получаю 1286608618? Программа должна выстраивать из цифр вводимого числа максимально большое число. Подобное наблюдается при вводе любого числа, в котором больше 10 цифр.
#include <stdio.h> int main() { int n, ost, x1=0, x2=0, x3=0, x4=0, x5=0, x6=0, x7=0, x8=0, x9=0; int s0=1, s1=1, s2=1, s3=1, s4=1, s5=1, s6=1, s7=1, s8=1, s9=1; scanf_s("%d", &n);
>>1293032 У того препода такой способ обучения, заставляет решать задачи лишая нас некоторых упрощающих решение возможностей, заставляя искать иной выход из поставленной ситуации.
>>1293042 Вводится число (n<=10^15), надо написать такую программу, которая меняет цифры введённого числа местами, образуя максимально возможное число из этих цифр. Не слово в слово, но как запомнил. Заданий было несколько, на лабе не решил ни одного, только одно сейчас дома осилил.
>>1293095 >Да и вообще, а если тебе просто нужно 1000 сравнительно небольших чисел возвести в степень по очереди. Не, один хуй имеет смысл. Вот про это соглашусь, а про питухон - там разве числа неограниченной величины? (без decimals)
>>1293106 >Я имею в виду, что пытался скомпилировать твой код через VS 2010 Express, ввёл число и получил хуй. У вас там наверное манямирок со своими манякомпиляторами, работающими по вашим же манястандартам. Последняя версия использует те же io функции, что и твое поделие
Блять, чет сейчас сижу и сам с себя проигрываю в гiлаc
НАПИСАЛ ОВЕР 1000 СТРОК КОДА @ ВСЕ РАБОТАЕТ @ РЕШАЕШЬ ПРИКРУТИТЬ ЕЩЕ ОДНУ СВИСТОПЕРДЕЛКУ @ ВСЕ РАБОТАЕТ, ПРИ ПОПЫТКЕ ИСПОЛЬЗОВАТЬ СВЕЖЕПРИКРУЧЕННОЕ - КРАШИТСЯ @ ПЫТАЕШЬСЯ ПОЧИНИТЬ @ ПЕРЕСТАЕТ РАБОТАТЬ ВООБЩЕ ВСЕ @ УДАЛИЛ ВСЕ ЧТО ПРИКРУТИЛ @ КОД ВСЁ ЕЩЕ НЕ ПОДАЕТ ПРИЗНАКОВ ЖИЗНИ, ПРИ ТОМ ЧТО СТАБИЛЬНО КОМПИЛИРУЕТСЯ @ НАЧИНАЕШЬ ПРОЗВАНИВАТЬ, РАЗДЕЛЯЯ ПО КУСОЧКАМ @ В ГОЛОВЕ ЕХИДНЫЙ ГОЛОС: @ >Ну, давай разберем по частям тобою написанное. Складывается впечатление, что ты реально контуженный, обиженный жизнью имбецил.
>>1293341 Но там можно бесплатно прослушать курс. Разница только в том что ты не можешь 90% задач отправлять на проверку. А так весь материал и видео лекции бесплатен.
Как у крестогоспод в 2к18 принято управлять памятью? Выделять все на стеке и пусть конпелятор оптимизирует? Ебашить везде shared_ptr? Разбавлять unique_ptr'ами? Или, по-старинке, долго и вдумчиво new-delete, new-delete?
Помогите написать функцию, которая принимает в себя двумерный массив и находит строку и столбец с наибольшими суммами и меняет их элементы на нули. Алгоритм нахождения сумм и замены элементов я понимаю, но я не понимаю, как можно пропихнуть двумерный массив в функцию и как вернуть измененный массив?
>>1293650 Бля, ну и вопросы у вас. Это всё гуглится за две минуты. Если массив динамический то прототип выглядит примерно так int foo(int ar,int size); Чтобы потом что-то с ним делать присвой результат функции куда-то и всё.
Аноны, вчерашний дебил с калькулятором на связи. Калькулятор я доделал и теперь мне приспичило запилить себе консольную змейку. Отписал я значит кусок кода, решил запустить, он скомпилился (ВНЕЗАПНО с первого раза) и дальше предлагает ПОЖАЛУЙСТА ПОСОСАТЬ ПИСОС
Что делать, аноны?
Алсо, на запрос адреса в printf-е внимание не обращайте, знаю что имя массива указывает на его первый элемент вся хуйня, уже пофиксил.
Все равно не работает
На комментарии тоже можете внимания не обращать, я это чтобы вслух все не проговаривать, иначе доебут спасибо боженька за аутизм не обманул
>>1293044 Суть в том, что Хусаинов любит олимпиадки и часто дает олимпиадные задачи. В частности, в контестах для младших школьников есть много задач, которые нужно решать без условий, циклов и массивов - вот он их и дает.
>>1293817 Типа сейчас змейка выползает, ползет вправо и заползает. И повторить? - У тебя строки на '\0' заканчиваются? - Цикл for принципиально не юзаешь? - У тебя куча магических чисел.
>цикл for принципиально не юзаешь В while все как-то очевиднее для меня, поэтому предпочитаю, хз. У for есть какие-нибудь преимущества по скорости исполнения перед while-ом?
>У тебя строки на '\0' заканчиваются? Они же вроде сами проставляются, если под них место оставить, нет?
Алсо, я космический еблан. Тут действительно стоило бы for использовать
Расставил везде puts-ы чтобы посмотреть до какого места работает, а она в самом начале в бесконечный цикл уходит оказывается
Придумать, как ожидать от пользователя ввода между обратным отсчетом в циклах, а если он за время обратного отсчета ничего не ввел - продолжить функцию, я не смог, поэтому змейка осталась на уровне постоянного переползания от правого края к левому
Это меня огорчает
>>1293049 Тред не читал, пока стоял в душе придумал решение, скорее всего уже решили получше, но вот (Шавкятычу привет):
#include <cstdio> using namespace std;
int main() { short num; unsigned short num0,num1,num2,num3,num4,num5,num6,num7,num8,num9,counter; num0=num1=num2=num3=num4=num5=num6=num7=num8=num9=counter=0;
switch (num) { case '0': {++num0; break;} case '1': {++num1; break;} case '2': {++num2; break;} case '3': {++num3; break;} case '4': {++num4; break;} case '5': {++num5; break;} case '6': {++num6; break;} case '7': {++num7; break;} case '8': {++num8; break;} case '9': {++num9; break;} case '\n': break; default: {puts("\n\nÂâîäè ÷èñëà, âûáëÿäîê!"); break;} }
++counter; }
long long result = 0, degree = 1; bool doCycle = 1;
for (; counter != 2; --counter) {degree = 10;}
while (doCycle) { while (num9) {result += (9degree); degree/=10; --num9;} while (num8) {result += (8degree); degree/=10; --num8;} while (num7) {result += (7degree); degree/=10; --num7;} while (num6) {result += (6degree); degree/=10; --num6;} while (num5) {result += (5degree); degree/=10; --num5;} while (num4) {result += (4degree); degree/=10; --num4;} while (num3) {result += (3degree); degree/=10; --num3;} while (num2) {result += (2degree); degree/=10; --num2;} while (num1) {result += (1degree); degree/=10; --num1;} while (num0) {result += (0*degree); degree/=10; --num0;} doCycle = 0; }
>>1293971 Вместо миллиона переменных num сделай один массив. В первом цикле используй введенное число как индекс массива (nums(num)++). Во втором цикле замени тучу циклом while на один цикл for от 0 до 9 и один while внутри него.
Ты можешь легко узнать последний разряд числа хуиткой типа while (n != 0) { posledniy_razryad = n % 10; n = n / 10; }
Ты можешь легко дописать цифру слева хуиткой типа yoba = yoba + cifra 10^длина_числа. а цифру справа хуиткой типа yoba = yoba 10 + cifra_sprava
Остается это скомбинировать. Считаем число нулей, записываем. Считаем число единиц, записываем справа от нулей. Считаем число двоек. И так далее, до девяти.
>>1293964 >как ожидать от пользователя ввода между обратным отсчетом в циклах Колдовать с API операционки для неблокирующих и не выводящих на экран чтений. Можно в другом потоке, но все равно нужен ввод без эха.
Аноны, как можно создать без вектора динамический размер с реализацией функции push_back? Я вот попробовал, создал двумерный массив для хранения строк >char names = new char * ; А после добавлял туда по одному элементу >names = new char[нужный размер]; И увеличивал счётчик на единицу за каждый элемент, а потом с помощью цикла использовал элементы как мне нужно. Но когда пришло время очистки памяти компилятор начал ругаться за утечку памяти. Может кто подсказать нормальный способ, или хотя-бы как правильно очистить память в моём случае, вот так вот выдаёт ошибку > for (int i = 0; i < arraysize;i++) delete [] names;
>>1294198 Не совсем понял вопрос. Когда мне нужно старую освобождать? Мне нужно на ходу составить массив из нескольких элементов, их количество заранее не известно. От чего нужно освобождать память, если я создаю несколько элементов массива?
>>1294205 Когда ты вызываешь names = new char[нужный размер]; ты выделяешь абсолютно новый блок памяти Соответственно старый со старыми данными остаётся висеть в памяти Выделяешь новую память -> копируешь данные в новую память -> освобождаешь старую память -> присваиваешь указателю на старую память адрес новой памяти
>>1294208 Да я там элемент массива создать пытаюсь, тут просто нельзя квадратные скобки со значением интерпретируются не так. Там должно быть names[номер элемента] = new char[размер строки];
>>1294215 cpp.sh/6ijvn Держи, там в целом тоже самое что я и писал, только еще код программы основной. Сейчас запустил и заметил что программа в конце зависает, раньше вроде такого не было
>>1294236 Я так понял вот такой записью я создам указатель на указатель на строки размером в 13 символов? Ну как на картинке выходит. А можно ли создать массив из неопределенного количества строк и неопределенного их размера, а заполнить по мере надобности? Или я пик 3 переопределяю их размер? В главе про new и кучу ничего такого не было, извини если очевидные вещи спрашиваю
public: void setValues(string, string, string, string, string, int, int); void askQuestion(); void SetQuestion() { srand(time(0)); rand(); int r = rand() % 10 + 1; switch (r) { case 1: setValues("В каком году началась Первая мировая война?", "1913", "1914", "1915", "1916", 2, 10); break; case 2: setValues("В каком году закончилась Первая мировая война?", "1917", "1918", "1919", "1920", 2, 10); break; case 3:setValues("В каком году началась русско-японская война?", "1902", "1903", "1904", "1905", 3, 10); break; case 4:setValues("В каком году закончилась русско-японская война?", "1903", "1904", "1905", "1906", 3, 10); break; case 5:setValues("В каком году началась Октябрьская революция?", "1915", "1916", "1917", "1918", 3, 10); break; case 6:setValues("В каком году началась Вторая мировая война?", "1938", "1939", "1940", "1941", 2, 10); break; case 7:setValues("Кто был главным союзником Гитлера?", "Черчилль", "Рузвельт", "Муссолини", "Хирохито", 3, 10); break; case 8:setValues("Когда закончилась Вторая мировая война?", "1943", "1944", "1945", "1946", 3, 10); break; case 9:setValues("Точная дата окончания Второй мировой войны?", "9 мая", "2 сентября", "1 июня", "22 июля", 2, 10); break; case 10:setValues("Когда случился развал СССР?", "1990", "1991", "1992", "1993", 2, 10); default: break; } }
};
int main() { setlocale(0, "Rus");
cout << "Нажмите Enter чтобы начать викторину" << endl; cin.get();
Question q[10]; for (int i = 0; i < 10; i++) { q.SetQuestion(); q.askQuestion(); } cout << "Вы набрали: " << Total << " Из 100" << endl; cout << endl; if (Total >= 50) { cout << "Поздравляю, вы прошли викторину!" << endl; } else { cout << "К сожалению, вы не прошли викторину" << endl; } return 0; }
void Question::setValues(string q, string a1, string a2, string a3, string a4, int ca, int pa) { Question_Text = q; Answer_1 = a1; Answer_2 = a2; Answer_3 = a3; Answer_4 = a4; Correct_Answer = ca; Question_Score = pa;
Хвощ, ковыряю Си, запрашиваю объяснение сего. Если я правильно понимаю, s содержит адрес первого элемента массива. Функция печатает элемент массива, затем меняет адрес, хранящийся в s, на адрес следующего элемента массива.
Но загадкой для меня является сочетание while (s). Что это значит? Адрес, на который оказывает s, выйдет за границы массива. Если он пустой, то указателю присвоится значение 0 и цикл прервется. Но что если по этому адресу хранится какое-нибудь значение?
int puts (const char s) { while (s) putchar (s++); return 1; }
Знаю, что для Си есть отдельный отдел, а у крестобояр ссылки-ссылочки, но раз уж тут тусуюсь уже
Он блять везде разыменованный, но операторы * блять отпали какого-то хуя. Алсо, можешь пояснить что не так? Должны же ступенчато отобразиться x, y, z, нет?
>>1294662 Все ведь когда-то начинали. Если научусь чему-то большему чем замена CASE CASE CASE как тебе такое Илон Маск циклами спасибо анону >>1293978, можете всем двачем деанонить, приезжать и бить ебало за ТЕ САМЫЕ ™ блядские вопросы
Когда сеть в стандарте будет? Обещали в 17, сейчас в 20, а у Саттера в бложике пикча с 23. И я так понимаю, io_context будет заменян на эти самые Executors?
>>1294255 Можно поставить на кнопку вызов функции выделения памяти, выделять память размером в выделенная в прошлый раз + введенный размер", первые объекты делать указателями на ранее введеные, а остальные заполнять, либо копировать старые значение адреса нового массива, а старый удалять.
Можно вроде как почти все, если надо.
>>1294266 Анон, может ли указатель на указатель на over9000* на указатель на переменную со значением = 0 вызвать переполнение стека/кучи? Я предполагаю что да, ведь вроде как указатели тоже занимают место в памяти, хоть и хранят только адреса, но все же, вдруг ошибаюсь
Ананасы, как придумать тему для диплома? Кроме как написать игру сетевую на ум ничего не приходит. Правда ещё была мысль о проверке работы курсовой/дипломной на соответствию ГОСТу, но как-то ограниченно кажется.
Может кто обьяснить почему когда я использую для замены данных в бинарном файле обьект ofstream то ничего не работает, а при fstream всё хорошо? Пытаюсь поменять местами максимальный и минимальный элемент без массива. Нахожу максимум и минимум, сохраняю их позиции помноженные на размер типа данных. Перемещаю файловый указатель на размер минимума - записываю максимум, ну и наоборот. Если использовать ofstream то все элементы после позиции максимального становятся его копиями, а до принимают значение 0. Если поменять тип на fstream то работает корректно. Сидел 2 часа пока не нашёл какой-то англоязычный форум, комментатор там не знал почему так происходит, но попробовал и сработало. Может тут кто поможет? Я думал вся разница это то, что fstream содержит методы обоих классов, и не создаёт файл при открытии. Или это не баг а фича какая-то?
>>1294266 Анон, если ты еще тут, можешь ответить пожайлуста. Нужно ли очищать память от указателей, которые никуда не указывают? Вот я создал массив из 10 строк, заполнил из них только 4. При удалении больше 4 компилятор зависает. Пустые указатели удалятся вместе с удалением указателя, который указывает на них? На картинке отметил на всякий случай
>>1295050 Указатель указывает на память, ты освобождаешь память, а не указатель, указатель в данном случае это просто адрес памяти которую надо освободить Если у тебя указатели тоже хранятся на куче, то тебе сначала нужно освободить каждую отдельную строку которую ты выделил, пройдясь циклом по массиву, а потом и этот массив целиком На каждый new у тебя в программе должен быть delete
>>1295391 Ты о чём? > unsigned(int) Это обычный каст инта к беззаконному. Скорее всего инт был отрицательный, а после кастинга он стал UNSIGNED_MAX И, наверное, использовался как индекс где-то и выхода за границы массива случился
Надеюсь не слишком тупой вопрос.Я пишу сборник костылей и столкнулся с проблемой, что не могу внутри функции класса получить значения переменных другого объекта, а мне очень хочется. Тоесть есть 2 объекта пупа и лупа. вызываю функцию пупы и внутри неё хочу знать как дела у лупы, отправлять аргументами не вариант.
>>1295456 Чего? Ну попробуй статический вектор объектов класса, в любом методе любого из объектов хоть все другие объекты этого класса сможешь получить. Это как вариант, но я с таким не сталкивался, так что хз.
Аноны, а как можнр реализовать псевдо-рандом? Чтобы одни значения выпадали чаще других, но всё еще рандомно. Прийдется математические формулы расчитывать и шаманить со srand-ом или уже есть готовое решение? Ну или хотя-бы статейки какие с теорией.
>>1295532 Как-то костыльно. Я думал какое-то умное зерно для ранда придумать нужно. Вот к примеру нужно сгенерировать числа от 1 до 100, но чтобы чисел, которые меньше 50 встречались в 2 раза чаще остальных. Это нужно формулы высчитывать? Сюда пришёл чтобы узнать, может где-то уже это реализовывали.
Карьера байтоеба в российских реалияхАноним14/11/18 Срд 19:50:52#481№1295543
Реально ли вкатиться в байтоебство и найти работу в России? Собираюсь через переехать в спб из своей мухосрани, но есть еще 1-2 года в запасе, которые можно будет потратить на изучение разных штук и технологий. Я понял, что успешный байтоеб в 2019 году должен уметь: в C, C++, Linux, Linux Kernel и какой-нибудь скриптовый язык вроде питона и систему контроля версий, а также алгоритмы и структуры данных для собеседования. Стоит ли игра свеч? Или лучше оставить байтоебство как хобби, а работать где-нибудь в вебе или энтерпрайзе?
>>1295543 >ли вкатиться в байтоебство и найти работу в России? >переехать в спб из своей мухосрани все же нужен бекграунд: техническая вышка, 2-3 года работы по специальности кодером у себя в мухосрани.. если этого нет, то тяжко будет..
>>1295630 >>1295633 Ты читать умеешь? Ты преобразовал ссылку на float к указателю на int, разыменовал его и присвоил значение интовой переменной. Нахуя это вообще? Что за пиздец?
>1295637 Я все равно не понял. Я просто лабу вузовскую делаю. Нужно внутренне представление числа типа флоат: сначала достал значения битов этой переменной, потом в цикле умножаю побитово это число на перемнную цикла (которая равна 2 в 31 и уменьшается каждый шаг в два раза соответсвтенно), ну и вывожу либо ноль либо один.
>>1286157 (OP) Аноны, вкатываюсь в С++ и сразу пара вопросов: 1) Нужно ли начинать с Си? 2) Можно ли использовать в С++ системные файлы из Си, например stdio.h?
>>1295673 >1) Нужно ли начинать с Си? Обязательно. Прочитай K&R и потом Дизайн и эволюцию С++. Сэкономишь кучу времени, пытаясь понять, какого хуя настолько все через жопу. >2) Можно ли использовать в С++ системные файлы из Си, например stdio.h? На С++ сишные хедеры правильно инклудить как <cstdio>, без .h и с "c" в начале. Это особо приветствуется (те же format strings подвержены атакам типа переполнения буфера), но всем похуй.
Как не зайду в тред, одни школьники сидят и просят друг-друга хеллоуворды решать. Пиздец блять. Призываю настоящих олдфагов байтодрочеровов для выполнения моего реквеста ИТТ.
Сейчас изучаю формат PE и разные манипуляции с ним. В частности инжекты. Не могу понять, как работает мануал маппинг, и можно ли вообще замаппить PE в формате exe?
>>1295756 >можно ли вообще замаппить PE в формате exe
Можно. Статья 273. Создание, использование и распространение вредоносных программ для ЭВМ наказываются лишением свободы на срок до трех лет со штрафом в размере до двухсот тысяч рублей или в размере заработной платы или иного дохода осужденного за период до восемнадцати месяцев.
>>1295912 они на всем одинаково пишутся (практически). coursera с кучей курсов по машобу поможет. Но... Лучше не делать велосипедов, а взять библиотеку
>>1295864 Тарищ МАЙОООООР, все исключительно в образовательных целях, для выявления способа защиты коммерческого продукта. Ни один калькулятор при проведении испытаний не пострадал.
>>1296122 >Нахуя учить С++? Есть же дотнет. Чтоб самому все ручками писать?!?!? Нахуя тебе Си ? В плюсах добавили хуеву тучу нового, для чего на Сишке приходилось писать свои велосипеды. Только говнокодить станешь больше из-за Сишки до С++.
Аноны, как можно написать функцию, которая будет искать все возможные варианты сум какого-то числа? Как на пике. Пытался найти возможные суммы числа (пик 2),а после перетасовывать элементы в них, но выходила какая-то хуйня. Если менять элементы сравнивая с последним, то строки по типу 1 2 2 будут давать мало вариантов, а если с первым - то все остальные. Может кто подсказать примерный алгоритм? Инет обрыл, нашёл только варианты как для пик2. Уже 6 часов сижу думаю, и нихуя не придумал. Если кому нужно, функцию для поиска пик2 оставлю под спойлером cpp.sh/8554k
>>1297869 Попробуй отталкиваться от матана. Любое положительное число можно представить в виде n = 1+1+1...+1. Например если брать число с примера 5, то 5 = 1 + 1 + 1 + 1 + 1 и в этом равенстве можно располагать скобки как захочешь(согласно правилам математики) 5 = 1 + 1 + 1 + (1 + 1) = 1 + 1 + 1 + 2 5 = 1 + 1 + (1 + 1 + 1) = 1 + 1 +3 5 = 1 + (1 + 1 + 1 + 1) = 1 + 4 Количество способов расставить скобки можно найти по числам Каталана (Х-1) число, когда есть Х чисел.
>>1297869 Я изначально думал в таком русле, но потом затупил когда начал реализовывать. Выходило 1-1-1-2 - все 4 штуки, потом 1-1-3- три штуки - 2 -3 две штуки и 5. Не пойму как в алгоритме сделать, чтобы оно перебирало все комбинации. Вчера вечером чуть-чуть доработал метод с перестановками, но он почему-то не работает для сумм из 2 чисел. Хотя если вывод добавить, то пишет что оно их меняет, а на деле нихуя. Добавлю свой говнокод, может кто найдёт ошибку cpp.sh/47v4n
https://github.com/sosachbot/cppthreadhat/wiki
если честно, не смотрел че там по ссылке
книги не успевают за развитием языка, статьи в интернетах по большей части уровня "я вчера это узнал, а сегодня пишу вам", хочешь быть в тренде - смотри видео с конференций, если сам по ним не катаешься, само собой
движуха конкретно по языку:
cppcon russia
https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA/featured
corehard братишек-белорусов
https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
cpp-party от ребят из яндекса
https://events.yandex.ru/events/cpp-party/
cppcon
https://www.youtube.com/user/CppCon
boostcon
https://www.youtube.com/user/BoostCon/featured
meeting c++ от дойчей
https://www.youtube.com/user/MeetingCPP/featured
старички accu
https://www.youtube.com/channel/UCJhay24LTpO1s4bIZxuIqKw/featured
алсо, специализируетесь на чем то? хайлоад? микроконтроллеры? геймдев? - ищи специализированную конфу и видео с нее