Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Почему от C++ программистов ждут дохуя, а платят нихуя? 180к в Москве каждый второй JS-кодер может за круды получать, а нам столько отвалят только за computer vision какой-нибудь.
>>1381999Мне кажется, фенгомен JS связан с тем, что создание сайтов сейчас очень востребовано на рынке, много заказчиков и за это хорошо платят. C++ это в основном наука, разработка игр и программ для десктопа. В науке никогда не заработаешь, в геймдеве зарабатывают только какие-нибудь транснациональные сверхмонополисты вроде Valve или EA, а десктоп в 2019 никому не нужен и стремительно умирает, его вытесняют смартфоны и мобильные приложения.
>>1382094Возможно, но студия разработки игр или своя научная лаборатория определённо ещё более дохлый номер в экономическом плане, конечно.
>>1382096> студия разработки игр или своя научная лаборатория определённо ещё более дохлый номерфак ю!!!!мы все это сделаем! не сдавайтесь работяги!!!!!!!!!!
>>1382070Потому что быдло пишет сайтики для быдла. Весь веб уже лет десять как в жопе, всё благодаря пиздоглазым братьям нашим меньшим, а всяким васянам и бабкам сракам похуй, что всё тормозит, не работает, выглядит как оргазм шизофреника и всё в этом духе.
>>1382107Двачую, web 2.0. был ошибкой, но это неизбежно должно было произойти в связи с популяризацией интернета и компьютерных технологий. Вот на пике пример хорошего стиля: нейтральный спокойный фон, черный текст на белом фоне хорошим шрифтом, концентрация на информации, никаких отвлекающих картинок и анимации, только ссылки и текст. Благоря этому, кстати, страница весит максимально мало и загружается практически мгновенно.
>>1382109черно-белый стиль имеет очень высокий контраст, который далеко не всем нравится. я бы например сделал эту страницу менее контрастной в мягких цветах, аналоговая цветовая схема или что-то вроде. алсо т.к. бэк это кишки негра и вообще перегружать страницу это фу то я бы сделал чтобы весь текст генерился джаваскриптом динамически с помощью реакта и все это была бы одна страницамимо воннаби джаваскриптмакака
Двощ помогайПишу курсовик на тему "Распознавание неба на фотографии"Речь идет о синем небе если облака и могут быть то немного. Хуярю на плюсах и библиотекой opencv. Нейросети и прочее не предлагать так как время поджимает. Сначала расписал тупо алгоритмы сегментации но препод такую хуйню не принял и поставил парашу в полугодии. Сейчас уже горит конкретно не знаю за что хвататься. Кто готов помочь отпишитесь расскажу поподробнее. Может закину копеечку какую на пиццу с пивасом хватит. Застрял на ситуации с пика. Посчитал градиент и видно что то что темное это небо. А че дальше делать и как это писать не представляю
>>1382120> перегружать страницу это фуПожри говна и сдохни, долбоёб.> Я бы сделал чтобы весь текст генерился джаваскриптом динамически с помощью реакта и все это была бы одна страницаПочему эвтаназия незаконна?
Есть qt-мастера?Как к rectangle или text свойство onClicked присобачить. Делаю датчики и хочу к ним присобачить Tooltip, но он требует окно собственно.
>>1382266>onClicked>TooltipКак это связано?Вообще в кюмл клики присобачиваются оче просто к чему угодно с помощьюAnyItem { MouseArea { anchors.fill: parent onClicked: { /code/ } } }
>>1382294Бля, чувак. Ты меня спас.Вот что я и забыл, так это MouseArea.Я забыл написать, что я qml ебеню, простите.
Двач, как указатель (любой обычный указатель, void* к примеру) перевести в std::string? Интернет хуйню выдаёт, указатели можно выводить в cout, но что-то не получается у меня перевести его в строку.
>>1382413Привести указатель к текстовому виду и записать в std::string к примеру. (явно не static_cast<std::string>(void))
>>1382416Для далбаёбов я тут специально написал>>1382411> указатели можно выводить в cout, но что-то не получается у меня перевести его в строку
>>1382418Ладно, ладно, видимо на этот раз далбаёб здесь только я, я просто уже забыл сишные функции, всё проверил, всё работает, спасибо.
>>1382391нормально только все равно некоторые части остаются черными. Вот если бы начать заливать сверху то тогда нормально будет. Осталось понять как это делать
Блятьб, как проект на ебучей вижуал студио может использовать либу, но при этом она нигде в настройках проекта не указана? Нигде даже рядом с проектом не лежит либа. Что за хуйня?
>>1382541если ты не можешь найти это - то это не вижуал студия ебучая, а ты.Про-тип - grep -rin для поиска текста из гит баша
Как в istream передать целую строку с пробелами:friend std::istream&operator>>(std::istream&in, Movie&object) { std::cout << "Movie name: "; in >> object.name; std::cout << "Show time: "; in >> object.time; ... ...}Надо чтобы в object.name записывалась строчка с пробелами
Окей, я переделал под стринг, но теперь он перепрыгивает сразу на время сеанса и ничего не записывает в название friend std::istream&operator>>(std::istream&in, Movie&object) { std::cout << "Название:\ "; std::getline(in, object.name); std::cout << "Время сеанса:\ "; std::getline(in, object.time); std::cout << "Цена:\ "; std::getline(in, object.price); std::cout << "Зал:\ "; std::getline(in, object.room); return in; }
>>1382567Потому что читать надо внимательнее.>>1382569> Окей, я переделал под стринг, но теперь он перепрыгивает сразу на время сеанса и ничего не записывает в названиеОпять же, читать надо внимательнее. По умолчанию сепаратор стоит '\n'. Непонятно, какой у тебя формат файла, может ты записал всё в одну строку и теперь искренне надеешься прочитать обратно так, как записывал.Кстати, нахера тебе эти вызовы std::cout при чтении из потока?
>>1382572Записываю в бинарный файл в строку, да. cout'ы чтобы сказать пользователю, что вводить надо.Извините меня, пожалуйста, но у меня до завтра курсач горит, а я не совсем выкупаю, что делаю.
>>1382572Подожди, я же еще в файл ничего не записываю на этом этапе, почему он сразу перепрыгивает на время?
>>1382575> Записываю в бинарный файл в строку, да.Чё?> cout'ы чтобы сказать пользователю, что вводить надо.Ну так и пиши тогда cin, зачем тебе отдельная функция? Ты же понимаешь, что если на неё натравить ifstream, то у тебя на экране появятся ненужные строкиPS: никто в код твоего курсача смотреть не будет, пиши как тебе удобно
>>1382579В общем заколхозил, что он просто дважды спрашивает это и всё работает) std::cout << ""; in.getline(object.name, 32); std::cout << "Название: "; in.getline(object.name, 32);
>>1382597У тебя после цифрового ввода остается '/n' в потоке. Гетлайн ее считывает и получает пустую строку. После ввода цифр делай cin.ignore(1000, '/n');
>>1382705Спасибо. Бтв, курсач всё-таки не написал и буду заново переделывать с нуля уже своё. Можешь совет дать?У меня есть класс movie а ля сеансы в кинотеатре и мне нужно хранить все эти сеансы в бинарном файле. Как лучше сделать: 2 отдельных класса для сеанса и файла, или методы с работой с файлом просто в классе фильма сделать? И как лучше реализовывать поиск и редактирование?
>>1382712Показ фильма это данные в программе. За каждый показ отвечает объект твоего класса. Файл -- это способ вывода из программы. Твой класс должен отвечать и за возможность своего вывода. Короче: класс для сеанса и метод в нем для вывода.
>>1382712> У меня есть класс movie а ля сеансы в кинотеатре и мне нужно хранить все эти сеансы в бинарном файле. Как лучше сделать: 2 отдельных класса для сеанса и файла, или методы с работой с файлом просто в классе фильма сделать? У класса Movie заводишь метод для сохранения/загрузки, делаешь ещё один класс, который будет иметь допустим std::vector<Movie>, вот у него и делай методы поиска/редактирования/etc. Заодно и сохранение всего списка.> И как лучше реализовывать поиск и редактирование?Поиск либо как find(enum критерий, строка), а внутри уже в зависимости от критерия использовать эту строку (например, для поиска по названию обычным find_if проходишься по вектору, предикат будет сравнивать название с аргументом, для поиска по году можешь сначала перевести строку в число и точно так же искать) ИЛИ сделать несколько разных методов findByName, findByYear и т.п.Для редактирования можешь id какой-нибудь у фильма завести
Есть один enum и функция>operator<<(ostream, myEnum) {> static std::map<MyEnum, std::string> map = {{Enum1, "Enum1"}, {Enum2, "Enum2"}};> ostream<<map[myEnum];> return ostream;>}Можно ли как-то заставить компилятор ругаться в случае, если значения enum'а обновили и они перестали совпадать с созданным map'ом?
>>1382722>У класса Movie заводишь метод для сохранения/загрузкиугу, классический антипаттерн universal object
Написал небольшую програмку. По задумке должна создавать .txt файл. И впринципе создаёт. Но с русским языком- беда. Даже сетлокаль не помогает[CODE]#include <iostream>#include <fstream>#include <string>using namespace std;int main(){ setlocale(LC_ALL, "Russian"); //Не помогает это дерьмо string text; cin >> text; ofstream fout; fout.open(text + ".txt"); system("pause"); return 0;}[/CODE]Щас потестил cout << text + ".txt";Почему-то и вывод тоже не работало. ХЗ кто виноват. Я или MINGW, но бля, чё делать?
Вопрос экспертам: почему порядок вычисления аргументов функции не определен? В этом есть смысл? Или по принципу "и так сойдет"?
>>1382873Проблема в кодировке самом терминалеsystem('chcp 1251');или#include <windows.h>SetConsoleCP(1251);SetConsoleOutputCp(1251);должны решать проблему
>>1382919Дохера всего перепробовал. Даже скатился до стандартного вывода введёной фразы в консоль- не робит вообще ни как. АЛСО файлы так же создаются в неверной кодировке.
>>1382800>Можно ли как-то заставить компилятор ругаться в случае, если значения enum'а обновили и они перестали совпадать с созданным map'ом?Можно, но обычно костылями. Самый простой способ - это сразу энумы объявлять со строкой.https://stackoverflow.com/questions/28828957/enum-to-string-in-modern-c11-c14-c17-and-future-c20Ещё можно закостылить switch и предупреждения C4061/C4062.
>>1382919Конпелятору попробуй поставить флаги -finput_charset=cp1251(или че у тебя там) -fexec_charset=cp866.
>>1383065Посоветуй сам тогда чт-нибудь. Эта хуета ни в какую не поддаётся, и не желает адекватно работать
>>1383077Советую прекратить жрать пердоговно. В студии проекты по умолчанию юникодные. Вместо "ололо" пишешь L"ололо", вместо char - wchar_t, вместо printf - wprintf, и так далее.
>>1383077Добавлю. Ядро Windows, графическая подсистема и NTFS, начиная с NT 4.0, полностью на Unicode. Добавлены библиотеки для поддержки ANSI. Но часть вызовов из ANSI конвертируется в Unicode.мимопроходил
Прочитал пару книжек по плюсам (прата, александреску) + практика около года. Для меня сейчас наиболее сложные вещи, в которых я хуево разбираюсь это аттрибуты (их я и не знаю, кроме [[noreturn]], который я узнал из предпреждений) , fold expressions вкупе с variadic temlates, сам язык темплейтов (в плане как вычислить факториал на этапе компиляции), множественное наследование от разных иерархично построенных классов в вирьуальном виде и нет одновременно (кто там кого перекрыает и с каким приоритетом - в душе не ебу), многопоточное проганье - вот за это вообще не шарю, и за пределами std тоже не шарю. Так вот, что и сколько мне нужно еще учиться, чтобы стать гуру в C++ (с учетом того, что вышеперечисленное я например уже выучил (авансом) )?
>>1383205Ну бля дохуя разной, в т. ч. проекты на github, игры там, sdl2 ncurses sfml. Но я прост не понимаю, типо все пиздят мол C++ дохуя сложный, его никто не знает и т. д, но во что эта сложность упирается? В изучение всевозможнвх бустов? В умение писать на темрлейтах тьюринг полные языки?
>>1383291Но на самом деле нужно быть не гуру c++, а разбираться в предметной области и библиотеках, в куче всякой хуйни типа вероятности отказа ячеек памяти, аппаратных багов и прочего.
>>1383197погоди, а какую книжку александреску ты читал? "современное проектирование" что ли? как ты ее читал, если не понимаешь "как вычислить факториал на этапе компиляции", там без понимания шаблонов вообще не стоит ее открывать, лол
https://ideone.com/m5IUBiКакие возможные подводные камни? На идеоне с простым классом отрабатывает без проблем. В проекте начинает неистово жрать память на моменте с erase (доходит до 10+ ГБ отожранной оперативы и умирает)
>>1383440Видимо время затрачивается на ресайз вектора. Вариант с vec.erase(vec.begin(), vec.begin()+1000) работает в 1000 раз быстрее. Вариант с vec.erase(vec.begin(), vec.begin()+10000) работает мнгновенноЕсли требуется контролируемые итерации по 1 шт, то vec.pop_back() работает с приемлемой скоростью. Ща местные гуру разъяснят, мне тоже интересно.
Анон, а как правильно работать с кириллицей в винде?Мне нужно прочитать кириллические значения из файла с кириллическим названием. Сначала я ищу нужный файл в папкеwchar_t szPath[MAX_PATH];GetCurrentDirectory(sizeof(szPath), szPath);lstrcat(szPath, mask);hf = FindFirstFile(szPath, &fd);etc.Файлы с кириллицей в названии я не нахожу. Ок, пишу setlocale(LC_ALL, "russian");Файлы с кириллицей начинают находиться. Начинаю читать их при помощи кодаstd::wstring line;std::wifstream in(name);if (in.is_open()) {while (getline(in, line)){std::wcout << "readed: " << line.c_str() << std::endl;}}in.close();Читаются 2 символа "Ee". Отрубаю setlocale(LC_ALL, "russian") и хардкожу название файла. Файл читается нормально. Получается что я могу или читать файл или искать файл. Как делается правильно то?
>>1383440проблема в том что ты не понимаешь, как устроен векторпроблема в том, что удаление первого элемента, как и удаление элементов из середины вектора - дорогая операция
>>1383444В 21 веке интернета, международного текста, неиспользование юникода, свободно поддерживающего все языки сразу, должно быть законодательно объявлено вредительством против человечества и наказываться кастрацией и пожизненными принудительными работами на лесоповале в Колыме.
>>1383454В 2019 году говновысер работает только с одним языком, это у него "коррректно". Корректно - убивать таких уродов.
>>1383446>>1383452Я понимаю, что это говнокод и будет долго работать. Как и всё, связанное с большими векторами, лол.Я не могу понять, почему начинает заниматься память в огромных масштабах.
>>1383465Попробуй erase через remove сделать, чтобы удалять не с начала вектора первый элемент, а с конца почитай, как remove работает.И ты компилишь в дебаге или релизе? Я не такой гуру, чтобы точно знать тонкости и разницу в видах сборки, но мои скудные знания дают предположение, что это может сыграть свою роль.
>>1383465Конкретно в этом примере или с твоим классом?Потому что здесь память жрать и правда нечему. А вот у тебя может быть утечка памяти в деструкторе или конструкторе копирования/перемещения.
>>1383465>Я не могу понять, почему начинает заниматься память в огромных масштабах.потому что ты не понимаешь, что происходит в векторе при удалении первого элементаа происходит кое-что (что ты должен знать так то) люто непроизводительноено объяснять я этого не буду здеся
Объясните. Только вкатился в языки. Выбрал почему то с++. На ваш взгляд хороший язык? Могу поднимать 300к наносек 50к на нем? Вообще перспективный язык для вкатывальщиков? Чем он отличается от С и C#? Или все как то взаимосвязано. Вроде С++ дополнение к С. Прошу объяснить адекватно.
>>1383449Алло, что такое байты и память, алло блять. Когда не необходимо на юникоде писать и нужна память, используй аски
>>1383586Я ещё слышал, что вместо написания компактных программ, люди покупают память, это так?Я думаю да, ведь долбоебы все на utf8
>>138355350 можно. До сотни можно в Москве. Больше уже сложнее. Если нужны деньги, то лучше питон или жс.
>>1383501Какой ужас, последний стандарт. Да, чего это я, надо как настоящий дед писать на C++98, вот где скилл показывали.
>>1383593Не ерничай. Новый проект начали на C++17, правда там без работы с fs. А старые с 11 портировать пока никто не будет.
У меня вопрос к вам, уважаемые:Я хочу сделать variadic функцию, но мне нужно передавать в нее два инта, которые имеют разные значения. (Один - высота, другой - ширина) причем я не могу передавать их структурой, т.к. я хочу, чтобы можно было передать что-то одно, а не целую структуру. Короче, как мне различить два инта из параметров?
>>1383588> Я ещё слышал, что вместо написания компактных программ, люди покупают память, это так?> Я думаю да, ведь долбоебы все на utf8Гляньте, весь мир - долбаёбы, один ты знаешь, как писать софт.UTF8 при использовании только ASCII символов занимает столько же памяти, сколько и ASCII.
>>1383613То есть ты точно знаешь, сколько у тебя аргументов будет, но всё равно хочешь использовать variadic функцию? В дурке амнистия?
>>1383613Создай специальный класс, по сути обертку над структурой, которая будет в полях хранить значения аргументов. Создай сеттеры для этих полей. Дефолтный конструктор этого класса будет полям присваивать значения по-умолчанию. Если нужно отслеживать, были ли переданы те или иные аргументы, заведи в пару каждому полю флаг. Для удобства пусть каждый сеттер возвращает ссылку на себя (на объект этого класса, то есть *this). Тогда ты сможешь писать вот так:Foo(Params().Width(my_width).Height(my_height));Foo(Params().Height(my_height));Foo(Params().Width(my_width));И тп, а внутри будешь делать:if (params.HasHeight() && params.HasWidth()) { //есть и ширина, и высота}else if (params.HasHeight()) { //логика на случай, когда дали только высоту}Немного заебно, но это самый расширяемый вариант, да и вообще полезный паттерн.
>>1383625Я знаю сколько у меня аргументов будет, но я хочу функцию в которой (1)не принципиален порядок аргументов и (2)можно вызывать с произвольным кол-вом аргументов (их всего 10) Например, так: foo(width) foo(height, witdth) foo(color, width, height) и т.д.
>>1383629Извини, но твой варик мне не особо подходит. Мне это нужно, чтобы уменьшить кол-во букав. Дело в том, что я использую билдер, для создания объекта класса, а хочу, чтобы была вариадик функция в которую я могу передать сам билдер, а потом параметры.
>>1383636Типа так: setBuilder(ОbjectBuilder(), param1, param2, param3) и у всех парамов произвольный порядок и можно их вообще не задавать (типа так - setBuilder(ОbjectBuilder()) )
>>1383636Не понял тебя. Допустим ты смог написать вот это:>вариадик функция в которую я могу передать сам билдер, а потом параметры>не принципиален порядок аргументов>можно вызывать с произвольным кол-вом аргументовРазве в таком случае необходимость в билдере не отпадет?Не думаю, что такую функцию возможно написать без именованных аргументов, которые запланированы на 20 год.
>>1383633> (1)не принципиален порядок аргументовИ как же ты собираешься что-то осмысленное с ними делать, если ты не знаешь какой именно у тебя аргумент?> (2)можно вызывать с произвольным кол-вом аргументов (их всего 10) Например, так: foo(width) foo(height, witdth) foo(color, width, height) и т.д.Ну так запили десять методов, не еби голову ни себе, ни тем, кто твой код поддерживать будет.А лучше подумай ещё раз, что-то твоя функция какую-то хуйню делает.
>>1383642>Разве в таком случае необходимость в билдере не отпадет?Мне в некоторых местах нужен именно сам билдер. Например, когда кол-во задаваемых параметров меньше 2(такое часто бывает). В общем, у меня вопрос, как можно отличить один инт от другого?
>>1383645>И как же ты собираешься что-то осмысленное с ними делать, если ты не знаешь какой именно у тебя аргумент?Именно это я у вас и спрашиваю. Как можно один инт от другого отличить? Я этого не знаю. Можно может, например, создать какой-то свой тип который будет просто оберткой над интом? >десять методов>не еби голову ни себе, ни тем, кто твой код поддерживать будет.
>>1383647>как можно отличить один инт от другого?Только при помощи билдеров, эмуляции именованных аргументов при помощи пар и прочих костылей. То есть в твоем случае никак вообще. Повторюсь, если бы такие функции можно было писать, билдер как паттерн был бы не нужен, хоть тебе и кажется обратное.
>>1383645>Ну так запили десять методов, не еби голову ни себе, ни тем, кто твой код поддерживать будет.Эти 10 функций, что сетят параметры билдера уже есть. Проблема в том, что когда мне нужно засеттить все 10 параметов, например, это выглядит так:ObjectBuilder().withParam1().withParam2().withParam3().withParam4().withParam5().withParam6().withParam7().withParam8().withParam9().withParam10().getResult();А я хочу так: createBuilder(ObjectBuilder(), param1, param3, param2, param5, param4, param7, param6, param8, param10, param9);Понятно?
>>1383649> Как можно один инт от другого отличить? Надеюсь, ты уже понял ответ...>Можно может, например, создать какой-то свой тип который будет просто оберткой над интом?Конечно можно, но если я тебя встречу в реальной жизни, то скорее всего сломаю нос. Серьезно, бля, перегрузки писать не хочу, хочу обёртку над интом писать. Пиздец ты гений. Зачем тебе вообще аргументы местами менять? Ты что, на вызывающей стороне не можешь их в правильном порядке расставить?В общем,> не еби голову ни себе, ни тем, кто твой код поддерживать будет.
>>1383653>Зачем тебе вообще аргументы местами менять?Ты совсем бака? А если я захочу засеттить последние три параметра. Мне нужно будет написать: createBuilder(ObjectBuilder(), param1, param2, param3, param4, param5, param6, param7, param8, param9, param10)Вместо:createBuilder(ObjectBuilder(), param8, param9, param10)Понимаешь, почему мне не нужна перегрузка?
>>1383652Хотя нет, у меня есть безумная идея. Пишешь функцию, которая принимает 10 аргументов и собирает из них билдер в стандартном порядке:>ObjectBuilder().withParam1().withParam2().withParam3().withParam4().withParam5().withParam6().withParam7().withParam8().withParam9().withParam10()Когда нужно вызвать функцию в особом порядке, делаешь std::bind и нужным образом расставляешь плейсхолдеры>std::bind(foo, _1, _3, _2, _5, _4, _7, _6, _8, _10, _9)А затем вызываешь в стандартном порядке>createBuilder(ObjectBuilder(), param1, param2, param3...)Может ты сможешь из этой идеи что-то толковое сделать, но пока это довольно сомнительно.
>>1383652> >Ну так запили десять методов, не еби голову ни себе, ни тем, кто твой код поддерживать будет.> Эти 10 функций, что сетят параметры билдера уже есть. Проблема в том, что когда мне нужно засеттить все 10 параметов, например, это выглядит так:ObjectBuilder().withParam1().withParam2().withParam3().withParam4().withParam5().withParam6().withParam7().withParam8().withParam9().withParam10().getResult();> А я хочу так: createBuilder(ObjectBuilder(), param1, param3, param2, param5, param4, param7, param6, param8, param10, param9);> Понятно?Попробуй передавать функтор, у которого билдер может спрашивать, нужен ли параметр и его значение.Что-то типа std::function<std::optional<int>(enParamType)> getParamПараметры придется описать енамом (ну а хули ты хотел-то?). Вызывающая сторона будет писать что-то вродеauto getParamFn = [](enParamType t) -> std::optional<int>{....if(t == param1)........return myParam1;....else.............return std::nullopt;}builder.Build(getParamFn)
>>1383656Не, дело не в том, что мне в особом порядке нужно их вызывать, дело в том, что я хочу сеттить в функции только некоторые из параметров (как я написал в этом посте >>1383655)
>>1383659Так что, нельзя так? Я в принципе не против такой хери createBuilder(ObjectBuilder(), width(5), height(20), colorR(255)). Но, как ее лучше реализовать?
>>1383672Передавать в вариадик функцию. createBuilder(ObjectBuilder(), width(5), height(20), colorR(255)) типа так.
>>1383673Ну и что? Тип-то тебе всё равно надо как-то различать, хоть это и обёртка (или опять же, десять перегрузок на каждую обёртку)
>>1383675>Тип-то тебе всё равно надо как-то различать, хоть это и обёрткаНу, да в плюсах же вроде бы есть способ сравнить типы? >или опять же, десять перегрузок на каждую обёрткуВсмысле? Будет одна вариадик функция, куда я все буду пихать и там в зависимости от типа буду вызывать методы билдера.
>>1383677> Ну, да в плюсах же вроде бы есть способ сравнить типы?Подумай десять тысяч раз, перед тем, как сравнивать типы.> Всмысле? Будет одна вариадик функция, куда я все буду пихать и там в зависимости от типа буду вызывать методы билдера.Можешь обертки свои наследовать от какой-нибудь хуйни с методом getType(), где будешь возвращать свой тип (enum), потому что то, что предлагает язык это совсем пиздец.
>>1382027Самый лучший гайд - https://bazel.build/рили, cmake - тула из прошлого века с кастомным наркоманским языком описания сборки
>>1383553Можешь плюсы выучить для общего понимания. Для заработка советую какой-нибудь С# с вкатом в .NET или Пайон. Веб-хуеб - js/css/html.
>>1383689>Подумай десять тысяч раз, перед тем, как сравнивать типыstd::is_same + магия перегрузок (или if constexpr) может как нибудь помочь тебеМимопроходил-кун
>>1383783>Веб-хуеб - js/css/htmlСюда и >>1383783 >.NET или ПайонМожешь дописывать в веб хуйню. На дотнете так точно придется пердолить фронт на ангуляре либо нокауте.
Посоветуйте нуфагу, как вкатиться в C++. Есть ли какие-то реально полезные книги/сайты и пр? Пока что могу только в мертвый Pascal. И еще один вопрос, хотя возможно не по теме. Что делать с тем чувством лени, когда начинаешь учитить язык, а после бросаешь из-за лени
Комрады, есть кто по QT? Короче написал прогу, она сначала считывает большое количество файлов, потом строит по считанным данным из структур графики. Решил сделать считывание файлов отдельным потоком через QThread (компилятор msvc2010). Вызываю старт треда при загрузке формы. Но фишка в том, что данные он считывает только после перезагрузки формы или обновления формы. Собственно вопрос. Как мне вручную остановить этот тред или же отладить это дело? Не понимаю как правильно его делать
>>1383920Поток создаю так QThread* thread = new QThread(); this->moveToThread (thread); connect(thread, SIGNAL(started()), this, SLOT(slotReadFiles())); connect(thread,SIGNAL(finished()),thread,SLOT(deleteLater ())); connect(this ,SIGNAL(finished()),thread,SLOT(quit ())); thread->start(QThread::HighPriority);slotReadFiles() - слот где идет считывание файлов в структурыЕдинственное что, в этом слоте идет создание и удаление объектов класса. На всякий случай и его прикреплюif (filename == "stream.txt") delete [] streamView; if (filename == "meas.txt") delete [] measView; if (filename == "glo.txt") delete [] zrvView; if (filename == "decoder.txt") delete [] decoderView; if (filename == "stream.txt") streamView = new stream [ BIS.size() - 1 ]; if (filename == "meas.txt") measView = new meas [ BIS.size() - 1 ]; if (filename == "glo.txt") zrvView = new zrv [ BIS.size() - 1 ]; if (filename == "decoder.txt") decoderView = new decoder [ BIS.size() - 1 ]; int i = 0; if (filename == "stream.txt") i = 0; if (filename == "decoder.txt") i = 1; if (filename == "meas.txt") i = 2; if (filename == "glo.txt" || filename == "gps.txt" || filename == "bdu.txt" || filename == "gal.txt") i = 3; switch(i){ case (0) : { streamView->items_.clear(); QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); int j = 0; streamView[j].items_.clear(); for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0;j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); u = j; streamView[j].readFile(path); } } j++; } break; } case (1) : { decoderView->items_.clear(); QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); int j = 0; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0; j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); decoderView[j].readFile(path); } } j++; } break; } case (2) : { measView->items_.clear(); QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); int j = 0; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int i = 0;i < BIS.size()-1; i++){ NNNN_ = BIS; setMaskDir(path); measView.readFile(path); } } j++; } break; } case (3) : { int j = 0; for (int i = 0; i < 4;i++) { if (i == 0){ QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); filename = "glo.txt"; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0;j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); zrvView[j].readFileGlo(path); } } j++; } } if (i == 1){ QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); filename = "gps.txt"; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0;j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); zrvView[j].readFileGps(path); } } j++; } } if (i == 2){ QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); filename = "gal.txt"; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0;j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); zrvView[j].readFileGal(path); } } j++; } } if (i == 3){ QDate dBegin = ui.dateEditCurrent->date(); QDate dEnd = ui.dateEditNext->date(); filename = "bdu.txt"; for(; dBegin <= dEnd; dBegin = dBegin.addDays(1)){ if (dBegin <= dEnd) { YYYY = dBegin.toString("yyyy"); DD = dBegin.toString("dd") ; MM = dBegin.toString("MM") ; for (int j = 0;j < BIS.size()-1; j++){ NNNN_ = BIS[j]; setMaskDir(path); zrvView[j].readFileBdu(path); } } j++; } } } break; } }
>>1384046Давай больше контекста, а то непонятно нихера, что ты собираешься делать. только без простыни методов
При чтении объекта из файла у меня в начале каждого поля появляются 2 русские буквы. Что это может быть? как фиксить?
Есть классы Viewer и Movie и производный от них двоих Ticket. Как мне сделать так, чтобы пользователь мог посмотреть купленные билеты?
>>1381995 (OP)Какой Qt лучше установить на Ubuntu, который в репозитории, с помощью apt, или самый новый, с сайта разработчиков, или какие еще есть варианты? Если с сайта качать, его же ведь автоматически обновить не получиться.
Такой вопрос, как правильно сформулировать вопрос для гугла:Как устроен контрол типа ListBox, тоесть один поток постоянно перерисовывает данные из некого контейнера, а другой - добавляет данные в этот контейнер. Что там происходит? Как избегается состояние гонки? mutex?
>>1384572Допустим поступил сигнал на добавление и острисовку одновременно (утрирую)Если конкретно, то ImGui нет контролов, но есть контейнер с данными)
>>1385001У меня такая хуйня была из-за передачи через &.Попробуй без нее, если выйдет - сделай current position глобальной переменной.P.S.: не join, а detach, иначе будешь ждать окончания выполнения каждого вызова, а ты же хочешь параллельности.
чел из яндекса, один из тех что делал курсы по крестам на курсере, в видео обмолвился, что их проходит около 25 тысяч человек на тот моментвы только вдумайтесь, 25 (!) тыщ вкатывальщиков на платных курсахпо крестамцелая армия, бля
>>1386292на курсере курсы можно аудировать бесплатно, но и платно их ради сертификата много кто проходят. 25к со всего мира сравнительно немного, большая часть не вкатывальщики даже а уже работающие прилепить что-нибудь на линкедин или студенты или просто любопытствующие, немало буржуев просто собирают сертификаты, плюсы фигня для вката же
>>1386292>что их проходит около 25 тысяч человекВ смысле заканчивает с сертификатом? Или смотрит только первый урок и в ужасе убегает?
>>1386301>на курсере курсы можно аудировать бесплатно, но и платно их ради сертификата много кто проходятнеа ((если бесплатно, то не будет доступа к заданиям и к проверяющей системеа без выполнения заданий смотреть видео - пустое дело
Сейчас хоть сколько-то востребован бэкэнд на плюсах? Очень нравится сфера компьютерных сетей и Интернета, и в то же время люблю С++ от js убежал в ужасе , но не знаю нужно ли вообще это учить. Геймдев не привлекает вообще
>>1386736Что означает запись>void Rect;И почему ты передаешь в функцию которая не принимает параметры какие-либо значения?
>>1386794Понимать бы вообще хоть что-то. Просто попросили помочь, но даже гугля ошибки толком ничего найти не получается.
>>1386802Список ошибок то дай, при запихивании твоего кода в компилятор ругается на внешние символы, которые пастбин сам преобразовывает
>>1386812Я не ебу за твои методы треугольников, но вот тебе код который хотя бы начинает выполняется, с моими допущениями что там имелось в виду. https://pastebin.com/5y5ZBXfp
>>1386812Но а вообще ты бы хоть погуглил перед тем как спрашивать. Готовые реализации каждого из методов в инете.
>>1386834LMGTFYhttps://stackoverflow.com/questions/1374037/ambiguous-overload-call-to-absdoubleВозможно, самое простое решение - заменить abs на fabs
>>1386834Блять ты скопировал откуда-то код, у тебя операторы ввода и вывода заменились на треугольные кавычки, и компилятор тебе открыто говорит что он не понимает что ты от него хочешь. Во вторых у тебя почему-то стоит точка с запятой после обьявления функции, и отсутствует список формальных параметров а потом ты еще и передаешь в эту недофункцию какие-то значения.
>>1381995 (OP)Доброго вечерочка, друзья. Примерно года два назад начал немного увлекаться программированием на C++, до этого никакого опыта в разработке у меня не было. Наверное, сейчас разбираюсь в механиках языка на уровне чуть ниже среднего (как мне кажется) - это STL, ООП, немного шаблонов и лямбд. Но всё это теория. Есть ли какие-либо протоптанные дорожки постижения плюсов на практике? Какие задачи стоит решать для увеличения опыта в разработке на C++? Уж очень мне понравилось программировать и я хотел бы в этом развиваться, книг я набрал, но в каких областях стоит начать применять полученные знания?
Стоит ли перекатываться на Си++98, если обычный Си в общем-то устраивает, но костылить свой ассоциативный массив и как-то париться со строками не хочется? Пишу свой корявенький валидатор текстовых файлов для моддинга одной игры, в перспективе развить до редактора.
>>1387193Выбор в пользу 14-17 очевиден. Даже если тебе понадобится только map, то в процессе изучения ты попутно узнаешь(а может и попробуешь и тебе понравится) вещи которых нет в 98
>>1387197Это какие, например? С ООП я не дружу и не понимаю его, так что практически все нововведения для меня отпадают.
>>1387201Внезапно, далеко не все нововведения направлены на ООП.Набери в гугле про 11-14-17 стандарты, почитай краткие выдержки (я вообще впервые на хабре наткнулся на короткое статьи) и почитай.
>>1387201Ну, ООП со времён 98 не изменилось, а так - умные указатели, move- семантика, thread'ы из коробки, лямбдыхуямбды....
>>1387248Я написал делегат и модель для ListView В делегате у меня круг, текст внутри круга, текст под кругом и тултип. Пытаюсь добавить элементы с включенным spacing, но вообще ничего не добавляется. ЧЯДНТ?
>>1387293В качестве делегата у тебя корневой итем без размеров. Попробуй задать ему размеры, а военному ректанглу стелать анчорс.филлпарент
>>1387293layoutDirection: "LeftToRight"orientation: "Horizontal"А так должно вообще работать, со строками, а не элементами енумов?
Дайте совет, как сделать:Создайте шаблон класса Stack и заполните его четными числами. Создайте шаблон класса Stack1 и заполните его нечетными числами. С помощью итератора объедините эти контейнеры в вектор.
>>13874461. Создаёшь шаблон класса Stack2. Заполняешь его экземпляр четными числами3. Создаёшь шаблон класса Stack14. Заполняешь его экземпляр нечетными числами5. С помощью итератора объединяешь эти контейнеры в вектор.
>>1387446> заполните его четными числамиЧто-то никогда не задумывался, если мы берем какой-то плюсовой контейнер (вектор например) и начинаем его заполнять четными числами то когда ошибка будет? Когда вообще все доступная (скажем 16 гб) оперативная память кончится (с поправкой на фрагментацию) или там есть какие-то технические ограничения которые раньше сработают?
>>1387489сегодня в рубрике задаем вопросы стаковерфлову через двачьhttps://stackoverflow.com/questions/3813124/c-vector-max-size
Доброй ночи, друзья. Возможно ли в Qt синхронизировать скроллбары QListWidgetov при наличии в них разного количества информации?
>>1387446интересное задание с учетом того что контейнерные адаптеры не имеют итераторовhttps://pastebin.com/VJyyMxrW
Я нулевой мешок, из знаний: посчитать интеграл, производную, умножить матрицы, помигать диодом на микроконтроллере с помощью asm или Cи, припаять конденсатор, припаять резистор, сверстать страничку html, css, js. На этом все. Живу в далекой провинции.Такой вопрос: Сколько лет надо тренировать-тренировать-тренировать навыки С++ одиноко в горах как мастер каратэ, чтобы суметь найти удаленную работу джуниором за дошираки и кипяток? Если хотелось бы научные вычисления делать.
>>1387699Масутацу Ояма в фильме такой няшка, а в жизни это был лысый кабан, который убивал быков кулаком.
>>1387728ну давай, найди хоть 1 вакансию джуна-удаленщика, на которую можно устроиться, будучи резидентом РФ.
>>1387730Мне предлагали работать на qt на зарубежную компанию удалённо, но я уже работал в блокчейн-стартапе."другой петушин-кун"
>>1387735Насколько понимаю, да. Я проходил предварительный этап отбора на их сайте и собеседование в скайпе, когда ещё не работал в стартапе. Эйчар сказал, что доволен, но не прислал оффер. А связался со мной через несколько месяцев, когда я уже работал. Они писали системы удалённого контроля персоналом и видеонаблюдения.
>>1387790>Для научных вычислений сильные плюсы не нужны Лол>>1387817>А какие-нибудь йоба шаблоны используются там?Да. Повсеместно. Открой eigen какой-нибудь. Там сплошная магия на expression templates. Или pcl, там буст обмазанный ейгеном, обмазанные еще десятком либ, и все обклеено шаблонами для нажористости.
Господа-двачеры, помогите нубу.Может кто-нибудь сказать какую библиотеку юзать (может даже кто напишет пару строк кода) для чтения веб странички. Вот я, например, в опере и любом браузере могу просто смотреть "исходный код страницы", и я хочу так же просто, имея адрес страницы (чтобы https поддерживало только) тупо получать в символьный массив весь вот этот текст со всей разметкой и не нужной лапшой без выебонов, чтобы дальше уже без проблем можно было это парсить и сохранять в файл, если понадобиться.Короче то что в браузере делается нажатием кнопок ctrl+u, я хочу автоматизировать для считывания самой программой, чтобы не копировать каждый раз как бухгалтерша кучу текста мышкой и все на c++, поскольку маломальский опыт только на нем есть.Curl ставил, он мне пару строк показывал, вместо около 7000, и типо все. Было бы неплохо если кто-то просто своим опытом поделился даже, а не просто знанием необходимых библиотек, хотя рад буду всему.в
>>1387880На сишарпе делается парой строк. И в отличие от говняных браузеров, можно слать нахуй сертификаты, чтобы любые считались как хорошие и всё качалось без проблем.
Как выйти на уровень отцов, которые пишут буст и всякие крутые либы с использованием метапрограммирования? У нас на работе шаблонов почти вообще нет, а хочется чего-нибудь эдакого.
>>1387880> Может кто-нибудь сказать какую библиотеку юзать (может даже кто напишет пару строк кода) для чтения веб страничкиМожешь через curl скачивать или через wgetcurl -s -X GET $urlwget -q -O page.html $urlВот этой тулзой можешь выдирать инфу со страниц https://github.com/EricChiang/pupОна же может и в json конвертировать результат с которым можешь работать дальше как захочешьНебольшой тутор http://www.compciv.org/recipes/cli/pup-for-parsing-html/
>>1387927ну, дзен заключается в том что метапрограммирование на крестах используется для кодогенерации соответственно, если у тебя есть какие-нибудь задачи кодогенерации, то можно их попробовать решить с использованием шаблонного метапрограммирования, а не олдскульными макросами или внешними препроцессорамикак то так
>>1387927алсо, щас все проще и понятней сталопочти не нужно использовать рекурсивное инстанцирование, sfinae для условных конструкций и прочие функциональные трюки что мозг выносили раньше
>>1387970на крестах ты тоже можешь написать, если дело будет происходить в винде, используешь ie com automationно таки проще щас плагин на js к хрому или лисе написать
Смотрите.Я хочу поменять местами данные в шаблонной функции, вот я это и делаю.template<class T>void kek(T &a, T &b){T tmp(a);a=b; b=tmp;}То есть я просто два раза вызываю оператор= и один раз конструктор копирования, ничего страшного. А теперь представим что сюда будет подставляться йоба класс в котором хранится хитрая структура данных там дерево какое-нибудь по указателю лежит и соответственно операция присваивания очень дорогая. Получается сначала будет супер долгое копирование, а потом два супер долгих присваивания, да ещё и долгий деструктор для tmp. Как мне сделать чтобы вместо этого просто вызывался оператор копирования с переносом? Вот если бы это был конкретный класс то я бы мог просто сделатьvoid kek(Dada &a, Dada &b){Node * root = b.root;b.root=a.root;a.root=root;/...}И именно это же и делает конструктор копирования с переносом или оператор присваивания с переносом. Только как мне его запустить?...
>>1388026Гугли "template specialization". Суть в том что у тебя может быть шаблонная функция, но в довесок к ней еще и несколько альтернативных реализаций под конкретные типы для которых не подходит базовый шаблонный вариант.
>>1388032То есть в любом случае придётся под каждый хитрый тип данных отдельную реализации писать?Просто я подумал что было бы круто если бы я в итоге мог сделать напримерstd::vector<int> v1;std::vector<int> v2;//...swap<std::vector<int>>(v1, v2);без определения специализацийи всё - внутренние данные v1 и v2 поменялись местами.Вообще, даже стандартный автоматически генерируемый оператор присваивания, который просто почленно копирует поля, сделал бы то что мне надо, но проблема в том, что он же в 99% случаев уже переопредлён в подобных классах, как и в этом же std::vector, поэтому я к нему доступа не имею(или имею?).
>>1387880Ебать я счаслив, я кажись нашел решение, или по крайней мере приблизился. Какой-то пиндос спрашивал за проблемы с подключением через https, ему ответили.
одна из самых интересных (в смысле изучения) вещей в stl это стандартные функциональные обьекты, привязки и предикаты, позволяющие использовать еще один способ программирования, а именно функциональную композициюдаже жалко, что сейчас в большинстве случаев удобней использовать лямбды стало
>>1388026>>1388032щас с новой мув семантикой это делают по другомуф-я swap реализуеются как принимающая универсальные ссылки, а классы, объекты которых будут обмениваться своим внутренним состоянием через эту функцию, должны реализовывать мув-конструкторы и мув-оперторы присвоениявсе простона самом деле std::swap примерно так и написан (чуть сложнее на самом деле), а все стандартные контейнеры щас с мув-конструкторами и операторами присвоения
>>1388167извиняюсь, написал неправильно, нет необходимости в swap делать универсальные ссылки, а вот у него >>1388056правильно
>>1388057>То есть в любом случае придётся под каждый хитрый тип данных отдельную реализации писать?ты же можешь std::swap воспользоваться, зачем тебе свою функцию писать? но надо реализовать для твоего класса мув-конструктор и мув-присваиваниеНО на самом деле ты можешь написать и специализацию для своего класса, если у тебя в интерфейсе класса будет ф-я swap, которая работает эффективнейтак собственно, и в стандартной библиотеке сделано - у swap 9 перегрузок для стандартных контейнеров есть, которые вызывают внутренную функцию swapтем более, все равно для сложных классов приходится делать функцию swap, тк с ее помощью удобно реализовывать конструкторы и операторы присваивания
Кто-нибудь может пояснить за надежность хранения данных в текстовом документе?Вот записано у меня там данных на 1кк байт, какова вероятность что каждый информация будет считана ровно на этот 1кк байт без потерь? Или это зависит от старости моего жесткого диска? Возможны ли ошибки и как их устранять, если возможны, есть что почитать?
Кто шарит в ягуарных регулярных выражениях?([-. ])? от ([-. ]?) чем отличаются?у меня в книге явная опечатка, но оба варианта работают вроде как одинаково
Почему в stl названия классов и методов начинаются с маленькой буквы? Вообще на С++ в среднем какой стиль кода принят?
>>1388601как я себе представляю: вот есть такая практика, что классы начинать с большой буквы, а экземпляры этих классов - с маленькой, и тогда их можно отличать друг от другано для большинства stl-сущьностей все равно нужно указывать типизацию, тк это шаблоны, поэтому и сделали с маленькой буквыа стилей кода много разных, все они, правда, получаются некрасивыми, самий уродливый, наверно, их всех, это тот который страуструп придерживается, лола так ты все равно будешь следовать стилю кода тому проета, к которому присоединишьсяно есть к примеру, у гугла свой стиль кода, у qt, у саттера в книжках (один из самых симпатичных для меня)выбирай..
>>1388601Обычно придерживаются стандартов крупных компаний. Поищи google/mozilla coding guidelines. На винде можно в vs настроить форматирование под один из популярных стандартов. На линукс/мак можно через clang.
>>1388248Зависит от надёжности носителя. Можешь хранить несколько копий и контрольную сумму. Если совсем параноик - делай raid массив.
Пацаны, такой вопрос: компилирую ебучий приветмир через консоль g++, а эта хуйня мне выдаёт экзешник на 15 мегабайт. шо за хуйня, чому так много?
>>1388835тип файла не поддерживается, не могу скинутьэто даже не привет мир, а пустой мейн на 14.5 мб , ахуеть
>>1381995 (OP)Аноны, пишу в файл через fprintf. Мне нужно записать строку вида:Fri Apr 26 15:03:22 2019 {Первую часть я пишу так fprintf(data, "%s", ctime(&_daterow)); Но как записать еще символ "{" без перехода на следующюю строку ? fflush который мне советует гугл не помог
>>1389128>fprintf(data, "%s {", ctime(&_daterow));Первый пик>fprintf(data, "%s {", "ctime(&_daterow)");Второй пикСпасибо, дошло как это работает, но, похоже, именно с ctime(&_daterow) все равно хуячит переход...
>>1389093Почему много? Мало же. Там под капотом много выполняется без твоего участия, ну и у компиляторов, как часто у софта, есть свойство жирнеть. Новые версии либ жирнее старых и дефолтный экзешник получается больше. Бери как можно более старый компилятор если хочешь маленький размер.
>>1389093Попробуй это https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/8.1.0/threads-posix/dwarf/
>>1389135Description:"ctime" converts a time number into a string giving the corresponding date and time. The string has the formatWed Apr 20 15:32:40 1983\n\0Таким образом пофиксил так:char s = ctime(&_daterow); (s+24) = 0;В приницпе можно было через setprecision, но тащить iomanip, ну его нахуй.
Pizdec какой - то, я нихуя не понимаю что тут происходит, такое ощущение что компилятор ебанулся, ну или я не выспался... Какого хуя наличие одного fscanf так влияет на fscanf совершенно иного файла и переменной... I'm Done
>>1389300Кек. Ну, в консоли бы это сработало, кстати.А почему ты через fprintf пишешь, а не через ofstream?
>>1389354Никогда бы не подумал, что fstream - не прямая работа с файлами.Или ты какие-нибудь микроконтроллеры прогаешь, в которых std нельзя использовать?
>>1389443Я думаю тому анону не надо пересказывать ТЗ.Проще было бы ознакомиться с ним самому, а не в пересказе.
>>1389482Ну я думал, я где-то не понимаю чего-то(бтв так и оказалось), но говорит же, потоки нельзя.>>1389484Прости, ты обосрался, смотри пикрил.шо то хуйня, шо это
Хочу изучить BOOSTОно того стоит, полезная вещь? С чего начать?А то выглядит с виду как просто нагромождение кучи всего и создаётся впечатление что проще под конкретную задачу специальную библиотеку найти, чем это всё прикручивать.
>>1389552Буст обычно просят знать если есть куча легаси говна 10+лет, которое лень переписывать и нужно хотя бы понимать, как оно работаетХотя есть и полезные штуки, которые активно используются, например boost.hana или парсеры ихние
>>1389557А там где не легаси говно чем пользуются, чтобы дополнить стл(по части работы со строками особенно интересует)?
>>1389559>по части работы со строками особенно интересует)Да тот же qt. Там есть все что можно придумать, если только тебе не какой-нибудь rope нужен.
>>1389552буст невозможно изучить полностью, это гигантская куча абсолютно разных библиотек. Выучи СТЛ полностью, сначала.
>>1389620если для себя, то это тот же буст, стл он не дополнит, а заменит, если заешься объекты туда сюда гонять
Сап. У меня уровень знаний в плюсах сейчас примерно на наследовании, виртуальных функциях, возможно успеть за 2 дня, примерно 6-8 часов изучить всё необходимое, чтобы сделать на qt окно, где будет предоставляться выбор между двумя уравнениями в виде картинок, и при нажатии вывода их решений?
>>1389755ну мне решение на плюсах нужно написать, 300 страниц шлее усвоить не успею, мб есть что то более практичное из туторов? могу забить конечно и написать консольную хуйню, но интереснее сделать с интерфейсом.
>>1389758https://doc.qt.io/qt-5/qtqml-cppintegration-topic.htmlПоздно плюсы учить - пиши код. В процессе всё равно перепишешь, и не раз.
>>1389766так я закончу с лабами по плюсам и начну жабу, просто консольные приложения 2 года писать заебало ужасно, интересно что то новое попробовать. Спасибо за ссылку, чекну ещё на ютубе мб что то есть.
>>1389773жаба мне онли для того чтобы не пойти работать на завод "интеграл", а попробовать пробиться в ерат на 3-4 курсе.
>>1389774Ясно. Ты студент непту_а_бгуир?Хочешь чуть-чуть личных наблюдений? Те, кто учил cpp на третьем курсе уже рубили капусту, те, кто учил жабу по полгода ходили на курсы ерата и ещё полгода сидели у них в лабе, а потом полгода работали за копейки. до сих пор работают за копейкимимо отчислился с последнего курса, ни о чём не жалею
>>1389779у меня нет внутри коммерческого гена что-ли, ну тоесть я в группе остальным 18 челикам делал лабы за спасибо весь год, убивал по 8-9 часов на каждую лабу каждому челику, просто было со своих денег брать как то не оч. ну я долбаёб короч. И нет, даже не в минске, это гомель, тут кроме ерата есть iba, но шот аксиома эскобара в действии. >рубили капустумоя проблема в том, что я на самом деле и не знаю где можно такую подработку найти, если подскажешь пару ресурсов и в сторону чего оставшееся время развиваться, буду очень благодарен.
>>1389779У нас плюсовики с прикладной математики занимаются байтоебством на галерах либо в рога и копыта педалят легаси, и все за копейки. Чеды-джависты с программной инженерии в модных стартапах под ведро пишут за нормальные деньги.мухосрань
Аноны, программа обрабатывает данные, они либо берутся из файла, либо вводятся с клавиатуры. Для различия режимов я решил заюзать аргумент для запуска, так вот, по умолчанию программа будет хуярить данные из файла, но нужно придумать аргумент при котором данные будут вводится с клавы. Аргумент должен быть в витде одной буквы e.g "/m".Вопрос, какой обычно аргумент используется для обозначения опции ввода с клавы в cli приложениях ?
>>1389782Подработку кодером ты не найдёшь, но в какую-нибудь мелкую контору на полставки вполне. Только не унижайся и не работай бесплатно, двух+месячные стажировки тоже нахуй, хотя испытательный срок два месяца - это нормально, только не бесплатно.Составь грамотно резюме, не ври в нём, не собеседовании всё равно скорее всего вскроется. Ну а изучить стоит наверное Professional C++ Development 4th Edition и C++ core guidelines, ну и задачки на каком-нибудь hakerrank порешать
>>1389870ну это скорее всего не скоро, я ток наследование понял, ещё гора вещей которые нужно знать, главное блять просто как то победить ебучую лень, самое сложное в этом всём.
>>1389878Какая лень, если ты пиздогруппникам делал лабы за спасибо? Тут не время нужно, а систематическое повторение
>>1389884ну перед одногруппниками был груз ответственности, короче нужно воспитать себя как то, заебалось, что каждая попытка сесть за код, сводится к тому что я не знаю какие задания повыполнять интересные и сажусь катать во что нибудь, буду это исправлять, спасибо за разъяснение!
>>1389828микроконтроллеры еще, асу, софт для приборов - тоже копейкигеймдев еще - копейкикрестовики, в смысле
>>1389895За геймдев в рашке нормально платят, но отрасль специфичная и имхо не очень приятная. Вообще не знаю, как найти интересную (не легаси, не эмбед) и оплачиваемую работу на крестах. Вся движуха сейчас в мобилках и вебе, а там кресты почти не нужны (если не считать исключительных примеров уровня применения функциональных языков в энтерпрайзе)
>>1389906Ты забыл посчитать примеры где сам решаешь на чем писать не от хорошей жизни, впрочем, не на ГОвне же в самом деле - так что выбора нет
>>1389828> Вопрос, какой обычно аргумент используется для обозначения опции ввода с клавы в cli приложениях ? Можешь ознакомитьсяhttps://it.wikireading.ru/29002
Что есть максимально легковесное для гуи(в первую очередь под винду, на остальные платформы похуй, хотя я бы глянул отдельно еще что-нибудь кроссплатформенное)?
>>1390004Под винду - WinAPI. Даже устанавливать ничего не надо, правда заебешься на этом писать. А если нужно что-то кроссплатформенное, то есть FLTK из легковесного, но выглядеть все будет как говно.
Помгите аутисту. Есть строка (string), в цикле выполняется append целого числа + " " таким образом строка выглядит как - то так:1 2 3 4 55 224 2 4 5 6 ... Нужно выводить эту строку в столбик с фиксированной шириной, если элемент не входит, то переносить его часть на следующюю строку, если на конце пробел (то есть строку завершает пробел) игнорировать его и начинать выводить следующюю строку.Пиздец, уже всю голову сломал как это лучше сделатьВот мои попытки //strlen(stroka.c_str())%10==0?stroka.append("\n"+to_string(element)):stroka.append(to_string(element)+" "); strlen(stroka.c_str())%10==0?stroka.append("\n"):stroka.append(""); stroka.append(to_string(element)+" ");Сложность еще в том что строка каждый раз выводится в цикле в котором к ней добавляется очередной элемент.
>>1390015Жаль. А то вот есть например пикрил - выглядит нормально(не считая того что нету адаптации под масштабирование винды, лол) и весит всё вместе 362кб, но это для шарпа с .нет фрейворком. Неужели для С++ вообще ничего подобного нету?
>>1390027Ну это из-за того, что дотнет фреймворк уже установлен на компе юзера где-то в недрах системы. В принципе, тоже самое можно сделать, например, с Qt, т.е. сам экзешник будет весить мало (несколько десятков килобайт), но библиотеки, требуемые для работы весят довольно много (но их также можно установить куда-нибудь в недра системы и их не будет явно видно).
>>1390021Так, я придумал как все сделать, но мне нужно знать:Можно ли сделоть printf("10 символов начинаяя с такого - то", stroka.c_str());
>>1390032Ну тогда твой единственный выбор это хуярить на winapi. Удачно поебаться, лол, но зато экзешники будут весить максимально мало.
>>1390037Мне нужно чтобы строка из цифр разделенных пробелами выводилась столбиком более менее фиксированного размера, при этом цифры могут быть разной длинны. Грубо говоря мне нужно вывести первые (для примера возьмем фиксированную длину в 10 символов) 10 символов строки, потом следующие 10 символов уже после "\n" и так далее.
>>1390048Самый простой способ это разделять цифры не пробелами а '\t'. Соотвественно если у тебя стандартный терминал на 80 символов то после каждых 10 чисел проставляешь '\n' вместо '\t'. Ну и числа должны быть неболее 7 разрядов, иначе все поедет.
>>1390048 string str; for (int i = 0; i < 20; i++) { str += to_string(rand() % 10000); str += ' '; } cout << str << endl << endl; int maxlen = 15; int curlen = 0; for (int i = 0; i < str.length(); i++) { cout << str; curlen++; if (curlen >= maxlen) { if (str == ' ') { cout << endl; curlen = 0; } else { if (curlen % maxlen == 0)cout << endl; } } }
>>1390052Охуенно, кланяюсь, в ноги пабадю чалом ударая об пол ! Вот я аутист.... Хули нам, велосипеды изобретать мы любим.>>1390064Анон, тебе тоже спасибо большое, но вариант что предложил >>1390052 действительно правильный, со всех точек зрения. Я даже пытаться что - то еще сделать смысла не вижу.
>>1389828Логичнее было бы наоборот. Если ты передал в параметрах запуска имя файла, то считываешь из него, если ничего не передал, то считываешь с клавиатуры.
анон, пытаюсь пройти гайды lazyfoo по sdlhttp://lazyfoo.net/tutorials/SDL/13_alpha_blending/И блин не пойму, как раскидать один файл по нескольким, у меня либо линкер ругается, либо циклические инклуды
>C. В программе должен быть создан визуальный интерфейс.Что имеется в виду, CLI визуальный али нет ? Вроде прямо -- графический не сказано же.
Надо всегда делать 2 реализации функции - одну с рассчётом на копирование, другую с расчётом на перенос? Пикрил.Или на практике обычно делают в виде одной функции - пик2? А то ведь это менее эффективно, потому что будет вызываться на 1 перенос больше в обоих случаях. Разница конечно наверное ниочём, но тем не менее.
>>1389552А какой смысл? Самое полезное оттуда включили в стандарт, а качество кода там максимально сомнительное временами, так что чтение исходников того не стоит - с использованием же по пути разберёшься.
>>1390181Для imgui нужно ещё что-то, что будет за него рисовать - если брать полностью самостоятельные фреймворки, то из легковесных есть FLTK, но он страшненький и устаревший в плане концепций (я про вёрстку и прочее).
>>1390145На практике смотрят, что у тебя размер структуры сопоставим с размером указателя (надо бы на поля посмотреть, чтобы наверняка), так что перемещение жизнь лучше особо не сделает.
>>1390145Пишут шаблонную функцию, где в качестве параметра универсальная ссылка, а внутри функции std::forward. Что-то такого: https://gcc.godbolt.org/z/5obK4Z
>>1390135Анон, я жопой читал, и мой совет может тебя поставить на долг. Написанно же >Создайте в программе Можешь сделать джавой через Javax окно, и нативно в него закрутить крестовые методы
>>1390130Смотря для чего. Интерфейсы бывают программные и пользовательские. Программный интерфейс не визуальный, а интерфейс пользователя всегда визуальный, ведь человек общается с компьютером посредством зрения.Если у тебя речь идет об интерфейсе пользователя, значит нет смысла говорить про него "визуальный", он и так такой в любом случае, а значит под этим словом подразумевается графический.
Сап, есть вариант с помощью чего написать математические формулы в qt? мне нужен форматированный вывод а-ля пик 1, посоветуйте что нибудь годное, пока что всё что нагуглил это пик 2, проект qt который должен отрисовывать, но на самом деле я хз как его заюзать, никакого тутора не предусмотрели.
https://pastebin.com/Kf6kfQfRопять трабла с интерфейсом на qml.Тупо не отображается все ListView/GridView
>>1390563С чего ты ахуел, дырявая маня? Ах да, ты же студент-долбоеб дрочащий кутешку и не знаешь, что принтфом можно форматить стринги. Нахуй иди уебан. Я твою мать ебал, кстати.
>>1390392> ведь человек общается с компьютером посредством зренияНет. Это я получаю информацию от компьютера посредством зрения (и слуха ещё).А с компьютером я взаимодействую, обычно, с помощью клавиатуры и мышки.
>>1390570знаю конечно, залётная дура, но нахуя мне на плюсах систайл юзать, ты жирное прыщавое чмо, которое обожает байтоёбить и дрочить на фурри?
>>1390574Ебать, я думал ты просто студентишка позорный, который нихуя не учил и просит помощи потому что ничего не знает, а ты долбоеб который учил и не может строку отформатить. ЙА ТОЖ АХУЕЛ НО РИШИЛ НИЧИВО НИПИАСАТЬ!!!Быдло ебаное, сука.
>>1390588У меня выходные, долбоеб, могу валяться и со студенто-быдлом общаться сколько хочу, соси хуй
>>1390545>Сап, есть вариант с помощью чего написать математические формулы в qt? используется тот же подход что и во многих генераторах математических выражений в вебе, а именно сама формула задается в tex формате, далее вызывается tex, которой генерирует это в картинку, далее картинка выводится на страницу (в твоем случае на холст или куда ты там в qt хотел отобразить)несомненно, это геморно с той точки зрения что tex не имеет апи как такового, то есть его нельзя использовать как шаредбиблиотеку, на линуксах придется тащить с собой зависимость от пакета, если нужна кроссплатформа с виндой, то еще больше еботни будетальтернативный подход требует еще большего геморроя: а именно использование mathml, а дальше чтобы эта формула рендерилась кутешным встроенным веб-движкомбольшой плюс этого решения, что в результате будет форматированный текст, а не картинка, и даже можно настроить что при выделении-копировании этой формулы в буфер обмена сохранялось xml-mathml представление, что вообще охуенно в некоторых случаяххотя может я зря тут расписываю, и тебе нужно всего лишь вывести несколько статичных формул (которые не изменяются)тогда их просто генеришь заранее через tex и встраиваешь в виде картинок на формочку, это то просто, рас плюнутьа вот когда формулы меняются во время работы программы, то тут геморроя на порядки больше чтобы их только отобразитьну а встроенный редактор математических формул - это уже rocket science
>>1390998https://electroandi.ru/toe/metod/metod-konturnykh-tokov-reshenie-zadach.htmlСейчас попробую объяснить, нужно вот это решение отобразить, только с числами которые вводит пользователь в формочки, тоесть из решения меняются только цифры в формулах, сами формулы остаются теми же. И ещё, это решение сгодится для сдачи лабы по "КЛАССАМ", я бы говна вьебал смотря на формулы в терминале, поэтому полез туда, где я ничего не знаю, и тут вроде как в мейн файле никакого класса создавать не нужно и все действия я распишу в функции "когда нажата кнопка", так? не до конца ещё концепцию понял.
6 лет пишу на Qt/Boost, хочу перекатиться в другую контору на unreal engine. Как думаете, хорошая идея? Знания по unreal engine нулевые на данный момент, но готов учиться.
>>1391099нет смысла учить кучу языков программирования, тем более, что до готовности писать прод на крестах пройдет годика 2. Лучше стать полноценным специалистом в чем-то одном
>>1390992Зачем тебе вообще что-то? Вставь картинки и не парься. На крайний случай можешь <sub> и курсив применить
>>1391118так цифры нужно в формулках менять, согласно заданным, я могу например вставить текст например 45I1, 45 могу текстом хуйнуть в зависимости от данных, а I1 картинкой. но это будет уже когда не смогу нормально всё сделать.
>>1391124А что по-твоему нормально? Вариант с картинками выглядит самым годным, нечего выдумывать какие-то костыли с TeXом
>>1391145нужно много знать из кодинга, кресты - самый сложный язык из мейнстримовых, а на нем чаще всего в геймдеве сидят, постоянные переработки, авралы перед выпуском, и все это за более чем скромную зарплату, конкретно джуны работают за еду буквально - те зп им выставлятся ровно чтобы снять комнату в общаге и не сдохнуть от голода
>>1391092>какие подводные?лютейшая конкуренцияда, на одно годное рабочее место прилетит не 500 резюмех в первые два дня, а 50, но среди этих 50 будут монстры с 20ти летним опытом работы либо вчерашние выпускники, дрочившие кресты и олимпиады всю учебу
>>1391067на самом то деле, если ты и вправду кресты на уровне спокойного понимания и применения библиотек буста знаешь, то без проблем в геймдев перекатишся (с просадкой в зп, само собой)только нахуй тебе это надо?
>>1391160Математическое образование есть, плюсы вроде задрочил до неплохого уровня. Так у меня и на текущей работке авралы. Ну мне особо большая зп не нужна, на старте соглашусь на 70к.>>1391067Хочется попробовать чего-то нового... думал вообще на другой язык перекатываться. Игрульки вроде интересно делать.
>>1390145>std:>std:Поясните зеленому. Нахуй это писать, если можно вначале вставить using namespace std;
>>13912701) Чтобы другой похроммист, читая код,сразу понимал, что используются стандартные средства.2) Для избежания возможных конфликтов имен. Если в проекте используются другие либы, там тоже могут быть функции с названиями, совпадающими со стандартными.
>>1390145Кстати код здесь странный. Передается rvalue как параметр, а потом кастится опять же к rvalue (std::move) шо шо
>>1391279Оно передалось в функцию как rvalue, да, но теперь внутри setglobal у объекта s появилось имя, и s ведёт себя как обычная переменная (то бишь lvalue). Мы хотим сделать move assignment для переменной global, поэтому мы ещё раз делаем move(s).
Помохите чайнику. double fyt, dol; cout << "Введите сумму:"; cin >> fyt; dol = fyt + 0.487; cout << dol;Надо чтобы когда вводишь сумму, например 4, и чтобы он 4 раза прибавил 0.487.
Просто он прибавляет всего 1 раз 0.487, а я не знаю как сделать чтобы прибавлял всегда. >>1391318помогите
>>1391160>авралы перед выпускомЧто вообще может срочно перед выпуском потребоваться от программиста? Фичекат разве что, но ломать - не строить.Сейчас же весь геймдев упирается в контент.
>>1391512Блин, ну если погромист годами писал бажный код, то наверное не стоит удивляться, что рано или поздно с него за эти баги спросят. Что мешало ему заранее об этом подумать?Все таки здесь программисты хуевые, а не геймдев злой.
>>1391613на этот вопрос нельзя ответить. С++ просто быстрее, но очень сильно зависит от задачи. Если у тебя крошечный клиент какого-нить IO, то выигрыш от плюсов будет незначительным, т.к. тормозня будет на IO. А если у тебя какая-нить числодробилка - то сильно быстрее.
Адепты с++ секты, объясните пожалуйста про i/o функции. Вот я хочу прочитать файл, читаю путь к нему с клавиатуры через cin, читаю его самого через ifstream, все хорошо. Я хочу использовать реулярки для проверки пользовательского ввода, все тоже хорошо, но уже не совсем - с кирилицей они работать не хотят. Ага, есть wregex, с которым вполне себе можно юзать кирилицу и все работает. Но я не могу заменить все строки на wstring - тупо для того же пути к файлу мне нужен обычный тип string. Еще я хочу ввод с клавиатуры каких-то строк с пробелами и использую для этого getline. Нахрена придумали такие сложности и как я должен поступить по с++ way, чтобы совместить все хотелки: regexp с кириллицей и открытие файлов, ввод с пробелами? Если я совмещаю все, как я хочу - я получаю вообще странные вещи, потому что юзать cin и wcin вроде нельзя. Пикрелейтед - пример странных вещей
>>1391350перед релизом любой игры, даже дженерик срани под мобилку, ключевые разрабочкики вьебывают по 12 часов в сутки и без выходныхв 100% проектах
>>1391737алсо, щас геймдев перепрофилируется на такую хрень как "игра как сервис", это означает что к игре непрерывным потоком идут патчи, новый контент и все остальноете пока игра приносит прибыль, ее доятдля разработчиков же выстреливших проэктов все это превращается в непрерывный аврал
>>1391672Это поделие еще хуже g++, оно не умеет в кириллицу я уже час не могу понять, какие еще команды, галочки и т.д. нужно поставить, чтобы Гейтс понял, что мне нужна кириллица
>>1391782iostream или stdio или conio.hПогугли, но те две функции которые я написал - 100% избавляют от твоей проблемы, проверено мной когда я час ебался и не мог понять почему у меня буква ё не пишется.
Какой же сука мерзкий тред из тупой студентоты задающей тупые вопросы и троллей первой стадии даннинга-крюгера, пытающихся давать зАбАвНыЕ ответы
Анон, я сейчас решаю для себя задачу по распознаванию лиц. Использую openCVЗадача: 1. Парсить папку с кучей видео2. В одном видео может быть несколько людей3. Один и тот же человек может быть в разных видео4. На выходе я должен получать список "человек - видеофайл1;видеофайлХ;".5. Предварительного сета лиц для обучения нет.Как это лучше сделать?Пока у меня получается следующее:1. Нет ни одного лица в сете1.1. Обучаем модель распознавания на двух чёрных квадратах2. Берём кадр1 видео1 ищем лица.2.1. Пытаемся распознать лицо - получаем слишком большую дистанцию2.2. Всё ок, мы знаем что у нас в модели только чёрные квадраты, поэтому создаём новую персону (персона1) и апдейтим модель распознавания. 2.3. Берём кадр2 видео1 ищем лица.2.4. Пытаемся распознать лицо - получаем нормальную дистанцию с персона1 и апдейтим модель. Теперь персона1 имеет 2 фотки и распознаётся лучше. 2.5. Начинаются проблемы. В кадр3 видео1 у нас может внезапно поменяться ракурс лица и оно хоть и распознается как персона1, но дистанция получится относительно большой или у нас может появиться персона2 ещё не внесённая в модель распознавания, но она распознается как персона1 с относительно большой дистанцией. Как обойти этот случай? Как понять - это персона1 с другим ракурсом/освещением или персона2?3. Но ок, допустим в видео1 у нас только персона1. Открываем видео2. Там может быть как персона1, так и персона2. Но у персоны1 будет новый ракурс\освещение. Как результат мы с примерно одинаковой дистанцией распознаем человека и или будем считать что персона2 = персона1 или что персона1видео1 != персона1видео2.Как всё это правильно сделать?
>>1391862Согласен, люблю плюсы, иногда скроллю нулевую, ничего интересного, дай думаю зайду в плюсотред в пр, ну и спустя минуту такая тоска охватывает и закрываю.
>>1392131Это начальные курсы, или для уже квалифицированных?Если один, то лучше Ютуб и книжки, если два — то так не работает, и надо выбирать что-то одно.
>>1392131Если в общем, про ОС и их теорию, то читай Таненбаума. Про винду, говорят, что Windows Internals хорошая книга.
Бляять, как же я ненавижу свою криворукость.Даже новый тред создать не могу.Пните мочуха стереть моё анимешное говно и пилите тред сами.
Вот самое невыносимое в кодописании это когда начинает происходить какая - то необъяснимая хуита, понятное дело что CPU ничего кроме того что написано не выполняет и, как следствие, сам дурак, но, бля. Какого хуя char array на пике меняется от чтения файла никак с ним не связанного в никак с ним не связанную переменную. Я все проаерил,массив менется только если выполняется этот ебаный цикл.Массив объявлен как char qdata[] = "";До цикла он используется только в пик2, да в него что - то пишется и потом он записывается, но как это связано с циклом из пик один -- хуй знает.
>>1392231Поменял используемый в цикле файл на вообще нигде не задействующийся, ничего не изменилось, разве что { прибавилась хуй пойми откуда опять же.
>>1392238Во - первых я уже локализировал проблемное место, во - вторых, текстовый редактор что я сипользую так не умеет.
>>1392242>>1392241>>1392231Так, проблема решена. На первом пике я пишу число в buff, buff имеет целочисленный тип. Стоило начать писать числа (на которые мне, к слову, здесь поебать, я ихтупо считаю) в другой char array как все стало ОК. buff до этого нигде не использовалось, попытался писать без & получил вылет (ожидаемый), так что похоже я неправильно пишу целое число в целое число, ну или что - то еще.
>>1392231>когда начинает происходить какая - то необъяснимая хуита,Когда науку пытаются подменить собственной смекалочкой.>Какого хуяНе лезь, блядь, дебил, оно тебя сожрет. Не знаешь - не лезь.
>>1392242> Во - первых я уже локализировал проблемное местоА итерацию цикла на которой проблема возникает локализовал? Нет.>во - вторых, текстовый редактор что я сипользую так не умеет.Ну так нах тебе это говно, используй нормальный.
>>1392254>пукАга, а ты знаешь или так, покушал да и все ?Тем временем ебаный цикл все продолжает ебать мне мозг. high_resolution_clock::time_point start = high_resolution_clock::now();цикл high_resolution_clock::time_point finish = high_resolution_clock::now();считаем время time = (double)duration_cast<milliseconds>( finish - start ).count();Вылет нахуй, без цикла все заебок.В цикле выполняется fscanf(mrg, "%i")?n++:false; т.е чтение в никуда.Если читать куда - то, ошибка пропадает. Я понимаю что говнокожу/хакерю по полной, но как блядь все эти вылеты и изменения связаны, с какого хуя пускай даже fscan там как - то нитак выполняется она мешает посчитать время между метками (вылет), но если не считать время то все выполняется, при этом scanf отрабатывает как надо. Ну просто рот ебал этого компилятора.
>>1392257>итерацию циклаПрблема уже решена, но возникала на первой. Прервать выполнение программы можно и без != по твоему мнению IDE/DE с тонной каши из ненужного для написания простенькой CLI утилиты на чистом C++ кала+мб еще и electron'а.
Нужно ли знать как устроена ОС для программирования? Сейчас углубляюсь в сетевые технологии, и в итоге выяснил что все сводится к запросам к апи системы, ну а она насколько я понимаю обращается уже к физическому оборудованию. Достаточно ли знать теории по какой-либо теме, или стоит почитать исходники системы? Вопрос наверное слабо связан с С++,но в нуфаг-треде уже 3 раза игнорили
>>1392260Ну вот оно, блядь, ну вот какого хуя - то. Строка фиксирующая начало отсчета времени режет массив qdata. Вы можете мне обхяснить ПОЧЕМУ НАХУЙ или нет ?
>>1392268вообще все, что ты делаешь, кроме изменения уже выделенной памяти, дергает API операционной системы. Даже printf\cout. Если ты хочешь быть системным программистом, то хочешь-не-хочешь - придется в это углубляться.
>>1392268Смотря что ты программируешь ofc. Одно дело прикладные приложения, там также своя иерархия в этом отношении. Другое дело какие - нибудь АИС, сами системы как таковые. В общем случае, если твоя программа начинает работать с каким - либо ресурсом помимо самой себя -- ты используешь API, если не системы, так готового фреймвлорка который использует API системы. Прямо изучать API особого смысла нет, появятся задачи -- появится причина загуглить то или иное, все это делается на лету. Знать как устроена ОС, скорее как утсроены типовые ОС нужно обязательно, без этого вообще работать за ЭВМ по идее нельзя. Углубляться там можно до бесконечности, но, обычно достаточно понимания работы с процессором и прочим HW + изучения основных абстракций. Ну, а ежели ты системный программист, тут и отвечать не нужно, полагаю.
>>1392275Да, еще можно не изучать API системы если ты пишешь на asm, так как там тебе тупо ПОЕБАТЬ. Порты, хуерты твоя сила.
>>1392272>>1392275За ответы спасибо, в устройство ОС наверное углублюсь. Решил написать простой p2p чатик с tcp соединением. В итоге оказалось что практически все классы пусть даже не самые сложные для работы уже были готовы, и ощущение что я конструктор по частям собираю, а не программирую, от того такой вопрос и возник
>>1392271>>1392231>Массив объявлен как char qdata[] = "";Ебать ты долбоеб братишка, земля тебе сегфолтом.
Что этой суке не нравится? error C4996: 'getche':#include <iostream>#include <conio.h>using namespace std;int main(){ setlocale(LC_ALL, "Rus"); int chcount = 0; int wdcount = 1; char ch = 'a'; cout << "Введите строкуЖ "; while (ch != '\r'){ ch = getche();if (ch == ' ')wdcount++;elsechcount++; } cout << "\nСлов: " << (wdcount - 1) << endl << "Букв: " << (chcount - 1) << endl; return 0;}
>>1392291Стандарт тебе дает cin.get() для чтения из потока одного символа, нет - не хочу, хочу писать виндовое говно.
>>1392294>>1392299getch() из conio.h еще с эпохи DOS является одним из самых простых способов реагировать на нажатия кнопок в "реальном времени" (не долбя ентер после каждого символа).То что в данном случае можно обойтись без этого, конечно уже другой вопрос.
>>1392288В чем проблема ?Я рили ненавижу строки и все что с ними связано. Наверное нужно через указатель делать.
>>1392302Ты пишешь в массив размером один байт. Вот почитай к чему это может привести: https://en.wikipedia.org/wiki/Stack_buffer_overflow
Я не понимаю как так. Решаю сейчас задачки на leetcode на C++, и судя по комментариям решения на жаве оказываются нередко намного быстрее.Например сейчас сделал сложения чисел хранящихся в односвязном списке(в порядке с конца) - вродё всё предусмотрел чтобы нигде ни одной лишней проверки не было, ничего лишнего не использовалось, да ещё и порчу исходные данные(использую первый список чтобы лишний раз new не вызывать и если он кончается тогда в конец его вставляю уже нвоые узлы), моё решение занимает 24 мс, это лучше чем 99.91% решений на C++. А в обсуждениях скидывают решения на жаве 1-2 мс(причём 2мс у решений на жаве в топ 97% что ли, т.е. в среднем их решения намного быстрее), и это при том, что их решения мало того что не обходят все лишние проверки условий, так они ещё и не портят исходные данные(т.е. с самого начал вызывают new), а список выделяя для него память(я пробовал также делать - решение становится 28мс вместо 24мс).Вот например https://leetcode.com/problems/add-two-numbers/discuss/1182/4ms-11lines-java-solution(его решения я один в один переносил на C++ результат - 28мс)4мс, использует деления, одинаковые проверки, исходные данные не портит.Вот мне поэтому интересно - это просто жава решения на других исходных данных тестируются или JIT какой-то всё оптимизирует в этой задаче?
>>1392326Уж не знаю, на кой черт тебе этот вопрос задавать в плюсовом треде сдалось, но я в благородство играть не буду, раз ты хочешь через жопу, то держи ответ через жопу:Отображение f : R² → [0, 255] по правилу (√(x - x0)² + (y - y0))² = k) * c, где k - расстояние от выбранной точки (x0, y0), откуда строится градиент, а c - коэффициент нормирования, чтобы для любой выбранной точки мы попадали в допустимый для RGB диапазон.
>>1392349наебывают на замере времени, инфа 100%Если там срр без оптимизаций компилируют, всякое возможно.По крайней мере -g запросто может быть хуже -O3 в десять раз. (хотя и не в этом случае, я думаю)
>>1392349>>1392358Алсо, если сравнить распределения решений c++ и ждавы, то видно что время выполнения С/С++ они меряют и правда как-то хуево.
>>1392450Я скорее о том что asm может работать с ресурсами в и без api системы. Сбросить настройки тогоже биваса например.емнип:mov ax, 1010hmov dx, 70hout dx, axДа, грязно, но можно. И так со многим.
>>1392309Да, потому что я не знаю как выделить char array неизвестного размера. Говорю же, рот шатал этих строк.
>>1392492>Зачем тебе сишные строкиЧтобы использовать printf/scanf в различных вариациях (e.g sscanf/sprintf), а их я использую потому что того требует ТЗ.>Так а на каком ты языке пишешь? C/C++ по - моему.В принципе, уже пишу документацию, код таки в релиз ушел.
>>1392499Да, кстати все равно спасибо. Все необъяснимые вещи были как раз из - за вот этого >>1392309, въебал max_size_limit и соответсвенно нормально выделил массив.
>>1392499Их может для этих функций заменить vector<char>::data().По идее, string::data() тоже может их заменить, но у меня только константный метод выбирается компилятором и не компилится.Ты можешь уже хоть выдержку из своего тз скинуть, чтобы мы точно поняли, что тебе нельзя в потоки(которые ты используешь) и что тебе запретили использовать std?
int number;cin>>number;Если во время набора очередного числа просто хуйнуть enter ничего не ввидя, он реально введется (строка сменяется) в терминале и продолжит ждать ввода номера, после ввода числа и поторного нажатия enter число улетает как надо в number, но как заставить cin фейлится если введен тупо enter без чего - либо. >cin.get() == '\n' не работает
>>1392521Решение довольно кривое, т.к. обычно это никому не нужно. Сначала считываешь из потока в std::string с помощью std::getline, и ее анализируешь: - если вначале есть пробельные символы, то выкидываешь ошибку;- если все норм, то создаешь std::istringstream и из него считываешь в переменную.
Есть ли какое-нибудь хорошее пособие по визуальному программированию winapi(желательно под visual studio)? Все книги в основном по общим принципам в виде консольных приложений.
>>1392542Этим некроговном никто давно не занимается, даже сам микрософт. Либо дрочи QT, либо всякую ересь типа WinRT
Почему падает на вызове деструктора?#include <cstddef> #include <iostream>struct String { String(size_t n, char c) : size(n) { str = new char[n + 1]; for (size_t i = 0; i <= n; i++) { str = c; str++; } str = '\0'; str = str - n; } ~String() { delete[] str; } size_t size; char* str;};int main() { String string = String(4,'A'); std::cout << string.size << std::endl; std::cout << string.str;}
>>1392550Ебаная вакаба табуляций наставила.#include <cstddef> #include <iostream>struct String {String(size_t n, char c) : size(n) {str = new char[n + 1];for (size_t i = 0; i <= n; i++) {str = c;str++;}str = '\0';str = str - n;}~String() {delete[] str;}size_t size;char* str;};int main(){String string = String(4,'A');std::cout << string.size << std::std::cout << string.str;}
>>1392551String string = String(4,'A');Из-за этой строки. Почитай на досуге про конструктор копирования, копирующий оператор присваивания, ну и про move-семантику не забудь. Если коротко объяснять, то в твоей программе вызывается два деструктора, которые вызывают оператор delete[] над одной областью памяти, что по правилам C++ является undefined behavior (UB).
>>1392551>String string = String(4,'A');А разве можно так использовать зарезервированные слова? Или оно зарезервировано только если подключать библиотеку string?
>>1392559Заменил String string = String(4,'A');наString string (4,'A');и все равно падает на дестракторе.
>>1392564Это ты так подколол, что winapi настолько уже устарел по сравнению с тем, чем сейчас пользуется, как и описываемое в книге по сравнению с winapi в VS/C++ builder?
>>1392576Winapi для окошек - да, им вообще уже никто не пользуется напрямую. Winapi для других вещей вполне используется.
>>1392569Посмотрел повнимательнее, у тебя какая-то хуита в конструкторе написана. Замени на: String(std::size_t n, char c) : size{n}, str{new char[n + 1]} { std::fill(str, str + n, c); str[n] = '\0'; }#include <algorithm> не забудь. Все должно заработать.
>>1392537>Решение довольно кривоеВполне неплохое, по сравнению с моим в итоге:scanf("%[0-9]s", &element)?({goto next;}):({goto fail;});fflush(stdin);Спасибо.
>>1392615Не, он n + 1 объявил.>>1392557Ты на n + 1 позицию ставишь \0, возвращаешь указатель на n позиций назад и вызываешь для этого указателя delete[].Если я не проебался с пониманием того, что ты делаешь, то косяк в этом.Почему бы в цикле не сделать str = c? И не надо смещать потом указатель обратно.
Аноны, а есть ли существенные различия между чистым C и тем, си, что является подможеством C++?Прост хочу прояснить для себя кой-какие вопросики по крестам, что сводятся к си.Если я возьму книжку K&R, например, там будет все актуально для C++, или есть более специализированная литература?Сам по себе си мне не нужен, только в рамках плюсов.
Товарищи, что я делаю не так? Как объявлять шаблоны функций?Файл main.cpp:#include "myswap.hpp"int main() { int a = 10, b = 20; myswap(&a, &b);}Файл myswap.hpp:template <typename Type>void myswap(Type , Type);Файл myswap.cpp:template <typename Type>void myswap(Type a, Type b) { Type c = a; a = b; b = c;}___Ошибка линковщика: C:\Users\...\AppData\Local\Temp\ccwOVCDE.o main.cpp:(.text+0x2e): undefined reference to `void myswap<int>(int, int)'Если перекинуть определение функции myswap в файл main.cpp, то всё работает.Возникает закономерный вопрос: "Как объявлять шаблоны функций?.."
>>1392833Быстрофикс.>void myswap(Type , Type);void myswap(Type , \Type);>undefined reference to `void myswap<int>(int, int)'undefined reference to `void myswap<int>(int, \int)'Звездочки, не сломайтесь, что б вас.
>>1392833Быстрофикс #2:Файл main.cpp:#include "myswap.hpp"int main() {\tint a = 10, b = 20;\tmyswap(&a, &b);}Файл myswap.hpp:template <typename Type>void myswap(Type , Type );Файл myswap.cpp:template <typename Type>void myswap(Type a, Type b) {\tType c = a;\ta = b;\tb = c;}Ошибка линковщика: C:\Users\...\AppData\Local\Temp\ccwOVCDE.o\tmain.cpp:(.text+0x2e): undefined reference to `void myswap<int>(int , int )'
>>1392833Я не очень разбираюсь если честно, но по-моему дело в подключении файлов, судя по ошибке линковщика, а не в объявлении шаблона.У тебя main подключает hpp файл с одним прототипом, а само тело функции находится в файле, который как у тебя не подключен.
>>1392841Не, ну теперь точно в песду.Просто верьте, что я нигде не объебался с указателями.Я на Си прогал с полгода. С указателями всё нормально.
>>1392842Не. Судя по мейк-файлу, myswap.cpp в проекте.# Project: test# Makefile created by Dev-C++ 5.11CPP = g++.exeCC = gcc.exeWINDRES = windres.exeOBJ = main.o myswap.oLINKOBJ = main.o myswap.oLIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32" -m32INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include"CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++"BIN = test.exeCXXFLAGS = $(CXXINCS) -m32CFLAGS = $(INCS) -m32RM = rm.exe -f.PHONY: all all-before all-after clean clean-customall: all-before $(BIN) all-afterclean: clean-custom ${RM} $(OBJ) $(BIN)$(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)main.o: main.cpp $(CPP) -c main.cpp -o main.o $(CXXFLAGS)myswap.o: myswap.cpp $(CPP) -c myswap.cpp -o myswap.o $(CXXFLAGS)
>>1392557Ну ёпт, анон. Ты заполняешь в str со сдвигом нахуя именно так непонятно n+1 элемент, а потом возвращаешься на n назад. В итоге ты удаляешь массив не с адресом, например, 0x0000A0A0, а 0x0000A0A1.
>>1392833https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file
>>1392865Вот это я прозрел, однако.Если скомпилить шаблон, то в объектнике будет так же пусто, как сейчас в моем желудке...А чё. Удобно.Спасибо, анон.
Как мне свою лабу скомпилить без зависимостей? vcruntime140.dll висит в импорте, пердун препод не принимает работу.
>>1392949Скомпиль прямо на компе, где показываешь, или положи ucrtbase, vcruntime, msvcrt и остальные зависимости (посмотри через depends.exe) в папку с твоим исполняемым файлом. В крайнем случае посмотри, какой redistributable стоит на том компе, установи соответствующую студию у себя и скомпиль ею.Технически ты можешь вообще избавиться от CRT, но не для студенческой лабы это дело.
>>1392951>>1392969У меня /MT стоит в настройках. И прописал в additional dependents ucrtbase, vcruntime, msvcrt либы. Или по-другому как-то надо?>>1392960Можешь команду подсказать хоть как компилить? Я нуль.
Аноны, испытываю сложности с переносом сущностей реального мира в плоскость языка программирования. То есть проблемы с математическим описанием этих сущностей или что тр вроде того.Есть ли книги, в которых описываются способы решения этой проблемы?
>>1393080> Аноны, испытываю сложности с переносом сущностей реального мира в плоскость языка программирования. То есть проблемы с математическим описанием этих сущностей или что тр вроде того.Ну приведи пример того что ты пытаешься перенести и желательно распиши ход своих мыслей касательно того как бы ты это сделал
>>1393565А зачем тебе именно 7 ?У них comunity edition сейчас бесплатна (для некоммерческих целей) и с довольно большим функционалом.
>>1393599В шараге где учусь именно ее юзают, поэтому приходится жрать че дают. Если там все совместимо то ок, спасибо
Блядь, как деструктор у строки вызвать без using std::string? #include <string>//using std::string;int main(){ string str; str.~string();}error C2300: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>': class does not have a destructor called '~string'
>>1393664данный функционал нужен в ОЧЕНЬ РЕДКИХ случаях, и уж точно не в твоем примере, потому-что UB. Зачем ты это вообще мучаешь?
#include <windows.h>#include <vector>class MyClass{public: MyClass() {} ~MyClass() { Beep(4000, 10); }};int main(){ std::vector<MyClass> MyVec; MyVec.emplace_back(); delete &MyVec.at(0);}Почему оно не крашнулось еще на delete? И если delete сработал почему деструктор вызывается 2ой раз?!
>>1393670>не в твоем примереЯ набросал просто по минимуму, чтобы ошибку продемонстрировать.В книге вызов деструктора выглядит вполне легально: там строка - это член union, сам union завернут в класс.>Зачем ты это вообще мучаешь? Ну бля, столкнулся с непонятной хренью, надо же разобраться. Тем более - это последние страницы книги буквально.
>>1393671> Почему оно не крашнулось еще на delete? А почему должно крашнуться?> И если delete сработал почему деструктор вызывается 2ой раз?!Вектор вызывает деструктор всех своих элементов. Откуда ему знать, что ты вручную вызвал деструктор его элемента? Надо было тогда и из вектора удалить его.
>>1393739s.~basic_string<char>()Я понимаю, что книги не могут успевать за стандартами, но в С++17 для данного случая ввели безопасный и удобный std::variant (ну или если невозможно использовать C++17, тогда boost::variant).
>>1393776например будет выведено:Путь к файлу: D:\...и если нажать enter, то это значение помещается в path
>>1393776>printf, malloc. scanf>Крестовый тредНу ебана. Вам, батенька, в си тред. Здесь суровые крестовики хуярят лямды на шаблонах со сфинае.
Посоветуйте годноты по mfc. Как-то не нахожу толковых гайдов.Лучше всего на русском, но и английский пойдет.
>>1395035Кароче, задали задание, через структуру лист, написать программу по определению в строке десятичных цифр и выносу их. Написал код на работу со строками(шоб слова по отдельности определялись), а вот как определить десятичная ли у меня цифра для выноса не могу понять как
Аноны, помогите плз. Как определить крайние пиксели для растровой области? По какому правилу они будут считаться граничными?
>>1395830Я знаю про крайнюю плоть, но не пиксели. Что такое растровая область? Битмапа, часть битмапы? Текстура в директиксе? Что?
>>1395839Если непонятно, то можно представить это как массив пикселей. Как для массива пикселей найти пиксели, которые находятся с краю?
>>1395877Стоп, стоп, стоп, какой еще нахуй границы картинки. Вот картинка, посередине область. Как границы области могут быть границами картинки?
>>1395878Короче я запостил пикчу и понял. Надо проверять, есть ли по соседству с пикселем другой пиксель с цветом фона. Если есть хоть один такой сосед, то значит наш пиксель - граничный. Только это дебильный алгоритм получится, проверять каждый пиксель области, точнее соседей каждого пикселя, а их будет 8 штук. Если область будет большая, алгоритм будет медленным. Надо как то сократить количество проверок. Может знает кто, как это можно провернуть?
>>1395882Если у тебя только два цвета, то проще будет каждую строку и брать пиксели которые отличаются от фона (например, первого пикселя)
Ананасы, поясните за виртуальные функции и наследование.К примеру, базовый класс Widget и у него есть какие-то виртуальные функции.А в качестве наследников будут ButtonWidget, LabelWidget и тд и тп.Естественно у них будут функции которых нет в базовом классе: Click, SetText и прочее.Всегда ли нужно в качестве типа указателя иметь базовый класс?Или можно, допустим, в базовом классе определить несколько виртуальных функций и в наследниках переопределять их и добавлять другие функции (не только виртуальные) при необходимости, если нужно?Считается ли это каким-то неправильным проектированием?
>>1395830Операторы Прюитта, Собеля и Кэнни, методы Харриса, Моравеца и SUSAN.ебись с этим, как я ебался на диплом, зато к получится - будешь собой доволен.
>>1395909Как я понял, через указатель надо делать только если класс абстрактный с "чисто виртуальной" функцией без определения. То есть тут больше вопрос полиморфизма нежели чем наследования.
Аноны, поясните, как сделать. Допустим есть класс точка со свойствами Х и Y. Как мне правильно добавить к свойствам класса массив с указателями на соседние точки, чтобы можно было потом ссылаться на эти соседние точки? Чтобы можно было потом, например, для точки А писать что то типа А.nearPoint[2]->Х, то есть обращаться к координате соседней точки для моей точки.
>>1396500Я пробовал уже нечто такое, ругается, что якобы taking the address of temporary object of type, когда я прописываю, на какие адреса должны ссылаться указатели.
>>1381995 (OP)Сап, как получить текущую директорию в с++ ? Гугл выдает 17 версию языка, которая не поддерживается у меня и какие то костыли на си. Возможно я не правильно гуглю и есть простой однострочный способ получить текущую директорию, как это например в питоне или жаве.
>>1396508Либо читай про сишный DIR, либо пробуй вытащить из потока результат system("cd").А вообще, по идее, filesystem доступна не только в 17 стандарте, но и в 14 - правда, это достаточно уебищно из-за отсутствия автовывода типа шаблона.Попробуй std:: experimental::filesystem::v1 посмотреть, мб у тебя будет. Мне изначально на рабочий комп поставили VS2012, там было это. В общем, удачи, брат - ебаться тебе много придется.
вроде как сюда писать. как должен выглядеть полный код программы (хотя бы для консоли), рассчитывающий эту функцию? безрезультатно бьюсь третий день, с меня тонны нефти
>>1396541Разбиваешь это уравнение на разные функции.Например x2k+1 сделаешь одну функциюДля 4k2-1 другую и тдПотом это всё комбинируешь в цикле и выводишь результат
Как сделать, чтобы Qt записывал число в файл в нужное количество байт? То есть у меня там например 64, а он записывал бы 0064? Записывать в файл надо в 16-ричном формате, а числа в программе в quint16.
>>1396556> Записывать в файл надо в 16-ричном формате, а числа в программе в quint16.Записывай по два quint16 в один quint32 или какой там типА при считывании "разбивай" quint32 на два quint16
>>1395880> проверять каждый пиксель области, точнее соседей каждого пикселя, а их будет 8 штукзачем 8? проверяй 2 или 3 если диагональные тоже считаются граничными.
>>1396563Все, проблема решилась. Оказывается, он может и quint16 записывать, просто я забыл записывать по одному числу в цикле, и из-за этого он писал хуйню.
>>1396564Я уже придумал, как это делать, проверяя все 8, но не проверяя каждый пиксель области. Теперь надо придумать, как запилить градиент от какой нибудь центральной точки до границ неправильной области.
>>1396588Да, я видел. Уверен, что это отличные способы, но они слишком сложные для моего случая, когда есть всего два цвета. С двумя цветами можно придумать что нибудь попроще.
>>1396598Ты в любом случае будешь использовать те же принципы, только изобретешь свой велосипед. Конкретно сейчас ты хочешь SUSAN использовать(оценивать количество рядом стоящих пикселей схожего цвета, а вообще интенсивности, если по-хорошему).Хочешь просто сделать - бери оператор Прюитта, ебашь свертку и получишь только граничные пиксели после обработки. Собель будет точнее, Кэнни ещё точнее, но сложнее.
>>1396614Я думаю просто выбирать следующий пиксель рядом с текущим, который соседствует хоть с одним пикселем фона. То есть грубо говоря проверять все 8 соседних пикселя: если сосед белый, соседствует с черным, то переходим на него, а предыдущий вносим в контейнер. Ну и надо проверять, не пришли ли мы к самому первому пикселю, чтобы выйти из цикла.
>>1396616А это метод Моравеца, брат.Он сложный самый долгий был у меня среди всех реализованных.Я тебе говорю, проще в цикле по всем пикселям(т.е. по I и по j) сделать цикл по соседям, в котором умножать интенсивность пикселя на соответствующее значение матрицы свертки(имеется в виду, что левый верхний сосед умножается на число, которое стоит в левом верхнем углу матрицы свертки), собрать результат а переменную, разделить ее на коэффициент нормировки и записать в пиксель.Описал немного сложно, но загугли, описания алгоритмов есть на том же хабре.
>>1396616>>1396614один не может тривиальную проблему наговнокодить, другой третьекурсник затирает ему про какие-то операторы, свертку, фильтры, которые они недавно прошли. типикал с++.
>>1396529Cпасибо, в общем я решил пойти по другому пути. Пздц, чем больше работаю с С++ тем больше удивляюсь что какие то элементарные вещи не сделаны, либо сделаны через пень колоду.
>>1396622А ты не видел мое сообщение, что я на диплом это делал? Определенно, я до сих пор студент, да. А ты в самом деле Д'Артаньян, но нихуя в обработке изображений не смыслишь.>>1396626А так и гугли, если через свертки - то это Прюитт, Собель, Кэнни. Там матрицы и будут.
Ошибся в формуле, и вместо градиента прога стала рисовать вот это. Смотрите, какая красота. Похоже на какую то атомную структуру.
>>1397194Да не все нормально, уже исправил. Слева линейный градиент, справа логарифмический надеюсь, что логарифмический
Плюсач, как реализовать перегрузку операторов абстрактного класса?class Poly_Base{public: friend Poly_Base operator+(const Poly_Base &lhs, const Poly_Base &rhs); ~Poly_Base() = 0;};class Poly : public Poly_Base { int i;};хочу использовать интерфейс абстрактного класса через указатели на негоPoly_Base p1 = new Poly(), p2 = new Poly();Poly_Base p3 = new Poly(p1 + p2);
>>1397202френд функшонс ар нот инхеритедhttps://stackoverflow.com/questions/3561648/why-does-c-not-allow-inherited-friendship
Аноны, я что то не могу сообразить.Вот любую функцию можно смещать относительно координат, верно? Например, арксинус.Представляем его в виде записи a arcsin(bx−c)+d, где а - амплитуда, b - период, с - смещение периода, d - смещение амплитуды. И вот считаю я значит для своего графика эту формулу, и у меня получается с = pi/2. И из-за этого я тупо не могу посчитать арксинус, потому что внутри скобок из-за этого pi/2 всегда получается число больше 1, а арксинус больше 1 не рассчитывается. И как тогда считать смещение для арксинуса?
>>1397262почему у тебя радианы внутри аргумента арксинуса? почему у тебя какой-то "период" внутри аргумента арксинуса? ты с тригонометрией не обосрался?
>>1397262>>1397278Наверно слишком сложно объясняю, в общем сформулирую по другому.Арксинус по умолчанию меняется от -pi/2 до pi/2 по Х, и от -1 до 1 по Y. Мне же нужен график арксинуса от 0 до xмах по Х и от 0 до yмах по Y. То есть смещенный наверх вправо. Как эту йобу запилить?
>>1397292> Арксинус по умолчанию меняется от -pi/2 до pi/2 по Х, и от -1 до 1 по YАрксинус принимает значения от -1 до 1 и выдает значения от -pi/2 до pi/2.>То есть смещенный наверх вправоВот так напримерhttps://www.wolframalpha.com/input/?i=asin(x+-+1)+%2B+2https://ideone.com/C5EMJE
>>1397224>френд функшонс ар нот инхеритед>https://stackoverflow.com/questions/3561648/why-does-c-not-allow-inherited-friendshipЯ понимаю что их нельзя перегрузить. У меня вопрос можно ли как то организовать френд функцию абстрактного класса дабы работал оператор сложения?Вариант с оператором+ членом класса примерно представляю, его можно перегрузить. Интересно именно френд функция
Сап.Как сделать так,чтобы фишки нард могли перемещаться только в определённые места("лунки" или как их там обозвать)?vcl,фишки и поле-imageНе обоссывайте,я сильно ньюфаг
>просыпаюсь в 2019>в 20 стандарт завезли хуйни примерно как с с++98 -> c++11Ебаать, когда же это все учить
Перемещаюсь по коду мышкой, стираю мышкой, все делаю мышкой, кроме написания самих букв. Напрягает, вечно правая рука двигается туда сюда от клавиатуры до мыши. Вообщем хочу себе облегчить жизнь и научиться делать все дела на клавиатуре. Но как блять!? Нужно специальные бинды делать или что?
>>1398316У меня от этой хуйни брат умер рука разболелась. В отпуске заставил себя выдрочить всевозможные сочетания для студии\вима. Сейчас по минимуму пользуюсь, брат воскрес.
>>1398316shift+ctrl+влево\вправо - выделить словоshift+ctrl+вверх\вниз - переместить строкуshift+del - удалить строкуshift+end - выделить строку от курсораНу и перемещение по файлам тоже хорошо бы освоить, но это зависит от ИДЕ.
>>1398373>стрелкиПользуйся православными hjkl, так вообще руку не надо двигать.Хотя кто бы говорил, я сам в виме стрелками перемещаюсь.
>>1398681> hjklНихуя неудобно.Они постоянно "теряются" в остальных клавишах или часто путаю направление.За это время сделал бы на стрелочках всё что надо.
>>1398802Даже в стандартном убунтовском pdf ридере функции стрелок продублированы на hjkl. И manpages туда же. И консольный клиент vk. HJKL - это охуенно! Кто считает иначе, тот хуесос
>>1399024>>1399021>>1398373>>1398339Вы мне объясните. В visual-studio это все есть? Текстовые редакторы аля нотепад ака вим не интересуют.
>>1399081ХЗ. Во многих IDE встроена симуляция vim, еще больше где поддерживатся как минимум доп.плагином. Если IDE не умеет в редактор с цивилизованной парадигмой, то это хуевая IDE. Обезьянья парадигма с единым режимом "для простоты" не считается цивилизованной.
>>1399081Не слушай ебанатов-некроёбов, в студии и без этого много нормальных хоткеев. Если мало, ищи плагины (например, subword navigation)
>>1399250Никакие плагины не дадут той власти мгновенного редактирования, которую дает Esc в виме. Пока клавиши с буквами без зажатых альтов и прочего говна печатают только буквы, все очень хуево.
>>1399250> нормальных хоткеевПереход к определению функции, например, находится в пизде клавиатуры на F12 или где-то там.
>>1399021Пробовал. И писал в виме какое-то время.Да, многие вещи очень удобны, но навигация по коду, переход к определению/реализации функции (особенно что касается виртуальных), цепочка вызовов и тд и тп это всё приходится ебаться и настраивать. В той же студии это уже всё есть.
>>1399305> Никакие плагины не дадут той власти мгновенного редактирования, которую дает Esc в вимеВ виме можно переименовать переменную в рамках функции/класса?В виме можно переименовать функцию какого-то класса?Или добавить (убрать) у неё аргумент и чтобы в реализации/определении тоже поменялось?
>>1399481Это все можно и на vim повесить. Но вот сама техника редактирования кода там непревзойденная.
>>1400118Согласен. Только очень глупый человек может счесть серьезным занятием использование говноедского видео-терминала. Все настоящие ценители пользуются строчным принтером вместо монитора, перенаправив на него stdout из bash, и довольствуются адекватной последовательной работой с редактором sed. Припадочноя интерактивщина с ненужным перемещением курсора по вертикали - вовсе для душевнобольных, и даже визуализированное перемещение курсора по горизонтали - для гуманитариев, неспособных держать в голове даже одну строку текста, набранную вслепую. Такие люди напоминают школьников, предпочитающих электронные книги бумажным. Экраны - заговор жидов, зарабатывающих на испорченном зрении потребителя. Пожалуй, кончу на этом, чтоб не деградировать от невозможности писать в петровской орфографии за неимением соответствующей раскладки.
есть кто работает в 19 визуалке, скажите какого хрена дебагер выплевывает исключения по поводу и без при всем том что та часть кода на которое выкидывает исключения работал без проблем.
>>1400362Ебанаты из Microsoft сломали студию ещё в версии 15.9, починить собираются только этим летом (тикет написан в ноябре, ответ через пару месяцев, починят почти через год, пиздец)
>>1400362Нехуй сырое говно качать. Только ньюфани не знают, что у продуктами майкрософт можно пользоваться спустя минимум год после релиза. Ставь 17 обратно.
>>1400507даже не удалял 17, но сдури мейн проект перевл в 19 обратно ставить начал все очень плохо стало. Да проблему решил с горем пополам пол дня убил
Из C++ в C# пжпжпжvoid __fastcall TForm1::Button1Click(TObject Sender){Memo1->Lines->Clear();int A[4]; int B[5];int m;String One, Many;for(int i = 5000; i < 10000; i++){One = IntToStr(i);for(int j = 0; j < 4; j++)A[j] = StrToInt(One[j + 1]);if(A[0] & 1) continue;m = i 2;Many = IntToStr(m);for(int j = 0; j < 5; j++)B[j] = StrToInt(Many[j + 1]);if((B[1] == A[3]) && (B[2] == A[0]) && (B[4] == A[0])){Memo1->Lines->Add("ОДИН - " + One);Memo1->Lines->Add("МНОГО - " + Many);Memo1->Lines->Add("");}}}
Суп, двущ. Нужна структура данных (boost, std) для хранения структуры ПАПОК внутри определенной папки. Насоветуйте. Что-то вроде не бинарного дерева строк подойдет?