>>448321 Много для чего. Например для передачи из функции значения. >>448463 Старайся написать программу без синтаксических ошибок в коде. >>448465 Нет таких фунцкий. >>448469 Зеленая стрелочка в visual studio сверху.
Почему не меняет? Тут же оператор сравнения ==, а не присваивания. В чём тонкость?
Суть в том, что препод сейчас сказала, что один чувак с первого курса с помощью этой конструкции как-то сделал так, что if работал как switch. Как именно - она не помнит, но вложенности там не было.
>>448566 Именно. Или у того хуесоса, про которого она говорит, по стечению обстоятельств код работал верно, хоть и был ошибочным (например, переменная n всегда была равна 1, если брать твой пример).
>>448748 Борду напиши, азаза. Так то было бы и не азаза, но заебешься объяснять потом зашоренным дебилам. В какой области хочешь работать, для той и пиши. Для десктопа, например, очевидный текстовый редактор (что-то уровня Notepad++, без лишних перделок). Фреймворк хотя бы один надо изучить. Как без них то вообще что-то можно писать? Это ж велосипед на велосипеде выходит. Ну и раз уж тебя на жабе не берут, то на крестах не возьмут и подавно, это тебе не в XML конфиги прописывать, тут все серьезнее и порог вхождения выше.
>>448748 > Кути, бусты обязательны для джуна? Вообще зависит от вакансии, но если ты собрался писать для портфолио то нужны. Врядли ты что-то напишешь без них. Можно конечно WinAPI использовать, но скорее всего на тебя будут показывать пальцами и смеяться. Если собираешся погружатся в кресты то лишними они не будут, особенно буст.
>>448777 Не все, а только я. Тому що не нравится этот тред (из-за толп студентов-дегенератов). Хочется помогать адекватным людям, которым интересно, которые хотят учиться, а вместо этого что? Долбоебы со своими лабами, не могущими синтаксис загуглить.
>>448783 Кек. А я вот пилю решалку систем линейных уравнений методом итераций. inb4: Уебывай студентоблядь. Решил по фану запилить. Сейчас правда какая-то ошибка сверхъестественная. Собранная ms компилятором программа правильно. Собранная Gcc компиляторо программа работает неправильно. Если запустить вторую программу в режиме дебагенга она опять начинает работать, как надо.
>>448786 И я без понятия, как посмотреть значения переменных, не запуская дебаггер. Если же я запускаю программу, то она высчитывает значения как надо.
>>448786 Код давай. У меня первокур один такой был, тоже у него в дебаге работало, а в релизе падало. Оказалось, что какое-то обоссанное мелкомягкое расширение синтаксиса использовалось, типа new int[] (именно так, без указания размера). Так что давай свой код.
>>448800 Не, в этом году сам только выпускаюсь. Но поскольку я уже работаю в том же универе, попросили студента подучить, чтоб проект один ему передать, который до этого я пилил. Курс погромирования, увы, крайне убогий и бесполезный, формочки мышкой на дельфях и все.
>>448809 Я это 5 минут назад дописал. На github лежит версия, которая работала только в msvs. Просто я решил побрать под gcc и обосрался. Нет, я понимаю, что я обосрался, как только написал свой первый hello_world и вообще мне в макдак пора, но пока хочется, чтобы программка заработала.
>>448812 for (int count = 0; count < this->numberOfVarialbes; count++) { this->matrixA[ count ] = new double[ count ]; } Ты выделяешь count памяти на каждый массив, а потом работаешь с matrixA, как если бы выделил numberOfVarialbes. И так везде.
>>448819 this->matrixA[ count ] = new double[ this->numberOfVariables ] Ну или если тебе и не нужно столько памяти, то поправь все места, где ты с массивами работаешь.
>>448823 Да я знаю. Просто изначальный вариант у меня очень годно вписывался в обычные сишные массивы и не хотелось работать с вектором. Плюс я из си пришел, и векторы меня немного смутили.
>>448820 А, блядь, я понял где ошибка. Я типа создавал массивы Первый массив - 1 элемент Второй массив - 2 элемента etc. А надо Первый массив - n элементов Второй массив - n элементов
Красаучеги, я вот не заметил этот ссаный размер массива массив. Ну и да, голые массивы выкинь к хуям, используй контейнеры, vector, list, например. Базарю, еще захочешь.
Лел. Наладил распределение памяти. Все заработало. Удивлен, что это вообще работало, лол. А ведь если бы я не пердолился и под шлинуксом и под Windows, то я б даже и не заметил.
Пока писал эту программу открыл для себя море всяких охуенных вещей.
>>448831 >используй контейнеры, vector, list, например. Я перепишу в ближайшее время. Как сказал выше, я просто переписывал эту пограмму с классом, поэтому решил не сильно отходить от первой версии программы.
Мне там кто-то звездочку поставил. Теперь буду его своим говнокодом развлекать. Лол.
>>448834 Хуй знает. Мне мой знакомый, который йоба плюсовый программер, сказал, чтобы я дрочил visual studio. Может стоит подключить GCC к ней?
Хочу в перспективе прикрутить окошечки. Какие GUI будет лучше использовать с точки зрения востребованности, лол? На чем нынче в ынтерпрайзе окошки рисуют?
>>448843 Не буду писать. Он тут где-то сидит. Тут и познакомились. Да и он во мне разочаровался, хмык.
>>448844 А чем плохо? Сверстал заебатый интерфейс на html/css/js и прикрутил к программке. Любая веб-макака разберется. Просто сколько я не видел QT приложений средней руки везде очень косячно реализован этот QT интерфейс. Вот, вроде бы, все работает, но как-то не так. Подобное ощущение было с Anki. Не знаю, как у них там сейчас.
>>448848 Он, совместно с gcc, помог найти мне ошибку с выделением памяти.
>>448849 Ну окей. QT, так QT. Хотя может ещё чего-нибудь посмотрю.
>>448852 >очень косячно реализован Ну хуй знает, у меня все нормально. Тебе какие-то парашные приложения попадались. Алсо, >Не буду писать. Вот и не пизди тогда. Я на словах тоже супермен.
>>448857 >Я на словах тоже супермен. Ну он не давал свое согласие на распространение данных на сосаче. В любом случае, этому человеку я очень благодарен, а то я бы сейчас сидел бы и клепал формочки для сайтов.
>>448837 Пробуй GCC. Как IDE можешь взять CodeBlocks. Очень удобно для кроссплатформы. На работке, как раз, хуярю мелкие модули, для к-х необходима работа на маке, лине и шинде. Даже достаточно копирнуть папку с проектом, чтобы сразу приступить к работе на другой ОС.
Ну и мелких компиль достаточно неприятная вещь, когда пишешь код под несколько ОС. Доводилось портировать код из студии, жопа горела только так, особенно от рандомных segm fault, ибо накосячено, но компиль сжевал. Хотя студия охуенная IDE, правда жрёт не в меру, да падает.
>>448873 >портировать код из студии Кек. Same shit. Пока переписывал тот калькулятор с поддержкой классов и вообще все по уму - копировал некоторые части. Блядь, не важно зачем. Студия выдавала просто тонны ошибок, которые хуй поймешь, как фиксить. Но лечились они тупо переписыванием того же кода от руки. Пиздос.
>>448875 >что делаешь Имею слабое представление, как работают библиотеки.
>зачем это надо. Ну это единственная статья по сабжу, которую я смог нагуглить и, которая раскрывает сабж, а не треп о том, какая программа должна быть.
Олсо, пока идей практически нет. Планирую, как и с этим какульятором - тупо реализовывать частями, а там уж, как получится. Сначала запилю/найду обертку для SQLite и JSON парсер, потом надо придумать как выполнять задачи в определенные моменты времени. Типа, как cron, но только своими руками, что ли. По этому вопрос я вообще ничего не гуглил. Ну и язык садоводов запилить. Он должен быть простым, но очень описательным.
>>448874 Только если нужно подключать программу, как ПЛАГИН. На работке кроссплатформенный ядро, к к-му уже подключаются платформозависимые плагины. Что dll, что остальные.
>>448878 О, вот это вообще тема была бы. Но мне кажется дохуя сложно и сначала надо логику приложения проработать, а то на деле нихуя нет, язык знаю на уровне /память брызжет из всех дыр/, а амбицией дохуя.
Пиздец. Плагин нужен, когда ты заранее не знаешь, какие еще возможности прикрутишь к своему велосипеду, либо когда возлагаешь часть обязанностей на сторонних разработчиков (пример - всякие плагины для IDE). Вынесение части приложения в библиотеку нужно тогда, когда там есть функции, которые будут использоваться плагинами. Все. Просто так, для логического разбиения одного проекта плагины/библиотеки не используются. Это бред и лишнее переусложнение. Раскидывай сырцы по подпапкам и будет тебе логическое разделение, а плагины совсем не для этого. Подразумевается, что без плагина твое подели будет работать так же, как и с ним, только какой-то определенной свистоперделки не будет.
>>448890 Я сейчас за организацию классов. Куда какие пихать и какой функционал им давать. Впрочем, от твоего поста пару идей появилось. Наверное, надо тупо садиться и пилить.
>>448902 >организацию классов А какое отношение имеют плагины и библиотеки к организации классов? >Наверное, надо тупо садиться и пилить. Неужели хоть до кого-то дошло.
>>448905 >А какое отношение имеют плагины и библиотеки к организации классов? Без понятия. Мне в прошлом треде сказали, что я пилю God Object и послали додумывать. Поэтому додумываю гугля "application C++, applicatcion arhitecture".
>Неужели хоть до кого-то дошло. Ну вот некоторое время назад я запилил программку, которая общается с другой через сокеты виндовые. Это тоже включу в проект. Сегодня вот эту лапшу, которая считает корни СЛАУ. На пути к успеху.
писал в рошлем треде помочь исправить ошибки, позже понял что тема гораздно глубже и обрней, так вот: Есть код на ассемблере вырванный с помощью ollydbg , нужно перепилить его под gcc. Я пытался осилить несколько статей, они дают очень много инфы которую мой мозг не может осилить, запилите пожалуйста короткий гайдец по быстрому переводу а-ля PUSH EAX -> pushl %eax если я правильно понял
>>449023 точнее, я не понимаю что конкретно нужно. Вставить в с++ билдер код ассемблера, скомпилить-????. Или просто скомпилить проект с меткой objdump -D
Расскажите про работу с сетью в крестах. Есть какие-то стандартные средства/библиотеки для этого? В гугле все примеры разные, один охуительней другого.
catch (exception& e) -- это ловит out_of_range и runtime_error. catch (...) -- это ловит всё остальное, кроме аппаратных ошибок. Деление на ноль считается аппаратной ошибкой в C++ , поэтому за делением на ноль придётся следить только самому.
У меня будет очень тупой вопрос, но мне - честно - влом его гуглить, потому что вопрос я задаю из праздного любопытства, а не из-за того, что laba2 горит. shift + 8 обозначу за @, потому что макаба. Можно ли объявить массив
>unsigned int rows = 12; //for example >int@@ m2 = (int@@)std::malloc(rows @ sizeof(int@));
А дальше напихать в него rows штук строк разной длины? Ну так, прост))
вобщем нужнов процессе выделить память и записать в него свою функцию, делаю это по статье, в оной используется с++ билдер. Как реализовать это на gcc ?
hProcThread = CreateRemoteThread(hProcess, NULL, NULL, (LPTHREAD_START_ROUTINE)ta, pp, NULL, NULL); Собственно код. Создается два указателя на выдеенную память в процессе, мы записываем в первый - указатель на функцию, во 2 - указатель на переменные для функции, потом создаем поток выполнрения. Проблема состоит в том, что указатель на функцию выглядит как (void)(), при этом VirutalAllocEx не может выделить память под ТАКОЙ указатель, а также для создания потока тоже требуется указатель типа void. Как это реализовать ? Первые несколько советов из гугла по запиливанию каста (void)() to (void) приводят к ошибке компиляции. Кто сталкивался? Как справляться с этим. п.с. в фунцкции создания потока требуется на (void) а LPTHREAD_START_ROUTINE , при этом к этому типу спокойно приводится сам void.
>>449197 статья - с жука по инъекции кода в ммо гаму. кода там много не нужно там пара команд я же описал проблему: мне нужно зарезервировать в процессе участок памяти, скопировать туда функцию на ассеблере и заэкзекутить. Я показал решение описанное в одной годной статье, но она на с++ билдер. В gcc я столкнулся с проблемой - указатель на функцию не имеет вид void*, как это собственно обойти ?
>>449204 Ссылку давай. Если ты не заметил, то в том куске кода, что ты скинул, напрочь проебана разметка. Залей его на pastebin. >указатель на функцию не имеет вид void* Чет я не понял тебя. Привести указатель к нужному типу, не?
Я пытаюсь играть с памятью процессов, данные как бы считыват ья научился, следующий этап - иньектирование функций. Учу я это на примере вовчика 3.3.5. Я выдераю нужную функцию из ollydbg, реализую ее как асм вставку в с++ коде. Потом открываю процесс игры - выделяю себе память, копирую в эту память функцию и параметры, потом запускаю поток выполнения функций по указателям. Все бы ничего только указатели на функцию и void - разные вещи. Посему функция выделения памяти в процессе требует void, создание потока требует тип LPTHREAD_START_ROUTINE, однако тип void легко преобрзауется к этмоу типу. А сама функция - точнее указатель на нее - (void)(). Ошибка компиляции итдитп ЧЯДНТ? http://pastebin.com/B9kAEJgE
>>449306 Не поверишь, void params_2 = (void)(&SimpleVoidF); - работает с предупреждением, а как у тебя скомпилило void params_1 = (void)SimpleVoidF; понятия не имею Спасибо уж, не думал что я настолько криворук
>>450294 Т.е. я хотел сказать, что если всегда есть арифметическое действие как для if, так и для else, не лучше ли arithmetic if фигачить в таком случае.
>>450297 Не лучше. Получается нечитаемая дрисня вместо кода, если действия достаточно длинные, типа (a == b && c == d) ? longObjectName->someShit(shittyArgument)->pssssss(a, b, c, d, e, f, yourMum) : fuckingYourMum(Mum::Ass | Mum::Vagina).cumOnFace(2); Это не говоря уже о том, что два действия ты в одну ветку не запихнешь, и действия с разным типом возвращаемого значения тоже.
>>450301 Я про в случае абсолютно одинакового действия и абсолютно одинакового типа.
Просто или писать отдельную функцию на экран с ветвлениями, или три строчки по три вложенных арифметических ифа с комментариями. Никаких вызовов функций, ничего.
>>450303 Ну тогда можно и так, но считается, что это менее наглядно (когда бегло просматриваешь код). Хотя я, бывает, сам использую, чтобы не раздувать код почем зря.
#include <iostream> #include <cmath> using namespace std; int f1(int i) { i=2; return i; } int main () { int i =1; f1(i); int f1_result = f1 (i); cout<<i<<endl; return 0; } Не работали глобальные переменные, решил проверить на тривиальном примере, всё равно не пашет. подскажите плз (ответ кстати от наличия int f1_result = f1 (i ); не зависит), только начал учить программирование
>>450339 Лол. ГЛОБАЛЬНАЯ = переменная определенная глобально, т.е. ты можешь получить доступ к ней из любой части программы. Переменная, объявленная в теле функции, считается локальной.
>>450340 Ну так ты посмотри на код внимательно. 1. Определяешь переменную i = 1. 2. Определяешь переменную f1_result. 3. Передаешь в качестве параметра в функцию f перменную i. 4. ВЫВОДИШЬ ПЕРЕМЕННУЮ I.
Если ты хочешь модифицировать переменную i, то либо объяви её глобально, либо передай на неё указатель.
>>450336 >>450338 добавил глобальную вопрос в том, почему функция не возвращает новое значение i да, я не понимаю очевидных вещей, поэтому и сижу в этом треде
Ты передаешь переменную по значению, а не по ссылке, потому она и не меняется. Внутри функции у тебя создается копия i. Глобальность тебе не поможет никак, потому что i внутри функции перекрывает внешнюю i. Как же вы заебали, читайте книжки.
>>450443 В глаза ебешься? "See type_index for a wrapper class that adapts type_info values to make them copyable and indexable with standard hash values."
Есть struct Polygon { vector<Point> points; ... };
Как проще всего сделать так, чтобы у меня появился конструктор, который мог принимать бы в качестве параметров произвольное количество точек? Думал про variadic function, но там, как я понимаю, не обойтись без передачи еще и количества точек в конструктор, а без этого можно как-нибудь сделать?
>>450604 -std=c++11 для 11 -std=c++14 для 14 Но вроде в gcc 14 пока нет, а в clang - есть, но со стандартной библиотекой от gcc не работает, так что у меня 14 работает только через кланг -std=c++11 -stdlib=libc++
switch(abs(arr [ i ] )) { case 1: //lala case 2: //lalala case 3: //ololo default: //something }
Свитч от модуля i-того элемента массива. Стоит завести отдельную переменную int temp = abs( i-тый элемент массива ) или нет? Важна скорость.
Данный свитч находится в цикле порядка миллиона раз, как и прежде. Никаких дополнительных чтений/изменений к собственно массиву внутри кейсов/дефолта нет.
>>450679 >>450682 Спасибо, я просто реально не понимаю, в какие моменты компилятор способен оптимизировать, а в какие нет. Какие вещи формально просто задать, а какие нет.
Какой код из условий, например, компилятор догадается может соптимизировать до уровня свитчей, или это принципиально первышает полномочия оптимизации.
Хочу выделенные строки CheckListBox1 добавить в Edit1, для дальнейшего создания sql запроса, проблема в том что на "s+=CheckListBox1->Items;" вылетает ошибка [E2094 'operator+=' not implemented in type 'AnsiString' for arguments of type 'TStrings'
void __fastcall TForm4::Button2Click(TObject *Sender) { int i; AnsiString s;
{ s="Select"; for (i=0;i<CheckListBox1->Count-1;i++) { if (CheckListBox1->Checked)
>>450690 Компилято способен оптимизировать все rvalue, так что всякие нанооптимизации вроде вынести переменную - бред сивой кобылы. Оптимизируй алгоритмы и пиши грамотный код, а не занимайся всякой херней.
>>450804 Чувство ненависти мне вообще не знакомо, ты не прав. И до шинды мне дела нет, но вот такие дегенераты как он в подавляющем числе случаев используют шинду. Их лучше в детстве топить. Испытываешь ли ты ненависть к комару, который докучает своим глупым жужжанием в бесплодных попытках тебя укусить? Вряд ли. Ты просто хочешь, чтобы он улетел или перестал жужжать. Проще всего его прихлопнуть для этого, либо прогнать. Против остальных виндузятников ничего не имею. >>450814 Ну кому ты пиздишь. Пикрелейтед.
>>450874 И сам догадался. У меня вопрос, почему такая херня творится? 10 символ - это новая строка. Что происходит, оно почему-то пишет 13, а затем новую строку?
Темы для вопросов на собеседовании на должность C++-программиста: Всё о наследовании за 3 минуты (зачем нужно, множественное, виртуальное, публичность). Что такое pure virtual function (зачем надо). «Контракты» в качестве бонуса. Vtbl, vptr, и прочие детали реализации. Бонус за множественное наследование. Бонус за виртуальное наследование. Конструкторы, деструкторы, порядок создания и удаления. Виртуальные функции в конструкторах. Шаблоны (зачем нужны, что такое специализация, что с производительностью). Исключения (зачем нужны, производительность, особенности реализации). new супротив new[] – зачем нужны, особенности реализации. STL (зачем). Бонус за историческую справку. За 3 минуты о производительности основных типов. Для любого (вставить «нужное») описать сайд-эффекты, когда не работает и почему. Бонус про «без сайдэффектов».
Задание: Передвинуть элементы массива a размерности n таким образом, чтобы элемент с индексом new_0 стал начальным, и вернуть индекс, который получил элемент, бывший начальным.
>>451044 > невозрастающая пирамида Если я правильно понимаю это такой массив в котором для каждого i элементы 2i и 2i+1 (если они существуют) меньше либо равны i.
>>451239 Первый ебет твою мать в жопу, а второй - в рот. Что тебе больше нравится сам выбирай. Я хуею уже просто с изобретательности природы: это ж надо ТАКИХ даунов порождать.
Привет, программач, я хочу тебе позадавать глупых вопросов.
1) Где лучше располагать объекты по дефолту -- в стэке или в куче? Вообще, как понять, где лучше расположить объект?
2) В MVC пользовательский интерфейс это свойство представления или модели? Если каждой модели нужен свой интерфейс, то как это лучше решить архитектурно?
>>451380 Пользовательский интерфейс это свойство представления. > модели нужен свой интерфейс Все тоже самое. Только под каждую модель получится свой view.
>>451418 Очевидно, внутри if, который делает goto на пониже.
>>451420 Ну, из нескольких соображений. Во-первых, гуглится, что у for (;;) ассемблерный листинг короче. Во-вторых, есть т.н. правило "по возможности используй for, чтобы к тебе не было дополнительных вопросов". В-третьих, писать короче.
>>451427 1) Оптимизация уровня /b/. У тебя таких циклов будет максимум по одному в каждом потоке.
2) Это что-то как-то верно, но вопросов не будет, если будут адекватные условия. Выходить из цикла ты, скорее всего, будешь по условию, поэтому лучший выход это while ( !finished ).
>>451380 >2) В MVC пользовательский интерфейс это свойство представления или модели? Если каждой модели нужен свой интерфейс, то как это лучше решить архитектурно? пользовательский интерфейс --- это скорее всего View+Control модель всегда едина
>>451431 >1) Оптимизация уровня /b/. У тебя таких циклов будет максимум по одному в каждом потоке. Согласен, но что-то должно перевесить в пользу одного из решений. Т.е. выбрать один раз и делать так всегда.
>>451431 >Выходить из цикла ты, скорее всего, будешь по условию, поэтому лучший выход это while ( !finished ). Если у меня for(;;) , выходить из цикла я буду с помощью return; подразумевается, что я номрально разбиваю код на функции
Блять, сейчас закидаете тухлыми яйцами, но понять же мне надо. Что делать, если я хочу в QT сделать свою функцию? Мне новый фал создавать, дописывать в main.cpp или в mainwindow.cpp?
Ребят, херня с tcc, написал dll на фасме скомпилил, линкую с кодом на С - не линкуется. Херня думаю, мож я не долбоёб, компилирую пример "tcc.exe tcc\examples\dll.c -shared", всё пучком, кладу dll в папку с клиентом, компилирую пример клиента "tcc.exe tcc\examples\hello_dll.c -Ldll.dll" и внезапно получаю хуём по губе от тцц, мол символ 'HelloWord' не найден, я охуел когда не нашёл в гугле и на оф.сайте просветления, пробовал след. варианты: "tcc.exe tcc\examples\hello_dll.c -LC:\tcc\examples -ldll.dll" "tcc.exe tcc\examples\hello_dll.c -L'C:\tcc\examples' -ldll.dll" "tcc.exe tcc\examples\hello_dll.c -LC:\tcc\examples -ldll" "tcc.exe tcc\examples\hello_dll.c -Ldll" И получаю одно и то же - либо -ldll не найден либо символ 'HelloWorld'.
>>451579 > dll на фасме Натрави на нее tiny_impdef или сам напиши .def-файл. А .def-файл можно либо напрямую линковать (tcc whatever dll.def), либо уже -ldll, если оно в libpath. Алсо, про mangling не забывай.
>>451590 Я правильно понял, что main.cpp занимается только созданием окошек и прочее, а свою функцию надо в mainwindow.cpp писать, предварительно продекларировав ее в заголовке?
Легковесный, кроссплатформенный надо Windows/Linux, на OS X пока похуй и невырвиглазный гуй существует в природе? Нужен минимум - окошки, модальные диалоги, кнопочки, поля ввода. Алсо, если придется зашквариться Qt, на нем возможно полноценно писать без Qt Creator?
>>451601 А чем тебе Кьют не Кьют? Собирай статически, особо много лишнего тащить нужно не будет.
И да, на нем можно спокойно писать откуда угодно, Криэйтор это ж IDE. Но из-под него дико удобно, потому что мэйкфайлы сам делает, дизайнер в комплекте, справка в комплекте (а она у Кьюта шикарная), и вся хурма.
>>451618 Почему костыль? Создавать таблицу импорта для PE можно разными способами: "большие" компиляторы (студия, гцц) при сборке DLL генерируют .lib-файлы, содержащие готовые куски таблицы импортов. Эти .lib-файлы ты указывешь при линковке своей программы, а линкер с помощью особой линкерной магии объединяет куски таблиц импортов из .lib-файлов в нужном порядке в одну секцию (импорты в PE под это и затачивались, кстати). Выглядит, как костыль, правда? Алсо, tcc, возможно, поддерживает такие файлы (их обработка ничем не отличается от обработки обычных статических либ, кроме, разве что, прописывания RVA и размера секции импорта в data directory). Но если не нужны всякие advanced-фичи, можно генерировать таблицу импортов при линковке. Так делают тот же фасм и tcc. Для этого нужен только список функций (символов) и имя DLL. Все это есть в .def файлах. tcc при сборке DLL генерирует, собственно, .dll и соответствующий .def. Для случаев, если .def нет по каким-то причинам (например, .dll собрана не в GCC, как у тебя), в поставку входит tiny_impdef, который перечисляет экспорты указанной .dll и создает .def. Алсо, я не совсем понимаю, что ты и где гуглил, если пример сборки использования .dll в tcc есть прямо в tcc-win32.txt в дистрибутиве. Алсо, если тебя что-то не устраивает, можешь просто не использовать встроенный линкер tcc и взять ld, MS link или еще что-нибудь.
>>451593 >Я правильно понял, что main.cpp занимается только созданием окошек и прочее нет, неправильно. во-первых это обычно плюсы (пусть с moc-костылями, но всё же), во-вторых Qt абсолютно не навязывает. если ты новичек в плюсах, то стартовать с кути не стоит, серьезно. продрочи консольку основательно >а свою функцию надо в mainwindow.cpp писать, предварительно продекларировав ее в заголовке? короче говоря, если у тебя функция относится к классу, то ее нужно объявлять в классе
>>451601 >писать без Qt Creator можно писать хоть в виме, это же библиотека
Qt-тред скорее мертв, чем жив, спрошу тут. Че с этим обоссанным ычаном не так? Хули он не вайпается. http://pastebin.com/mDWKJy5u Wireshark'ом посниффил, все хедеры заданы, все куски формы тоже. Файл прикреплен, капча решена (спасибо анону, который распознавалку на жабе запилил). Хули они, блять.
>>452281 Какой же я даун, обосрался вот тут, коммент забыл убрать. QHttpMultiPart *mp = new QHttpMultiPart;//(QHttpMultiPart::FormDataType); Кидайте свои ссаные тряпки мне в рожу.
Добрый день. Как можно реализовать побитовую запись в файл? Задача по переводу UTF-8 в код Фибоначчи и обратно, не знаю, как Фибоначчи писать. Думаю в массиве байт биты хранить и потом в конечный массив используя побитовые сдвиги записывать, но выходит оче запутанно и непонятно, как между фрагментами связь поддерживать записал я 19 бит, массив под биты кончился, остались 3, не внесенные в массив для записи, что с ними делать?. Спасибо.
Как в if в оператор записать несколько условий? Грубо говоря, if (r4 = 11..19). Т.е. если r4 принимает значения в промежутке от 11 до 19. Как записать этот промежуток синтаксически правильно?
>>452679 Записывай биты в байт любым удобным способом, затем записывай полученный байт в файл и в самом конце одним байтом запиши количество лишних бит в последнем записанном байте для корректного чтения бит. Возможно проще реализовать битовыми полями, но я их ниразу не юзал.
>>452778 Обоссал дебила с шаблонным мышлением. Флоаты, установленные присваиванием, вполне можно сравнивать. Если, например if ( a > 1.0f ) a = 1.0f, то потом можно if ( a == 1.0f ).
>>452801 Нет, это ты дебил. У него num - аргумент функции, а не константа. Неизвестно, чему эта переменная равна и как было получено ее значение. И из этой переменной num мы получаем дробную часть, которая, таким образом, тоже неизвестно чему будет равна.
>>452800 Ты ведь не про пример это запостил. У тебя просто сработало утиное "низя!" на сравнение флоатов. Если бы goto в коде увидел, вообще взорвался бы.
Анончики, помогите. http://pastebin.com/kGcVFZ6p Почему после ввода длины строки программа не дает мне вводить саму строку? Если ставить фиксированную длину строки, то такой проблемы нет.
>>452836 Если бы ты вдался в контекст, в котором это сравнение используется, то понял бы что ты мудила тот еще. Числа вводятся с клавиатуры и нужно было проверить целое число введено или дробное. Но нет, надо сразу обоссать и выебываться как петух перед курицами. Нахуй послан, мамка обоссана.
>>452925 Еще один вопрос появился, как сравнивать кириллицу? Нужно узнать сколько слов содержит букву, с латиницей все работает, а кириллицу не воспринимает.
>>452970 А даже если не с клавиатуры. то что? Если сравнивать с дельтой, они от этого целыми станут? Да нихуя подобного. Дробное значит дробное, целое — значить дробная часть РАВНА нулю. И да, когда я писал ему этот код, то думал про дельту, так что можешь со своими советами пиздовать нахуй.
>>452976 >И да, когда я писал ему этот код, то думал про дельту, так что можешь со своими советами пиздовать нахуй. Спасибо за функцию кстати. Хотя я её так и не использовал но на пару мыслей меня она наталкивала.
>>452976 Блять, хули ты такой тупой. У тебя при операциях с этими ебучими числами может получиться не ноль, хотя в реальном мире там был бы при таких же операциях ноль. Так происходит из-за ограничений точности. Поэтому сравнивать бессмысленно.
>>453002 Ну тогда может быть. А вообще с инпутом проще сразу введенную строку проверить, чем полагаться на еблю с плавающей точкой. Бывают поехавшие компиляторы, которые весьма своеобразно float оптимизируют, вплоть до того что 0.0 у тебя может внезапно стать не 0.
Анон, помоги зелёному, почему последний массив (который состоит из элементов между макс. и мин. элементами предыдущего) не всегда выводится? Раз на пять компиляций он просто пустой. http://pastebin.com/XyDrcxn8
>>453136 Значит он пустой. Макс и мин элементы не входят в твой массив, и если они находятся рядом друг с другом то массив получается пустой, вероятность этого 18/90. Алсо у тебя там в цикле копирования массива неправильное количество итераций из-за чего последний елемент не копируется, должно быть i<finish
День добрый, антуаны. Подскажите, пожалуйста, имеет ли смысл вообще юзать бесконечные аргументы? Например мне нужно задавать СТРОКОВЫЕ параметры. По одному не шибко удобно. Соответственно удобно было бы использовать что-то похожее на: void add_param(const string ¶m1, ...); Ну и юзать уже подобным образом: add_param("p1", "p2", "p3", nullptr); nullptr будет обозначать конец листа параметров.
С одной стороны это удобно для добавления. С другой стороны, сколько аргументов без доп. параметра не узнать. Т.е. va_list не даёт размерности. Если используется для хранения параметров тот же вектор, то перевыделения памяти не избежать, без повторного цикла, чтобы отрезёрвить место. А если просить ссылку на вектор с параметрами, то тогда изи, но не очень удобно использовать. vector<string> vec = {"p1", "p2", "p3"}; add_param(vec);
Какой вариант предпочтительней? И вообще, в каких случаях бесконечные параметры актуальны? Если говорить о плюсах.
>>453399 > char w = 'б'; > char W = 'Б'; Что это за хуйня? Тебе их нужно с клавиатуры ввести. В консольку, или куда ты там пердолишся. У тебя отличаются коды букв в твоем редакторе и в консольном шрифте.
>>453293 >std::initializer_list Понял. Нихуя сложного, примерно так и делал обычно. Т.е. хорошего применения БЕСКОНЕЧНЫМ параметрам не найти?
Ещё есть один вопрос. Связан с шаблонами и коллбэками. Очень нравится конструктор std::thread, делаю по его примеру. Как можно не поганить объявление класса подобной хуйнёй: template<typename Class> void add_callback(Class _class, void(Class::meth)()) { callback = std::bind(meth, _class); }
Можно, конечно, сразу принимать std::function, но выглядит ущербно подобный код. Особенно, если параметром больше, чем 1.
>>452700 >Записывай биты в байт любым удобным способом Так вот как? Там же последовательности разной длины. Лишние биты в конце не проблема, нулями заполню.
>>453583 Я передаю константы, разные по ситуации. Ну и что мне теперь, константы оборачивать в вектор? variadic templates юзать хочу в последний момент
>>453591 Ну, вообще, да. Все можно переделать лучше. Бывает у меня такое - ебанутые дизайны и всякая хуйня. Пердолюсь с глобальными ивентами в qt под винду, передаю модиферы MOD_*. Это все можно организовать обычным логическим или
>template<typename T> void foo(T&&); >When foo is called on an lvalue of type A, then T resolves to A& and hence, by the reference collapsing rules above, the argument type effectively becomes A&. Правильно ли я понял, что если я пишу такой код int i = 0; int &j = i; foo (i); foo (j); foo (2); Типы будут соответственно int &, int &, int &&? А что если у меня объявлен параметр как const T &&?
>>453659 > Типы будут соответственно int &, int &, int &&? Да. > А что если у меня объявлен параметр как const T &&? Меня компилятор нах послал с попыткой вызвать эту функцию указанными способами.
Пришло время вбросить свой высер еще раз. Итак, говноборда. https://ololoepepe.me/board/b https://github.com/ololoepepe/ololord Че изменилось: Поддержка bbcode: b, i, s, u, spoiler, sub, sup. Доска /echo/: при создании треда надо указать ссылку на тред с другой борды, он будет во фрейме и развертывается при наведении. Для набегов, например, или для обсуждения. Подгрузка постов без обновления страницы, а также автообновление. Тег code на всех досках, также допустимо, например, [c++]...[/c++] или [haskell]...[/haskell]. Удаление поста без обновления страницы. Исправлено превью постов в хромом брошзере. Для вемок (WebM) создаются превью. Постинг асинхронный (через iframe). Если произошла ошибка, не надо все заново вводить. Картинки открываются в треде как тут, с перетаскиванием и масштабированием. Вемки не двигаются (ебучий жабаскрипт, хуй знает как для вемок это сделать чтоб при этом можно было по кнопкам тыкать). Кнопка "Пожаловаться" (с сюрпризом, естессна). Превью загружаемых файлов. Карта ответов. Поиск в гугле и на iqdb по картинкам. Мигание неактивной вкладки с новыми (автоматически подгруженными) постами. Скачивание всех картинок из треда одним архивом. Премодерация постов (юзером, не мочой). Исправлена вставка ссылок на посты. Дедупликация файлов. Если файл на сервере уже есть (проверка по хешу), он не отправляется. Добавляется, но просто трафик экономится. * Ну и всякие неинтересные технические детали, типа возможности админу постить голый HTML.
У меня есть поток каких-то чисел с большим допустимым диапазоном, например, айпи. Нужно написать штуку, которая быстро бы проверяла, встречалось ли уже такое число. Ввиду огромного количества чисел сделать std::array<bool, 2^32> и смотреть по нему не удается.
Как бы это сделать по-человечески? Основная задача, если что, это поиск количества уникальных встретившихся чисел.
Сет тут вообще никак не подходит, потому что он не умеет по ключу обращаться. Карта тоже, потому что она четыре охулиарда булей будет вечно перебирать.
>>453923 Битмап для 32 бит будет 512 метров всего. Не так уж и много. А потом биты посчитать не так уж и долго (особенно если проц умеет в какой-нибудь вариант popcnt).
>>453928 > не хочет А ты его не спрашивай - выдели сам память и пользуйся, а не еби библиотеки. Если вдруг в адресном пространстве не найдется непрерывной области такого размера, можно ведь и разбить на чанки по 64 МБ, например.
>>453928 А ты выдели массив uint8_t*, заполненный изначально нулями, и циклом проставляй true, если совпадает хоть с одним ранее из тех что false. Тогда количество всех фолсов это количество уникальных встретившихся чисел.
>>453864 Не вернет он. Уже сто раз говорил. Да и не в этом соль, а в том, чтоб с вебом поебстись немного. >>453894 Уже пишу тебе личный апп, канеш. Нет, ну в самом деле, ебнулся что ли? Нахуй это надо. Я еще могу понять апп для тытрубы, он может какой-то прирост к производительности дать, но тут то нафига? Все равно все будет тупо дублироваться. Свистоперделок и так дохуя, а работает вполне быстро на лопате.
Двачик, есть очень простой вопрос, но нормальное решение как-то не очевидно. В общем есть строка std::wstring вида "0102030A0B0C", нужно разбить на вектор/массив строк вида {"01", "02", "03", "0A", ... }. Кроме тупого перебора циклом есть в стандартной библиотеке способы это сделать?
>>454182 Ты дебил? Твой высер будет находить в качестве слов подстроки типа "тогда,". Соответственно, длина слова будет больше на 1, чем должна быть, и длина станет нечетной (или наоборот четной). Пиздец, как ты вообще его условия читал?
str.erase(std::remove(str.begin(), str.end(), ','), str.end()); str.erase(std::remove(str.begin(), str.end(), '.'), str.end()); str.erase(std::remove(str.begin(), str.end(), ':'), str.end()); str.erase(std::remove(str.begin(), str.end(), '-'), str.end()); // ещё какие знаки убрать сам вставишь если надо
vector<string> vecWords = explode(str, ' '); // код функции explode могу приложить отдельно
unsigned chetnih_slov_chislo = 0;
for each (string word in vecWords) { if( word.length() % 2 == 0) chetnih_slov_chislo++; }
>>454254 ну блин(((, я не знаю таких функций, можно как-нибудь без векторов и этих erase? мы просто в универе ещё не проходили это)) мне кажется тут нужно выделять слова с помощью strspn() и strcspn().
>>454280 Ну вторую строку можно заменить на for (char it=input; it!=0; ++it) если вхожной параметр объявить как указатель на char (строка в стиле С). А сет это сет, почитай документацию, я хуй знает чем тебе помочь. Можешь свой навелосипедить, для твоей задачи достаточно просто можно хуевый на массивах сделать, так тебе ограниченый функционал нужен - только статическая инициализация и проверка наличия.
>>454285 да, через символьный массив, и мне ещё нужно вставить после первого слова заданную подстроку, например ””; помоги пожалуйста)) мне завтра уже надо эту задачу сдать
Скажи, анон, если нужно реализовать таблицу из двух параметров, причем по одному нужна сортировка, а по второму -- быстрый поиск, то как это лучше всего сделать?
Хочу сделать хэшмап, у которого Key - тип, а Value как обычно. Сейчас есть что-то типа mymap[std::type_index(typeid(T))];
Мне это не нравится, т.к. громоздко и в рантайме (в рантайме ли?), а могло бы вычисляться во время компиляции и вместо этой строчки просто подставлять нужный адрес.
Хотет что-то типа такого mymap.get<T>();
Полагаю, что нужно копать в сторону template и constexpr (которого в 2013 студии нет блджад). Что можете посоветовать?
>>454185 А хули он условия так говенно пишет? >сколько слов в строке чётной длины >в строке чётной длины Строка четной длины, блять. Нехуй через жопу писать, будет и нормальный ответ.
>>454481 Ну хуй знает. Мне все норм. Что конкретно тебе неудобно? Может это все исправляется легко. >>454482 Пссссс. Пояснил прямо в ротешник. >>454487 Два словаря, например. Возможно, один или оба на основе хеша. >>454499 >std::type_index(typeid(T)) std::type_index t<T>() { return std::type_index(typeid(T)); } mymap[t<T>()]; >>454505 Это ты читаешь жопой просто. Хз как можно было именно так понять. >>454477 >не работает В розетку воткнул? Процессор прочистил?
>>454517 Без понятия, STL не пользуюсь, вед есть Qt. >>454532 Объясни нормально, что ты хочешь сделать. Пример кода. Нихуя не понятно. Compile-time только constexpr и шаблоны, да.
>>454589 Да это для долбоебов все. Которые высирают вот такое говно: http://pastebin.com/kBD8Ct4d Если дрочить вприсядку и сосать собственный хуй, то действительно можно напороться на проблемы переносимости.
>>454598 В pInt записывается адрес переменной pC, потом к нему прибавляется 1 и pChar получает строку по новому адресу? Там будет смещение на 1 символ? Что за хуйня?
Блядь, да что за хуйня! Ну почему компилятор пишет, что array - это char и выкидывает исключение? Если я правильно понял, это происходит из-за того, что я сравниваю символ с разыменованным указателемa == (array+i) - можно так записать на элемент символьного массива. А как тут этого избежать-то? Как жить, что делать?
>>454602 > break > flag = true Проиграл. Какое исключение? Прочитай какое оно, вот возми и прочитай. Возможно у тебя сегфолт из-за того что ты вылез за буфер.
>>454601 Размер int в общем случае не равен размеру char. Как правило (на 32-битных системах) это 4 и 1 байт, соответственно. Дальше сам сообразишь, что произойдет.
>>448310 посоны, подскажите примерный алгоритм, как в символьном массиве выделить слова и узнать их чётность? как посчитать сколько слов чётной длины, а сколько нечётной?
>>454613 Давай рассуждать логически. Если создается копия, то создается новый объект. Что происходит (или что вызывается) при создании объекта? Вот и ответ.
>>454617 QString s это структура? s.split это что? А можно как-нибудь в символьном массиве всё это сделать? ну то есть дан char array[], и в нём есть слова и знаки препинания. Подскажи хотя бы примерный алгоритм))
>>454606 Не нашёл названия исключения, была ошибка чтения памяти - наверное, где-то с памятью и объебался. Гугол не подсказал ничего. >>454611 Вставил эту функцию и весь модуль заработал - почти оргазм. Спасибо!
Волею судеб надо разобратьсь с куском говна на крестах, запись в файл, конкретно. В куске кода отвечающего за запись документа в файл, вызывается [int _write] функция из файла write.c 10й вижлы. Пробежался по ней дебагом, она доходит до винапишной функции
>>455314 Во-первых, то был не я. Во-вторых, ты таки даунина, потому что помимо голых крестов и голой STL (реализация которой, кстати, тоже может на разных платформах и осях отличаться) есть еще чисто системные заголовочники с чисто системными функциями, которые на одной оси есть, на другой нет. Хотя, дауненку, дальше лаба_3 не дошедшему, это невдомек.
Господа. Сегодня был на собеседовании на блядского джуна за еду. Почему-то на такое решение: https://ideone.com/SJYAgn Мне сказали, что хуйня какая-то. На мэйн можете даже не смотреть. Проверял работает ли.
Задача была разбить строку на подстроки по определённому символу.
>>455409 Ну хуй знает. Единственное, чтобы я выпилил - подсчёт количества элементов. Ибо нехуй линейно перебирать всё говно. Нахуй не нужно, в принципе. Даже выпилю её.
>>455406 Еб твою мать, с такой формулировкой задачи все чуть ли не в три строчки делается, а ты говна нагородил. Конечно тебя обоссали. https://ideone.com/jqqeiP
>>455418 Ну, я так понял, ему надо было на голых крестах, стл онли. На кьюте то да, qDebug() << QString("твоя;тоже;вполне;ниче;так").split(';'); Алсо, даже вот так можно сократить, че уж: https://ideone.com/dsqreZ
>>448310 Анон, я вот учу с++ не первый месяц и у меня скопилось несколько нубских вопросов: 1) Как защитить свою программу от взлома? 2) На чем сделать качественное и красивое GUI? Просматривал статьи по WinAPI но по сравнению с тем же C#, элементы окна выглядят довольно древними. 3) Как грамотно объединить коды двух ЯП, к примеру того же С++ и С#?
>>455435 1) Всё равно взломают. Хотя тебе, думаю, подойдёт метод Неуловимого Джо. 2) Не смотри на винапи это слишком тру-способ, не тебе им заниматься. Qt неплох, как говорит >>455445 , но будь готов к тому, что вместе с программой тебе придётся тащить Qt5Core.dll, Qt5Widgets.dll, Qt5GUI.dll и ещё тонны библиотек. Касательно древних элементов гуя - тут https://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx написано, как это решать. 3) Использовать из C++ шарповую библиотеку? Компилируешь шарповый код как dll, дальше: 1. Объявляешь в C++-коде необходимую функцию как extern-прототип. 2. Пишешь LoadLibrary, в параметрах указываешь имя dll. 3. Вызываешь GetProcAddress с именем нужной функции, преобразовываешь результат в указатель на объявленную функцию. Вот статья: http://rsdn.ru/article/baseserv/dlluse.xml
В шарпе из C++ всё несколько проще поэтому не тру. Опять же, компилируешь C++-код в dll, потом просто в шарп-коде пишешь следующее: [DllImport("Cpplib.dll")] //Это твоя библиотека, которую ты используешь int MyFunc(); //Это функция, которую ты собираешься использовать из библиотеки. Следи, чтобы совпала по сигнатуре.
>>455476 А нахуй они тебе нужны? Делаешь сборку максимально сложной, выкладываешь исходники без какой бы то ни было документации, и вуаля - почти никто не осилит собрать. GPL не запрещает же продавать, просто надо сырцы выложить.
>>455476 А зачем тебе LGPL? Если ты собираешься серьезно зарабатывать деньги, то тебя купить Кьют вряд ли заломает. Если же ты опенсорсник, то основной формой распространения все одно будут сырцы.
Поздравьте меня анончики. Нашел работу джуном. Сегодня позвонили, сказали в понедельник приходить оформляться. Господи, слезу с мамкиной шеи, съеду из хрущевки. Господи, спасибо тебе Страуструп.
как развернуть макрос в #pragma? Есть один макрос SHITCODE - строка с файлом и числом. __FILE__ разворачивается нормально, а __LINE__ я в строку перегоняю другими макросами, но ничего не получается - в прагму вставляется имя макроса. msvc компилятор
Я знаю, что у вас печет от таких вопросов, но я уже гугол сломал. Как задать вручную двумерных вектор путем перечисления элементов? Есть какой-нибудь способ задать в коде программы матрицу 3x3, например?
>>456051 Чуть более года. Точнее начал изучать сам год назад. Пол года затрачивал синтаксис по мере возможности. Потом начал нормальный поиск работы и дополнительно всяк скользкие места и хитрости.
>>456058 Что прокатывает? Меня отшили на 3 собеседования и 7 тестовых заданиях по почте. Каждый раз что-то додрачивал, узнавал что нужно подтянуть. Я даже собеседование на трейни провалил. Вот конце-концов пришел, нормально набеседовался и взяли. Дорогу осилит идущий же.
>>456063 О, та же фигня, бро. Я сейчас ищу работу в геймдеве — уже две команды отшили по тестовому, еще к одним сам не пошел. Но каждое тестовое давало новый опыт, прибавляя новые строки в резюме. Так что главное пробовать и не надеяться, что все будет сразу.
>>456069 Одна команда просила написать буфер между многопоточным приложением и базой данных, вторая -- многопоточную факторизацию большого объема чисел. Пробовался и там, и там, на серверного программиста.
Третьи задавали нубовопросы по алгоритмам типа печати односвязного списка в обратную сторону и всякие общие штуки типа "как бы вы написали таблицу лидеров".
>>456067 Мне так обидно было, когда проебал задание в гд фирму, относительно простое но не знакомое. А когда расшарил что к чему, вакансию уже закрыли. >>456069 Открой любой гайд, тысячи их, каждый верен процентов на 80-90. Написать код на листочке. Перевести текст на ходу.
>>456078 >>456076 Кек. Теперь уже похуй. Я сегодня даже Boost подцепить на Windows не смог. Высплюсь и продолжу завтра. Ну буду дрочить до потери пульса.
>>456076 Да вот та же фигня. Я почти уверен, что как минимум вторая фирма не взяла именно из-за того, что я по срокам закопался, потому что старался все сделать идеально и вычитывал часами теорию.
>>456081 Да я просто пытаюсь учиться не просто выполняя примеры из учебника, а пиля что-то свое, пытаясь делать это по уму.
И вот по задачи я столкнулся с тем, что нужен JSON парсер, и парсер командной строки. Если JSON парсер я нашел, то вот командную строку парсить довольно сложно.
>>456081 С моего опыта буст былв желаемых у половины, мфл у процентов 10. Зато знакомство с никс осями на уровне юзера у трех четвертей, а гит у 90 процентов.
>>448310 http://pastebin.com/xX2mRtCT Почему первый цикл считает первым элементом (первым элементом массива b, равного тому же элементу массива a) просто первый элемент?
Если убираю промежуточные переменные в начале функции, то находит правильно, но тогда второй цикл (копирование элементов) не выполняется, в чем проблема?
>>456350 1) делаешь поток; 2) отправляешь в поток функцию с бесконечным циклом с ожиданием по std::chrono; 3) делаешь из потока коллбэк каждый такт цикла.
Теперь я решил окошки при помощи QT прикрутить. У меня тут сразу же вопрос: как захуячить матрицу грамотно? Под каждый элемент пилить отдельный QtLineEdit? А если нужно будет прямо на ходу увеличить\уменьшить матрицу?
А теперь непосредственно к сабжу. Как захуячить грамотные Exceptions? Где и как их надо обрабатывать и так, чтобы они были информативны.
Вот, например, подключу я свою библиотеку в Qt-проект, аля #include "myLib.h", где будет весь функционал лежать, а как теперь выкидывать сообщения пользователю о том, что прилетел Exception? И ещё как сделать их более информативными run() { if(a==0) throw MyExc("Divided by zero"); else return b/a; }
>>456391 Кури QTableWidget, если я правильно понял задачу из твоей крайне хуевой формулировки, то это то, что тебе нужно.
А грамотные исключения хуячатся следующим образом: ты берешь и забываешь о существовании подобного механизма. Исключения это безплюсовщина и двадцатый век. Пора уже в современность.
>Кури QTableWidget, если я правильно понял задачу из твоей крайне хуевой формулировки, то это то, что тебе нужно. О, походу почти то, что надо. Буду курить.
>Пора уже в современность. И какая нынче современность? Как пилить ошибки?
>>456400 Ручками проверять условия. Использование исключений говорит о том, что ты не понимаешь, что у тебя в коде происходит и не можешь конкретизировать место ошибки.
Нет, бывают ситуации, когда это реально невозможно, но они крайне редкие и маловероятные.
Ну серьезно, где у тебя в программе может возникнуть ошибка, которую ты не можешь отловить заранее?
>>456391 >QT >QtLineEdit Ты специально, да? Хочешь, чтобы моя жопа на кварки распалась? Алсо, либо, как сказал >>456396, QTableWidget, либо динамически создавай/удаляй QLineEdit'ы (хотя это уебанский способ). Про исключения забудь, это дрисня носорога для ебанутых тырпрайзщиков с миллионами строк бойлерплейта, в котором даже автор не разберется, потому что ему похуй на свою программу, лишь бы денег срубить, а думает пусть кто-то другой (в итоге не думает никто, все только и делают, что кидают и ловят исключения). Он (>>456408) все верно сказал.
>>456353 В общем погуглил я немного, пришел в итоге вот к такой конструкции: std::chrono::high_resolution_clock::now().time_since_epoch().count() Теперь планирую сохранять её данные в переменныую и сравнивать каждый раз разницу. Это правильный подход, или я опять наделал хуйни?
>std::chrono::high_resolution_clock::now().time_since_epoch().count() На что только не идут байтоебы, чтобы не использовать нормальный фреймворк. Напомнило AbstractSingletonProxyFactoryBean.
>>456538 Может есть что попроще Qt? Или же получше? Что-то в последнее время слишком часто в программировании/от программистов слышу, что лучше юзать Qt. Странно это, неужели только один годный фреймворк существует?
>>456541 Кьют все любят за то, что это предельно простой фреймворк с очень качественной справкой, встроенной в фирменную IDE, который может практически все. Там и полный набор виджетов и model/view для случаев, когда виджеты не справляются, и работа с сетью, и БД, и потоки, и регэкспы, и трехмерная графика, и даже работа со звуком -- причем все делается максимально просто и без выебонов.
Я могу сказать как человек, который на STL начал писать уже после Кьюта -- в основном процесс сводился к "каким десятком строчек реализовать то, что под Кьютом делалось в две строки".
>>456542 Подписываюсь под каждым словом. Альтернатив по факту нет. Проще уже некуда, возможности по части GUI оставляют далеко позади все другие фреймворки. По части non-GUI разве что буст будет мощнее, но он гораздо сложнее и некрасивый (хотя это уже вкусовщина).
>>456542 >>456547 Убедили, Qt использовать явно проще, но что в плане обучения крестам? Ведь по сути я программирую сейчас ради обучения. И в будущем при приёме на работу не будет так, что меня пошлют нахуй, потому что Qt программистов и так дохуя, а им нужны кодеры на глубокоанальном C++.
>>456550 Ну, есть два пути обучения -- от низкого уровня к высокому и от высокого к низкому. Мне больше нравится второй, потому что удобнее сначала узнать, что такое собака в целом, а потом -- что у нее внутри. Но тут думай сам.
Qt-программеров ищут меньше, чем чистых плюсовиков, но порядком. Есть одна проблема -- Qt пока еще не шибко оценили в мобильном секторе и вообще фронтэнде, поэтому в основном вакансии с Qt будут из НИИ. Так что, как бы ты не шел, изучить STL тебе необходимо.
Важный момент: не забывай про C++11/14. Они еще не очень широко применяются, но писать в этих стандартах куда как удобнее.
>>456540 Если функция принимает неправильный аргумент, её не должно ебать, по какой причине она приняла неправильный аргумент. С этим пускай на уровень выше разбираются.
>>456593 Потому что, вопреки распространенному мнению, в НИИ сидят далеко не мудаки. >>456592 Вообще-то проверять аргументы - вторая по важности (и первая по порядку) задача функции после, собственно, выполнения возложенного на нее действия.
>>456628 Ты мне бы лучше пояснил, как быть. Я хочу гибридную программку: gui на qt и консольный интерфейс. Суть этой программки в работе с самодельной библиотекой, которая решает одну мат задачу. inb4: Уебывай со своими лабораторками. Пишу чисто для себя, лол.
В ней три метода: 1. Конструктор, который принимает три параметра(<int>, <vector<vector>>, <vector>) -Как проверить, что именно нужные типы пришли? -Как захуячить проверку того, что второй вектор является квадратной матрицей? -Как возвращать ошибки? Просто return INCORRECT_MATRIX;?
2. Метод run(), который вычисляет всю эту приблуду. В нем просто несколько функций, которые одна за другой вычисляют нужные данные. Схематично:
int run() { int temp = 0; if((temp = doFoo()) != 0){ return temp; } //doFoo бросает 0, если все хорошо, и больше нуля, если все плохо. if((temp = doBar()) != 0){return temp;} //И так ещё несколько разных функций, которые обсчитывают некоторые данные.
return SUCCESS; //В самом конце функции. Пользовательская программа уже может обработать и понять, что можно уже запросить результаты. }
Тут самое интересное. Я хочу реализовать много поточность на этом этапе. Ведь пользователю, может быть, придется обсчитывать много данных:
-Как вообще должна правильно организовать многопоточность? Например, мне надо обсчитать 10 задач. Пользователь вводит, что хочет посчитать в 3 потоках, аля app.exe -t 3. И программа должна распределить задачи по потокам, поставить в очередь и т.д. -Как проинформировать пользователя, что вычисления закончились? И можно попросить результат. -Где хранить результат? У меня была идея хуячить вектора в связанный список, а потом тупо его выплевывать пользователю. Однако там может быть не один вектор, а целая куча данных. (до 5 матриц).
>>456631 >Как проверить, что именно нужные типы пришли? В крестах нет дженериков, как в жабе, так что если ты объявил параметр как std::vector<int>, то это будет вектор из int'ов. Ничего проверять не надо. >Как захуячить проверку того, что второй вектор является квадратной матрицей? Создать тип Matrix с методом isSquare, где уже производить проверку, считая количество строк/столбцов. >Как возвращать ошибки? Просто return INCORRECT_MATRIX;? Для проверки объекта на ошибки в его состоянии (скажем, неправильные аргументы конструктора) делаешь метод isValid для класса, если же нужен конкретный тип ошибки, то что-то типа метода error, возвращающего один из элементов enum Error (в том числе NoError, если ошибки нет). >Как вообще должна правильно организовать многопоточность QFuture<ResultType> f = QtConcurrent::run(&function, arg1, arg2, ...); QFutureWatcher<ResultType> *w = new QFutureWatcher<ResultType>; connect(w, SIGNAL(finished()), receiver, SLOT(taskFinished())); w->setFuture(f); >вектор >вектор >вектор Говно без задач. Используй list. Чтобы использовать вектор, нужно понимать, когда его надо использовать и почему. >Адекватен ли вариант Нет. yourapp.exe - сосноль yourapp-gui.exe - GUI. Гуи запускают внутри yourapp.exe и обмениваются данными через stdin/stdout/сокеты/локальные сокеты (пайп и т.п.).
>>456648 >если же нужен конкретный тип ошибки Можно пример реализации, заинтересовало.
>QFuture<ResultType> f = QtConcurrent::run(&function, arg1, arg2, ...); Бля, не в том вопрос. 1. Многопоточностью должна заниматься пользовательская программа или математическая библиотека? 2. Можно ли без Qt (boost, STL) и >automatically adjust the number of threads used according to the number of processor cores available. А только пользовательская настройка (аля сколько потоков создавать на каждую задачу)? Или это слишком ебливо и не стоит об этом думать.
>yourapp.exe - сосноль Есть статья с примерами? Нихуя не понял.
>>456656 >Можно пример реализации, заинтересовало. http://pastebin.com/0Y5dGLja >Многопоточностью должна заниматься пользовательская программа или математическая библиотека? Зависит от задач. Откуда я знаю, что тебе надо. В общем случае какие-то рекомендации дать невозможно. >Можно ли без Qt Можно. Гугли сам. >А только пользовательская настройка (аля сколько потоков создавать на каждую задачу)? QThreadPool::globalInstance()->setMaxThreadCount(100); (Но смысла в этом никакого, быстрее по понятным причинам не станет. Это имеет смысл только для задач, которые слабо процессор, типа работы с сетью.) >Есть статья с примерами? Нихуя не понял. Есть. В гугле. Хотя, если не понял, то рано тебе еще. Побольше опыта будет, тогда берись.
Господа, какой есть элегантный путь сделать возможность подключения динамических либ? Есть вероятность, что нужно будет подключать так же СИшные. Так же это должно быть "на горячую".
Пока у меня крайне убого выглядит. Хранится, например, так:
Есть задача. Не могу разобраться в выделенном месте. Мне надо организовать шифровку и дешифровку. Алфавит шифра и обычный я уже написал. Подскажите как заставить узнавать букву и заменять на букву из измененного алфавита. Скину на кошелек вам немного денег за помощь,обещаю.
//--------------------------------------------------------------------------- using namespace std; char Rus(const char); #pragma argsused
int main(int argc, char argv[]) { char str[50], str1[50] = ""; // исходная строка int k; // кол-во позиций для сдвига int choice; // значение выбора действия char m[32]; // массив русский алфавит char s[32]; // массив преобразованный int strlength;
char b = 128; for(int i = 0; i < 32; i++) { m = b; b++; }
>>458831 а у тебя классные вопросы. ладно, не буду быдлом как все тут, отвечу - разыменование указателя - операция получения по адресу указателя его содержимого. int v = 10; int p = &v; std::cout << p; // разыменование
При попытке запуска ошибка: "Необработанное исключение по адресу 0x0F381340 (msvcr120d.dll) в cat.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00CE0000."
Прошу ссаными тряпками не гнать, я шкальник и сам осознаю свою ничтожность.
http://www.google.com
http://www.cppreference.com
http://www.cplusplus.com
Список литературы:
http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
Предыдущий тред (тонет):