http://pastebin.com/7jDKCQG8 ошибка: non-constant condition for static assertion 'n' is not a constant expression в каком месте n - не константа? Т.е получается, что в mingw constexpr вообще не работает?
>>410056 Хотя нет, это не важно в общем-то. n - переменная, модификатор const никакого значения тут не имеет, потому как во время компиляции невозможно узнать, что ты передашь в функцию (например, ты можешь передать туда переменную, созданную не константной, то есть константность она будет иметь только в рамках функции, да и то ее можно без проблем убрать кастом). RTFM, короче: http://en.cppreference.com/w/cpp/language/static_assert
Привет, программач. Не писал на чистом Си уже давно и заработал ООП головного мозга, так что мне сейчас нужен совет.
У меня есть структура с указателями на несколько функций.
Мне нужна такая же структура, которая будет содержать указатели на функции, которые будут крайне незначительно отличаться от предыдущих.
Как это красиво можно сделать, не копируя кучу кода? Пока единственная идея, которая пришла, добавить в функции опциональный параметр, от которого будет зависеть маленький кусочек логики, а в структуру поле с этим параметром.
>>410382 Это не тупость, а неосведомлённость. Вот, например ты же не сразу всё это умел, а также начинал с хэллоуворлд'ов. В ICQ добавь 641747007, если есть желание помочь.
Ну вот тут >>410449 говорят, что без библиотек никуда. Очень спорно. Дело в том, что от джунов обычно ничего особого не ждут, а ценятся общие знания и умение писать код, не привязанное к языку. Естественно, язык тоже стоит знать, но это отнюдь не означает, что ты должен помнить, как построить бесконечный орграф с помощью буста. Это всё гуглится и приходит с опытом.
Старый то в бамплимите, перепощу. Вопрос по C без ++, специализированного треда не видно, пишу здесь.
Чтобы объявить функцию явно без аргументов, нужно написать, например, void foo(void) { ... } При этом объявление void foo() { ... } в си (но не в плюсах) означает произвользное число аргументов любого типа. Как пример, вторую функцию можно вызвать как foo(1, 2, 0.35, "говно", "моча"); тогда как с первой компилятор ругнётся на несоответствие аргументов.
Вопрос, собственно, нахуя это нужно. Т.е. как получить эти параметры из функции? Если попробовать подключить stdarg.h и через va_list, не даёт: "«va_start» в функции с фиксированным числом аргументов". Но параметры то куда-то передаются (полагаю, кладутся на стек при вызове cdecl?), как получить к ним доступ?
У тебя есть только одна проблема - ты должен знать количество аргументов и тип каждого аргумента. В printf/scanf это реализовано, например, через строку с форматированием. Или, как вариант, ты можешь предположить, что все аргументы одного типа.
Доступ к аргументам осуществляется через стек.
Например, пусть у тебя есть функция, которая считает среднее арифметическое n целых чисел. Тогда она должна быть объявлена так:
`float avg(int n, ...);`
Теперь тебе нужно получить аргументы. Помня, что на стеке они располагаются друг за другом, ты можешь получить указатель на второй аргумент функции как-то так:
int (звёздочка)p1 = (&n) + 1;
Соответственно, сам аргумент получается так:
int pp1 = (звёздочка)p1
Т.е. мы разыменовываем указатель.
Что делать в случаях, когда у тебя аргументы разного типа, гугли сам.
>>410472 А ведь действительно. Можно так: локальные переменные функции ведь хранятся тоже на стеке, соответственно можно искать указатель относительно них: http://ideone.com/mMkj5n видно, что параметр (младший его байт) всегда лежит со смещением на 17 байт относительно локальной переменной i. http://ideone.com/U5kUHI
Другой вопрос, как сделать это без ёбли с указателями? (чтобы работало независимо от архитектуры, иначе это не только байтоёбство, но и прибито гвоздями к хуй86)
>float avg(int n, ...) да это понятно, stdarg.h же так и работает. Нахуя давать возможность объявить функцию именно как f(), подразумевая произвольное число аргументов?
>>410485 >Нахуя давать возможность объявить функцию именно как f(), подразумевая произвольное число аргументов? Прост)) А если серьёзно, то хрен его знает.
>Другой вопрос, как сделать это без ёбли с указателями? (чтобы работало независимо от архитектуры, иначе это не только байтоёбство, но и прибито гвоздями к хуй86) Я не силён в байтоёбстве, как тут создаётся зависимость от архитектуры? Тут же просто всё лежит на том условии, что все аргументы на стеке лежат друг на друге и тип int всегда занимает одинаковое количество байт.
>>410515 >Я не силён в байтоёбстве, как тут создаётся зависимость от архитектуры Ну если точно, хуй знает. Насколько я знаю, на стек кладётся ещё, по крайней мере, указатель на адрес возврата (и с этим связаны уязвимости с переполнением буфера, когда можно подменить этот адрес), а размер адреса уже зависит от архитектура (64 или 32 бит). И даже на одной архитектуре в gcc с разными параметрами оптимизации (если собирать с -O3, например, и без) другие значения смещения. Т.е. еще компилятор что-то может соптимизировать от себя, где-то, возможно, использовать вставить fastcall
>>410461 Ну STL это стандарт - часть языка. Не знаешь STL - не знаешь С++. А Boost, ну хотя бы знать, как установить, чтоб тебе коллеги его не настраивали. Да и потыкаться-поиграться с бустовскими алгоритмами для строк, например, ничего не стоит, а пользы дохуя. Boost::format - дохуя удобная вещь - от всем известного scanfa отличается только синтаксисом - почему бы не разобраться - полчаса -час. И уже можно пиздеть, что юзаешь буст. Для джуна ваще норм.
Можно ли в 12-й студии выполнить сборку проекта так, чтоб был только exe и никакая хуйня, типа MSVCP110D.dll была не нужна. Чтоб запускался exe нормально на других машинах, на которых не установлена студия?
Требуется считать строки из файлов и на их основе создать массив структур данных. Структура представляет собой: <номер строки, количество повторяющихся символов в этой строке>. Вывести отсортированный массив структур.
Ошибка :"Ошибка сегментирования (сделан дамп памяти)". Си изучаю второй день, но с ней сталкиваюсь не первый раз. Но сейчас исправить так и не получилось. Что я делаю не так? http://pastebin.com/PfRZbq2F
>>411024 в функции countRecurringCharacters в условии цикла while всегда трушное значение поставь line, чтобы цикл остановился при достижении конца строки
Аноны, очень прошу, помогите! Нужно написать сортировку большого числа элементов за минимальное время, используя битовый массив. Работать с числами используя их двоичный код. Использовать векторы, списки и т.д. нельзя. Видимо на вход дается некий массив, а его обработка делается при помощи битового массива. Как? Не знаю. Ну, вроде есть поразрядная сортировка, но я не знаю как ее сюда вообще можно вставить. Ну же, аноны, я верю, что тут есть достаточно умные люди, которые могут помочь мне это написать.
Приветствую С++ господ. Реально ли крестоджуну ебашить по фрилансу? Насколько это сложно? Какие задачи обычно бывают? Я интересуюсь потому, что мне кажется, что на плюсах фрилансить довольно сложно по сравнению с той же жабой или решеткой. Разъясни, антуан.
Ананасы, вот сейчас приспичило, а вспомнить не могу. Дело вот в чём. Помню в какой-то книжке вроде по Си или С++ читал о том, как компилятор представляет себе функции из исходников исходя из длины имени, количества принимаемых параметров и их типов. Напомните если кто-то знает.
>>411488 Утраиваю. 2 дня курил cmake, сраные генерированные генерации генераторов для проектов xcode. Что вынес в сухом остатке:
(переносимость) AND ((нужен дебаг в xcode AND MSVS) OR (проект строится по умному из многочисленных миллипиздрических модулей))
Если это выпоняется, то таком случае только cmake, ничего даже близко нету. cmake в этой нише генерительных генераторов всех победил, сконцы и прочие гипы и близко не валялись. Ну и в нетбинце и клионе cmake из коробки, а в cmake из коробки проекты для xcode/msvc/еклипца.
Если не выполняется вторая часть, то пишешь оче маленький ни в какую сторону не рекурсивный мейкфайл вот с таким хедером:
И забываешь о проблемах с кучами генерированных фекалий вместо мейкфайлов. Для разных наборов сорцов для всех поддерживаемых платформ заводишь ветки в гите.
Под винду пускаешь то же самое из gnumake - проблемы с MSVS будут минимальные, если они все таки возникают (пути лень конвертить например), то точно такая же хрень делается на чистом MSVC nmake через dir/echo и recipe файлы. И мейкфайл для nmake будет очень похожий и такой же маленький - ключи компилятора и декларации утилит будут другие (ну тесты под DrMemory будут пускаться вместо valgrind).
Если не выполняется первая часть (переносимость), то тебе не нужен цмейк, инфа соточка, юзай autotools/xcode/msvs only.
Сап, анончики. Ебусь тут с одной задачей и не могу ничего сделать, помогите. С меня нихуя конечно:
При некоторых заданных x, N и Е, определяемых вводом, вычислите сумму N слагаемых заданного вида, затем сумму тех слагаемых, которые по абсолютной величине больше Е. Для второго случая выполните суммирование для двух значений Е, отличающихся на порядок, и при этом определите количество слагаемых, включенных в сумму. Сравните результаты с точным значением функций, для которой данная сумма определяет приближенное значение при х, лежащем в интервале (-R, R).
Есть кое-какие зарисовки, но думаю они не пригодятся, ибо вообще нихуя
>>412053 Толку кидать жалобы? Часть постов не пропускает антиспам (хоть бы писали, какое именно слово спам), оставшаяся часть некорректное содержание имеет.
Опишите функцию которая определяет, можно ли произвольное число k представить в виде k = x2 + y2. С помощью этой функции составьте программу, которая определяет все элементы в линейном массиве целых чисел, которые удовлетворяют этому свойству.
>>411991 Ога, и лет через 10 он наверное дорастет то того состояния, что его можно будет использовать - то состояние, что сейчас, это такой cfront '86 у плюсов. Раст - он вкусный. А пока только плюсы.
>>411984 >типовые задачи на С++ Ну программки на нем пишут например - ембеддед, игрострой (в том числе на планшетики). Некоторые толстые декстопные вещи - на Qt, WxWidgets. High performance всякие, распределенные в том числе, движки для хранилищ данных, виртуальные машины. Вообщем всюду, где жаба не запускается или по каким-то другим причинам не подходит сразу плюсы появляются. Это все из того, что новое пишут. Ну и очень много всякого большого легаси на нем поддерживается.
Ребята, кто в ЛЛВМ смекает? Вчера позапускал инструменты из bin собранного ЛЛВМ. Кто-нибудь может на примере показать как из ЦПП генерируется ОУТ со всеми промежуточными фазами и представлениями? Внутри код, конечно, лютый. Сплошные шаблоны. Но, вроде бы, лучше этого пока ничего нет.
Нужно сделать одну штуковину с гуём под Шindows, начал смотреть в сторону Qt и ужаснулся: ничего не делающая программа с пустым окном вместе с библиотеками, нужными для её запуска, весит 43,5 МБ. Билд релизный, само собой, библиотеки тоже. Так и должно быть или я что-то неправильно делаю?
>>412438 Алсо, список того, что потребовалось ей для запуска. Помню ведь ещё, что обещали Qt 5 сделать более компактным и модульным, чем 4, но, блядь, в 4 хотя бы пустая программа весила всего лишь 12-15 МБ.
значит вот это место (char)&mas2? Что оно выполняет, как это вообще понимать? Я вообще что-то дико туплю с операциями ввода-вывода в С++, чувствую себя унтерменшем
>>412446 Получает указатель на массив и приводит его к типу "указатель на char". Читай справа налево и вспоминай смысл каждой операции. Только не смотри в содержимое своего поста, оно покорёжено парсером сосаки.
Ребят, взгляните на мой быдлокод: http://pastebin.com/Wb9CADyh Почему в пятой строке программа выводит эту лажу? я так понимаю это адрес чего-то? хз. И как исправить это быдлячество?
>>412456 Хотя я немного понимаю почему так происходит (программа ведь еще не обнаружила конец файла, вот и переходит на новую итерацию), но как это исправить не понимаю.
>>412438 А как ты хотел? Он же кроссплатформенный, значит всё с собой, а системные возможности не используются, т.е. по сути ты тащишь с собой всю свою систему.
>>412526 Для корректной работы этого student tmp = student2; нужно определить конструктор копирования. Для корректной работы этого student2 = student1; нужно определить оператор присваивания. Иначе работают заботливо созданные для тебя компилятором. Таким образом, например при присваивании student2 = student1 у тебя происходит student2.name = student1.name. А ты ждешь strcpy(student2.name, student1.name)
>>412526 И вообще, зачем тебе строки в стиле С? Юзай стринг. Нахуй ты его подключал вообще, если не используешь. Если в своей структуре ты все текстовые поля сделаешь string, то конструкторы и оператор присваивания тебе переопределять не придется.
как переприсвоить статичную переменную при новом запуске фуннкции? void dvach() { static int i=0; i++; } Потому как, очевидно, оно каждый раз начинает с того места где закончило, на ноль не возвращается. А мне хочется чтобы возвращалось. Статичная переменная там для пердоленья с рекурсией и циклами
>>412637 И какой смысл в том, что ты написал? Статическая переменная эта только для галочки, при любом запуске, в том числе внутри рекурсивного вызова, её значение сбросится в ноль. мимо
>>412751 Охуенный пример. А ещё в рашке живёт негр и по этому можно сделать вывод, что всё население -- негры. Ты б на 99% других игр взглянул для начала.
>>412629 Выдели отдельный модуль (файл). Там свою статическую переменную объяви вне функций. Там же определяй свою функцию и функцию зануления своей статической переменной.
>>413094 Дружище, ты сделал что-то свое. Вот есть у тебя файл, где находится main(). Так вот, по-хорошему для подобных задач лучше выделить другой(!) файл. Помнишь, как ты добавлял самый первый файл? Так же добавляй еще один. Там вне(!)(!!!) всяких функций объявляй свою статическую переменную. В этом же файле определяй вот эту свою функцию. Внутри нее тебе понятное дело объявлять статическую переменную не нужно. Она уже есть в этом модуле. Просто используй. Кроме этой функции объявляй еще одну для зануления своей статической переменной. В файле, где у тебя main() прописывай прототипы этих своих функций, и по мере надобности используй и зануляй.
>>413117 Например, реализуем счетчик для чего угодно. В примере ниже мы считаем количество чисел не делящихся на 2, затем на 3. Суть в том, что когда мы решили одну задачу (количество неделящихся на 2), перед тем как приступить к другой, нам нужно обнулить наш счетчик. Счетчик реализуем в отдельном файле. http://ideone.com/6bcWUE - main.cpp http://ideone.com/j5W11j - counter.cpp
>>413120 ООП головного мозга. Вместо пары строчек кода, нагородил целый файл с интерфейсом из кучи функций. Таких нужно инкапсулировать в специальные заведения с решетками на окнах.
>>413175 >ООП головного мозга Где тут ООП? Инкапсуляция сама по себе еще не ООП. Уебывай за матчастью, короче. Но перед этим покажи свои пару строчек или пиздабол.
Самая большая проблема что я ощущаю в языках, это неудобны возврат данных из функции. Всего одна переменная. Возвращать через указатели, проверяя на ноль или передавая даже если они ну нужны - как-то не очень. Хочу на стеке, что-бы без структур и чтоб писать поменьше. Как это поудобней делать?
>>413275 Ну вообще по хорошему лучше сделать рекурсивной функцию, которая будет не видна из вне. И вызывать ее через некую паблик start_recursion функцию. А та приватная функция в аргументах может принимать любую хрень, которую захочется передать. В таком случае не надо играться со статикой, что добавит возможность использовать в тредах. И плюс не надо городить отдельный счетчик, как ты предложил.
>>413280 Для этого придумали структуры/классы же. Вызвал метож do_blah_blah_motherfucker, она поработала, засетила члены структуры/класса нужными значениями, а ты дальше гуляй с ними, как захочешь.
>>413117 >Там вне(!)(!!!) всяких функций объявляй свою статическую переменную. не сделает ли это ее публичной переменной? Хорошо ли это?
Алсо, в чем тонкость вынесения переменной в отдльный файл? Пока я вижу многофайловую структуру чисто как удобство организации и если все запихать в один файл - мои программы от этого иначе исполняться не начнут. >>413281 а как с точки зрения "элегантности" и "каноничности"? Что вообще говорят, статические переменные тру или не тру?
>>413291 >не сделает ли это ее публичной переменной? Хорошо ли это? С чего ты взял? Оно будет замкнуто внутри .cpp файла, пока ты не высунешь это наружу сам.
>Что вообще говорят, статические переменные тру или не тру? Ох ты ж лол. Статические переменные это статические переменные. У них есть свой круг применения. Как пример тот же синглтон паттерн на статике делается.
>>413291 >Пока я вижу многофайловую структуру чисто как удобство организации и если все запихать в один файл - мои программы от этого иначе исполняться не начнут. Чтобы скрыть реализацию. Чтобы сбилдить все в одну библиотку и линковать. Чтобы было место, где все твои переменные как та же статика не были видны из других частей программы. Да и в конце-концов просто удобно, да. У тебя вообще какое-то странное представление о том, что внутри происходит.
>>413291 >не сделает ли это ее публичной переменной? >статическую переменную Это >>413231 же ты? А что значит static при объявлении переменной (в частности вне функций)? Сей не знаешь, а лезешь с критикой
Ребят, помогите новому ньюфагу в этом итт разобраться с указателями и ссылками. http://ideone.com/SKp4mSнабросал за минуту, не проверялне смейтесь, лучше обоссыте Что-то вроде того. Возможно ли такая передача массивов? Если да, то почему компилятор, при определенном условии выдает ошибку сегментации?
>>413337 Не компилятор, а система. Давай так, если тебе действительно интересно, почему - запускай все под дебагером. Когда оно вылетит, ты увидишь, где и разберешь, почему.
>>413339 >>413339 Ну что же ты! Не настолько я тупой, как может показаться, и дебаггером смотрел. Дело в чем: у меня размерность первого массива выбирает пользователь а считывается он из файла. Так вот, если размерность < n, то все прекрасно. Как только >= n, так все, segmentation err. Дебаг подсвечивает 19 строку в том, что я скинул.
>>413346 И тебя это ни на какие мысли не натолкнуло? Ты за границы массива выходишь, ну. Скорее всего под конец циклов. Сделай вывод итераций и глянь, когда вылазит.
>>413349 Это понятно, что выхожу, да. Но непонятно как. У меня размерность первого массива, допустим, 3. Тогда МАКСИМАЛЬНЫЙ теоретический размер второго, допустим, 10. Весь массив будет заполнен только при соблюдении весьма ххитровыебанного условия. Как здесь возможно переполнение? Единственная мысль — что-то не так с указателями и заполняться он начинает, например, не с 0000H, а с 0FFFH.
>>413352 >что-то не так с указателями и заполняться он начинает АХАХАХАХХАХАХАХАХАХАХ Это на сосаче такие слухи ходят, что в сишке/плюсах все сидят и денно-нощно битики гоняют, что ли?
>теоретический Большая ошибка полагаться на "теоретический". Ты должен знать, что произойдет с твоей функцией при любых условиях. Я уверен, что ты не получаешь размерность, которую ожидаешь. Или накосячил в циклах.
>>413355 >Это на сосаче такие слухи ходят, что в сишке/плюсах все сидят и денно-нощно битики гоняют, что ли?
Это .asm-прошлое, скорее. Травма на всю жизнь...
>Я уверен, что ты не получаешь размерность, которую ожидаешь. Или накосячил в циклах.
Дело в том, что программа работала абсолютно верно, до того, как я не начал городить передачу массивов в функции. Все было объявлено через глобальные, сделано, КАК УМЕЕМ и все такое. Сейчас пытаюсь привести ЭТО в божеский вид и придать подобие кода.
>>413361 Одно другому не мешает. Я недавно неделю долбился над багом, а оказалось, что он из-за того, что я просто что-то куда-то перенес. Проследи все итерации и найдешь, почему падает. Если хочешь божественный вид, то для плюсов есть контейнеры. Если для сишки, то замени такую передачу массива на двойной указатель. Плюс все это нужно завернуть в структуры/классы.
>>413392 Точно нет. Если я ставлю перед переводом строки std::right, то в вызовах последующих функций форматирование идёт нормальное. Если не ставлю, выводимые цифорки влево жмутся. Но мне нужен не лефт и не райт, а дефолтный.
>>413397 Проще говоря, я ввожу сначала число N = 5. После чего ввожу 5 чисел, допустим 1..5. Далее ввожу Х = 1.2 и на экране должно появится: 1 < 1.2 < 2
Все работает только с целыми числами, с дробными никак. Могу скинуть код, причем ошибку вижу сам, но нет идей как исправить
>>413404 Я ж говорю, что проблема в том, что ввожу я числа int и они никак не сравниваются с иксом, тем который float. Только если х - целое число. Мне надо вводить в массив float и сравнивать их с float
>>413386 >на скоуп файла Таким образом, если переменная объявлена в отдельно модуле, то видеть ее смогут только те функции, которые в этом модуле объявлены. Так мы можем ограничить интерфейсные функции.
>>413412 В этом цикле не надо было i += 2, как уже заметили. Этим чудесным образом пропускаем половину массива. size_t обычно используется в плюсах если по красивому писать для обозначения массива. По сути это typedef unsigned long size_t;
>>413416 Тут никак через float не получится? Про size_t почитал, но вот препод в универе хуй клал на всякие сайз т, ему флоат подавай. Пытался сдать эту задачу только с интами - послал нахуй, а я его послать не могу
>>413424 Нет конечно, более того скажу - способы перевода консоли на рузке я должен найти сам и объяснять ему каждую строчку кода. поэтому и спрашивал про size_t
>>413430 Да, в свойства консоли надо шрифт сменить для работоспособности. И кстати про удаление массива, обязательно ли это действие? Этот старый ублюдок в лекциях нихуя не поясняет и приходится гуглить самому. Как я понял необходимо delete [] a;
>>413431 Ну в данном случае не обязательно, т.к. у тебя все равно все закрывается и система все почистит. Но вообще удалять конечно нужно, иначе память будет течь. Да, delete[] a; правильно.
>>413298 >Оно будет замкнуто внутри .cpp файла я не знал что у файлов есть скоуп. >Статические переменные это статические переменные. У них есть свой круг применения. это на примере примера который анон писал. Мол, не использовать статические переменные, а все передавать по ссылке. Вот в том контексте мне и интересно. >>413298 да, похоже, такое же как и у всех представление. Но про скоуп не знал, да. >>413318 > А что значит static при объявлении переменной (в частности вне функций)? А почему вы мешаете в одну кучу "статик" и "вне функции."
>>413469 >Можно взять размер файл и поделить на размер типа, что там. Но ведь в зависимости от представления один символ может занимать разное число байт. Взять тот же UTF-8 — от одного до 4 байт на символ.
>>413223 >Возьми размер файла в треде, чо. А если размер изменится - мне опять на двач в этот тред лезть искать размер? Нахер, лучше сам научусь определять.
Вот у std::cin имеются члены функции unget() и putback(char ch). А можно как-нибудь "всрать" обратно последний символ std::cout ? Некий аналог unget() .
>>413637 Тебе уже тут сказали, очищай экран - пиши заново. Где-то храни массив строк вывода и редактируй по мере надобности. Еще вариант. Есть специальные либы для всяких красивостей в консоли. Если не лень, гугли и разбирайся.
Сап, аноны. Продолжаю изучать си пи пи вместе с моим преподом мудаком и сегодня задача такова:
Я не буду точно описывать условие, напишу только самое главное Есть послед. s1.. sn, где s1 не является воскл знаком, а сама послед. заканчивается воскл знаком. Надо определить есть ли в этой последовательности пара соседних "но" и "он".
Сразу возникают вопросы: Тут как я понял нужен массив, но число n - заранее неизвестно и возникает вопрос как задать массив, будет ли он статическим или динамическим?
Я попробовал сделать статический массив в 100 элементов типа char, вроде работает, восклицательным знаком заканчивает и тд, но если ввожу какое-нибудь s более одного символа, например то самое нужное мне НО, то при вводе след символа возникает хуйня как на скрине. Где я проебался?
>>413983 >Где я проебался? Если вводишь больше, чем от тебя ожидают, излишнее оставляется про запас. Так в s4 у тебя записывается 'н', а в s5 'о'. Поэтому когда нужно вводить s5, тебя не спрашивают.
Мудрые кодеры, в очередной раз спрошу совета. 22 лвл. Изначально цель: выучить основы С++ и потом перекатиться на Свифт, чтобы под ИОС писать. До этого только писал хуйню в школе и на первом курсе типа ИФ ЗЭН.
1. Нормальный ли план? Или я объебался? Читал, что на объект. С на ИОС пишут, но ведь теперь Свифт есть, а, значит, всем похуй?
2. Начал пару дней назад дрочить уроки на сайте, циклы, массивы, но уже сам вижу, что там есть и косяки в объяснении и ошибки в коде, меня это не то, чтобы прямо напрягает, но как-то не очень. Посоветуйте учебник или книгу, кот. можно пойти и купить в магазине или заказать себе. В англ могу, но предпочтительней на русском.
>>414012 Все бы хорошо, но тут последовательность заканчивающаяся восклицательным знаком. То есть я ввожу не строку и проверяю ее, а последовательность символом и как только ввожу восклицательный знак - дальнейший ввод прекращается и выдается результат, либо да, либо нет (в зависимости от того есть ли но и он)
>>414043 Я такие книги читал лет 5 назад, так что за текущее состояние ничего сказать не могу. Помню, что мне тогда Шилдт не понравился. Может сейчас лучше.
Анон, кто-нибудь может помочь с домашкой, не могу в выделиние памяти. Вот есть main, который трогать как бы не нужно, он лишь задает строку, а потом сверяет результат.
int main ( int argc, char argv [] ) { char res; assert ( ! strcmp ( (res = RLEDecompress ( "Hello world!" )), "Hello world!" )); free ( res ); return 0; } И есть функция, которую нужно написать char RLEDecompress ( const char src ) { //ЗДЕСЬ ПИСАТЬ } При любой попытке обращения к src, пишет seg fault, как мне правильно выделить память под эту строку, чтобы с ней работать дальше в функции? и да, язык C, извините что сюда пишу
>>414025 Если именно по плюсам годноту надо, то отведай C++ Primer Lippman. Если задача хорошо знать плюсы не стоит, тогда поясни, что значит основы С++. По чистым сям Ритчи уж. Шилдт говно.
>>414076 В том то и дело, что там косяка нет, это лишь основа, причем правильно написаннная.. Ну допустим, я хотел сделать вот так http://pastebin.com/0t577XuN
>>414077 Домашку, то я сам сделаю, просто не могу правильно выделять память, маллок там все дела. но если интересно, напишу
>>414092 Пиздец, спасибо анон. а задание в том что допустим если есть строка Hel2o wor3ld4!!!, то я должен ее переписать, в таком стиле Hello worrrldddd!!!, типо 2 л, 3 р и 4 д, ну вы поняли
Вопрос нулевого. Как нарисовать окружность в Visual Studio Express 2013 на с++? Пробовал гуглить конечно. На всяких форумах советуют использовать функции объявленные в заголовочном файле <afxwin.h>, а он в состав Express'а не включён, так как Express не поддерживает MFC (как я понял). Вот типичный вопрос по данной теме в топе гугла: http://stackoverflow.com/questions/5543523/afxwin-h-file-is-missing-in-vc-express-edition.
>>414175 Не ответ на твой вопрос, но M$ недавно выкатил бесплатную почти для всех версию Community, которая есть по сути переименованная Professional, и в которой есть MFC и прочее говно.
Анончики, продолжаю ебаться с задачей про НО и ОН, вот уже вроде вышел на верный путь, спасибо анону, который кинул решение с алгоритмом поиска символов. Теперь моя задача проверять только до первого восклицательного знака, хз вообще как реализовать. Вот код: http://ideone.com/2Nqd7R
От первого воскл знака отличает, а вот как с след. сделать хз, с меня нефть
Ко-ко-ко программа не работает. Анон памаги. Есть программа, которая должна сформировать линкед лист путём добавления нового элемента в начало. Как выглядит структура элемента листа: struct List { int data; List next; }; Так выглядит подпрограмма для добавления элемента в начало: void list_add_begin(List my_list, int data) { List tmp = my_list; my_list->data = data; my_list->next = tmp; } Но вместо собственно добавления элемента в готовый список, оно перезаписывает весь лист данными добавляемого элемента. Как законтрить?
>>414270 Да норм все. Есть некоторые вопросы типа, а можешь ли ты удалять содержимое строки, как ты делаешь. Плюс у тебя разбирается только одно слово. Подходит ли тебе это? Код который, я кинул, позволяет вводить сколько угодно слов и предложений. Ты можешь нажимать enter сколько угодно пока не встретися '!'.
>>414277 Я конечно хз, что там тебе препод задал, но из того, что ты озвучил, следует, что тебе не нужна отдельная проверка на восклицательный знак. Если ты введешь "!он хуй", все что после восклицательного знака и так не будет учитываться. >чем он отличается от моего Нет редактирования строки и возможно вводить сколько угодно слов.
if (v == 0) cout << "Первый символ должен быть отличен от восклицательного знака!" << endl; else if (v != -1) cout << (min(s.find("но"), s.find("он")) < v ? "Да, имеются." : "Нет, отсутствуют.") << endl; else cout << "В последовательности должен быть хотя бы один восклицательный знак!" << endl;
>>414292 НЕНАВИСТЬ, хрен отправишь сообщение через окно быстрого ответа.
>>414285 http://pastebin.com/m5MqnJP0. На русский сам заменишь. Если хочешь, чтобы сразу же после ввода ! символа останавливался ввод, тогда у меня для тебя плохие новости. Тут на стандартных либах ничего не сделаешь. Либо бустом придется пользоваться, либо нативным апи.
>>414299 Когда я читал, тогда еще не было С++11, тогда она была актуальна. Думаю сейчас она тоже пойдет, а С++11/14 фичи сам сможешь доучить. А вообще легче просто документацию читать, ничего трудного в стандартной либе нет.
Откуда блять у меня в пустом массиве чарном появляются с самого начала какие то символы или числа хз -31 15 2. вот эти три числа, ни с хуя, с самого начала. Т.е. помимо нулей, выписывает где то в середине еще и эти числа. язык C Кто сталкивался?
>>414339 Ой боже, какой пиздец. Книги совсем нынче читать не принято? Нормально это, память выделяется, но не обнуляется, в выделенном куске может быть любой мусор. Хочешь занулённый массив -- выделяй через calloc или используй memset.
>>414352 >обзор, возможности, что-как/где-что/где-как можно и нужно применять Не уверен, что понял тебя правильно, но тогда Липпман 5я редакция, главы про алгоритмы и контейнеры. Все с учетом 11й редакции.
>>414418 На серию Мейерса я наткнулся сам, дочитывая третью книгу осознал что я в STL "не очень", а нужно. Тем более там осталось 100 страниц, хули то бросать.
>>414512 >Почему нету пакетных менеджеров 1) Потому что история языка тянется со времён царя Гороха. 2) Есть, в Linux достаточно поставить <пакетнейм>-dev, подключить нужный хэдер, и можно использовать библиотеку. 3) С главной страницы официального сайта за один шаг можно добраться до этого биндинга: https://github.com/JosephP91/curlcpp
>>414515 сори у меня просто бомбануло, решил научится писать в этих ваших низкоуровневых языках, дай думаю post запрос отправлю, вот уже второй день отправляю.
>>414447 Кстати, новое издание Джосаттиса есть уже и на русском http://www.ozon.ru/context/detail/id/27978215/, можно и бесплатно найти. Сам все собираюсь прочитать, но руки не доходят. Алсо, книга Мейерса по STL слегка устарела, например, вместо swap treak у него описанного, теперь есть shrink_to_fit. Но все равно полезная книга.
>>414512 А причем тут язык и пакетный менеджер? Дякую Боже, что такой хуйней не страдают при разработке языка. Кстати в Студии есть что-то вроде пакетного менеджера, но я не помню, как он называется.
>>410025 Друзья мои, подскажите пожалуйста, как запустить скомпилированный файл, написанный на c++ в IDE NetBeans. А то мне кажется я чего-то недопонимаю...
>>414621 Много разных способов. Например нажать два раза ЛКМ на файле. Или один раз ЛКМ, а потом тыцнуть Энтр. Или из консоли ./file набрать. Может ты чуть более подробно опишешь? Что у тебя не получается? Что оно пишет?
>>414626 Операционная система Windows 7, IDE NetBeans. В NetBeans создаем файл .cpp, который относится к обыкновенному проекту. Предположим, файл должен вывести на экран "Hello world!". Если я правильно понял, то файл компилируется(клавиша f9) и после этого он может быть запущен, в том числе и из консоли. Из консоли запустить не проблема. Мне интересен именно способ запуска файла в самом NetBeans'e. Куда надо нажать, чтобы он просто вывел мне "Hello world!". Если смотреть в меню "Run", то там есть прям команда Run File, но она не активна, даже после компиляции файла. В документации указано, что нельзя запустить отдельный файл, но только в проекте с созданными исходниками, но у меня не такой проект.
Подскажите, как пофиксить ошибку, связанную с vector (http://www.cyberforum.ru/cpp-beginners/thread1323464.html)? Полный код копипастить нет смысла, в посте по ссылке всё есть. Через 2 дня сдавать проект, я уже не спал часов 20, на C++ писал последний раз года 3 назад, с векторами и ассоциативными массивами сталкиваться не приходилось, поэтому вполне вероятно, что упускаю какой-то банально простой момент.
>>414664 Дебагер еще говорит строку, в которой произошел креш, стректрейс и дает возможность просмотреть состояния всех объектов. В совокупности эта информация должна тебе дать намек, что не так.
>>414733 QTableWidget - это уже готовый класс простой таблицы. Тогда как QTableView, модель и остальная хрень нужна, если ты хочешь сделать что-то кастомное.
До чего надоела эта бесконечная возьня с костылями. Размер окна по контенту - самая базовая вещь, которая должна быть по умолчанию, но нет, зачем вам удобство, вот вам лучше костыли.
>>414805 Ящитаю, пора перестать рекомендовать Express, когда есть Community. Ньюфагу её отличия от Express не важны, но версия навырост, хуле, да и любое говно, зависящее от mfc/afx/whatever, найденное в интернетах, можно скомпилировать и запустить.
Ребят, поясните по .lib/.dll/.h файлам у бублиотек. Какие комбинации возможны?
Я понимаю, что .h - хэдер, .lib - библиотека для статической линковки, .dll - динамической. Но вот нахуя они идут одним пакетом и подключаются к проекту сразу все? Разве это не дублирует функционал? Разве нельзя подключить только dll, к примеру?
>>414787 Если ты хочешь сделать, чтобы виджет таблицы ресайзился вместе с окном, то тебе нужен леяут. Если ты хочешь, чтобы и контент таблицы ресайзился вместе с окном, то у меня для тебя плохие новости. Если тебе ок, что все колонки будут иметь один и тот же размер, или если последняя колонка будет занимать собой все место - юзай это: http://qt-project.org/doc/qt-4.8/qheaderview.html#ResizeMode-enum Если тебе это не ок, и ты хочешь, чтобы колонки ресайзились относительно окна, и имели разный размер в процентном соотношении относительно размера окна - тебе придется городить невероятный пиздец. Я через это уже прошел, но код не скину, т.к. он под своеобразным NDA.
>>414853 Они идут одним пакетом, шобы ты мог выбрать, что ты хочешь использовать. А хуле ты и статику, и динамику линкуешь в одном проекте, и хуле линковщик от этого не охуевает, это уже вопрос к тебе.
Кто хочет немного поломать себе голову и помочь мне одновременно: http://www.cyberforum.ru/cpp-beginners/thread1324531.html#post6962925 Где-то закралась ошибка в алгоритме Хаффмана (в бинарном дереве всегда присутствует элемент "я" с единичным вхождением, даже если файл состоит из последовательности без этого символа), а я туплю и не вижу её. Самый пикантный момент - логику алгоритма я не трогал, только добавил в конце кривую запись всего кода во внешний файл, что происходит намного позже основных действий по построению дерева и считывании содержимого файла. Подскажите свежим разумом, аноны, где там косяк, я уже код этот видеть не могу.
>>414863 Мне нужно 1. Ресайзнуть таблицу по содержимому, чтобы не было прокрутки - это работает. 2. Ресайзнуть окно по новому размеру таблицы - не работает, остаётся прокрутка, пока не растянешь окно вручную. По коду вроде видно. Но получается то, что на скрине.
Насчёт лайота поясни, я сделал горизонтальный под таблицей и поместил её в него, ничего не изменилось. adjustSize( ) всего окна не работает.
>>414896 >2. Ресайзнуть окно по новому размеру таблицы - не работает, остаётся прокрутка, пока не растянешь окно вручную. Это ты должен сам сделать. В целом ничего трудного. По горизонтали берешь размеры всех колонок + размеры отступтов layout margins между виджетом и краем окна маржин можно убрать вообще, тогда виджеты вполтную будут. По вертикали делаешь тоже самое, только вместо размеров колонок берешь размеры строк. Полученные размеры и будут те самые размеры, которые ты хочешь. Плюс ко всему выключаешь возможность ресайза окна если тебе это нужно вручную.
>Насчёт лайота поясни Забудь. То я не до конца понимал ситуацию.
>>414899 Это значит, что в бинарном дереве есть узел "я-1" - т.е. данный символ имеет единичное вхождение в исходную строку. Не знаю, как тебе объяснить - вот есть строка "aaabbcdddd". Для неё корневыми узлами будут a-3, b-2, c-1, d-4. В моём случае, при любой исходной строке ("123454321", "1", "битард" и т.д.) всё равно присутствует этот злополучный символ, с единичным вхождением. Откуда он там - в этом суть вопроса. Скомпилируй да запусти, код есть в теме по ссылке, станет нагляднее, если хочешь помочь.
>>414902 в крестах при неопределённости используется эвристическая компиляция при этом вероятности всех возможных выборов не нулевые иными словами, один и тот же компилятор крестов может производить разные машинные коды для одной и той же программы
>>414904 Спасибо, добрый человек, и правда работает. >>414906 >эвристическая компиляция Это что ещё такое и зачем, в двух словах? Вообще, привык к C#, и после всех его ништяков (а также плюшек студии и решарпера) писать на плюсах было мучительно. А помню когда-то на первом курсе, переход с Паскаля на обычный Си казался лютым апгрейдом.
>>414897 >По горизонтали берешь размеры всех колонок + размеры отступтов layout margins между виджетом и краем окна То есть писать под свою ос и её тему оформления? На винде расстояния между виджетами вообще бешенные становятся. Или где-то константы есть?
>>414993 Кстати не забывай, что для вертикали тебе так же надо будет добавить высоту горизонтального хидера. И такая же байда для горизонтали только уже с шириной. Опять же все это легко можно получить.
>>414994 Но вообще не исключаю, что тебе придется какие-то хардкорные константы еще добавить специально под каждую платформу. Кутя только кажется кроссплатформенной. Но как-только тебе нужно сделать что-то более необычное, чем ляпнуть пару дефолтных кнопочек, начинается ад и содомия. А так же готовься встречать тонны багов.
Фриланс и плюсыАноним09/12/14 Втр 21:38:48#373№415053
Потсоны, в связи с падением рубля всерьез подумываю о сабже. При этом конечно же понимаю, что на плюсах это очень сложно. Поэтому есть хитрый план изучить питон и ебашить приложения на этих двух языках, сочетая быстроту разработки и быстродействие приложений. Норм придумал? Жду комментариев анона.
Привет, анон. Суть такова. Система -- Windows, среда разработки -- Qt Creator. При попытке воспользоваться некоторыми функциями pthread вылетают ошибки вот такого типа:
ошибка: undefined reference to '_imp__pthread_mutex_trylock'
Почему это происходит? Каким образом разрешить эту проблему?
>>415071>>415073 >На чем специализируешься? Обычно ковыряюсь с какими-то системными задачками. Дровишки написать, под embedded поковыряться. Но и гуйци пилю бывает. В общем если интересно - беру.
>>415073 >Где берешь заказы? oDesk >Какой у тебя опыт? Вообще примерно три года. На oDesk'е уже полтора года. >Дай в пример одно из сделанных интересных. Дрова писал. Сейчас под сервера на фряхе пишу сбор статистики из логов. Еще с embedded Linux ковыряюсь.
>>415074 Сейчас же есть С++11/14. Вот его и используй, чо. А если ты на Сишке пишешь, то хз даже. Я не ковырялся с pthread'ами под виндой. Может mingw/cygwin/etc обновить надо?
Алсо, пишу под C++, просто не знаю каких-то объектных аналогов pthread кроме QThread из Qt. В тестовом попросили не использовать нестандартные библиотеки, поэтому его юзать не хочется.
>>415143 >зачем создан отдельный класс. Возможно планировалось расширить.функциональность объекта по этому классу. То есть помимо возвращения значения LOCK_RECORD_TIME он ещë что-то бы делал.
>что такое геттер я тоже не понимаю в данном контексте. В данном случае то что напоминает геттер, это функция lockTime, которая по неведомой мне причине, вместо значения _lockTime возвращает константу LOCK_RECORD_TIME.
>>415080 >Обычно ковыряюсь с какими-то системными задачками. Дровишки написать, под embedded поковыряться. Но и гуйци пилю бывает. В общем если интересно - беру. Расскажи плз, что почитать поделать, чтобы на нужный для фриланса уровень выйти?
>>415276 Я до принятия заказов ничего этого и не знал разве что гуйцы умел пилить на Qt. Я говорю заказчикам, что не знаю чего-то, что им нужно, но мне это дохуя интересно и вообще. Понятное дело, что не всегда прокатывает, но главное себя нормально поставить перед заказчиком и действительно быстро учиться. Ну вообще естественно, что сам язык ты должен знать более менее хорошо.
Привет, плюсач. Я питерский школьник-недоолимпиадник, прошел на региональный этап, что не было неожиданностью, потому что это было просто, как и в первый раз. По сему у меня есть месяцок на подготовку, и я решил перерешать прошлогодний тур. Есть там одна задачка, суть которой сводится к вычленению из строк чисел и последующему их сравнению (вообще даже числа не надо выделять, лучше просто сравнить строки, ибо числа там могут быть много больше 10^20). Задачку эту я еще в прошлом году решил, но на паскале. Но из подгузников надо вылезать, что как маленький, поэтому я уже целых две недели стараюсь кодить на новых для меня плюсах. Подозреваю, то выдаю лютый говнокод, но мне нравится. В связи с этим я пришел сюда спросить совета на счет самого простого и надежного способа работы со строками, ибо я переписывал программу уже раза три, и каждый раз были жуткие проблемы. И еще, пакет algorithm, он должен меня избавить от вечного переписывания пузырька, обмена элементами и прочих прелестей олимпиадного программирования, но я совсем не понял как. На всяких ccpreference вроде есть синтаксис, но у меня все равно не получается
помогите завтра зачет , с меня няши: 1.Списки А) реалізувати двозвязний список Б) зчитати файл цілих чисел(n>100) і зберегти у списку у зростаючому порядку В) реалізувати процедуру пошуку числа що вертає true or false ( число існує чи ні) 2. Графи А) реалізувати функцію обрахунку діаметра графа (найдовший маршрут без циклів). Програма Опис ( алгоритм ) Демонстрація роботи ( скріншоти )
>>415429 > Какие именно у тебя возникли проблемы со строками?
Судя по всему, я их даже считать толком не могу. Со всеми этими переводами строк и т.п. У меня уже после считывания все херится и превращается в неизвестно что.
>>415450 Нет. Я читаю не из файла на этот раз. Был код через getline, но мне нужно посимвольное считывание. [CODE]#include <iostream> #include <string> #include <algorithm>
using namespace std;
int main(){ int n; string s; string sch[1000]; cin >> n; for (int i = 1; i <= n; i++){ getline(cin, s); for (int j = 1; j <= s.length(); j++){ if (s[j] > 48) { sch.operator+=(s[j]); } } } for (int i = 1; i <= n; i++){ cout << sch; } return 0; }[/CODE] Вот это во--первых почему-то читает n-1 строку, предполагаю, что где-то надо впихнуть аналог паскалевского readln;
>>415463 Вот сейчас не понял. Я нахожусь в положении аборигена, который, извращаясь строил программы из говна, палок и рам велосипедов, орудуя отверткой без ручки, а ты мне тут такие вещи рассказываешь. У меня культурный шок. Как это делать?
>>415464 Да все гораздо проще: проверить каждый символ у уже введенной строки на принадлежность к определенному диапазону. Если для каждого выполняется, то ок.
>>415466 За эту хз. Но потсоны советуют Кормена. Не прогадаешь, базарю. >>415467 Если не цифры, то на мой взгляд логичнее выводить сообщение об ошибке. Ну и мб просить ввести число еще раз. Ну вот смотри. Если ты напишешь int i = 56q1;, компилятор же не сделает вид, что не заметил букву. Он тебе скажет, что у тебя ошибка.
>>415470 Ты мыслишь верно, только забыл, что это олимпиадная задача и проверяет меня система автоматических тестов. И суть задачи на 70% в том, чтобы вычленить из разнокалиберных строк лишь числовые данные. Вспомнил, как проигрывал, когда ребята за соседними компуктерами начинали писать в коде, который будет запускаться на тестах, "vvedite a..."
>>415474 Да. Если быть точным, отсортировать эти значения >>415472 > Я не понял, нахуй тебе 1000 строк, если тебе нужно два числа сравнить.
Условие вкратце: есть тысяча строк, гарантированно содержащих номер и еще символы (всего не более 100). Мне надо посчитать и вывести те номера, которые встречаются до 5 раз.
>>415491 Из этого кода можно сделать предикат для сравнения двух строк, заменив выводы на консоль на возврат true или false. Отсортировать вектор строк с помощью sort и предиката для сравнения строк. Используя unique_copy можно получить все уникальные номера. Пройтись по ним в цикле, применять equal_range, получать пару итераторов начала и конца диапазона одинаковых элементов, и вычитая один итератор из другого, получать количество элементов такого номинала. Если количество меньше 5 - выводи.
>>415500 Бля, я слегка переусложнил. На самом деле предикаты не нужны тут. Если все лишние символы выкинуты, можно использовать == и < для строк. Они уже реализованы в std и будут работать как надо, если длина строк одинакова (по алфавиту, а это как раз подходит). Если не одинакова - сравниваешь size(). Короче просто используешь перечисленные алгоритмы.
>>415475 >Мне надо посчитать и вывести те номера, которые встречаются до 5 раз. Легче всего это сделать с regex'ами. Если нельзя, то просто из строк выкидывай все символы, что не числа, потом делай конверт оставшейся строки которая будет содержать только числа в число, ну а дальше фигня вопрос посчитать, встрачаются ли какие-то числа до 5-и раз.
Нужно извлечь xml (изначально excel) из zip архива, и в дальнейшем написав свой парсер, распарсить данные. Взял zlib для распаковки и я так понял, что можно извлекать информацию, либо во временный файл, либо в буфер. Поясните, как в моем случае лучше делать ? И подходит ли zlib, или лучше libzib ?
Помогите решить 2 задачи, нужно в шарагу сдать, но у нас в учебниках и рядом подобного нету. 1)Разработать подпрограммы работы с приоритетной очереди. установление запросов в очередь выполняется подряд в конец очереди, снятия - по приоритетом. Очередь организована в массиве и в списке. приоритет: максимальное значение числового параметра, при совпадении параметров - FIFO. 2)Заменить все символы c1 в строке s, начиная с позиции n,на строку s2.(реализовать функцией StrCChar(s,c1,s2,n). Всем добра.
>>415571 >>415571 >как лучше работать с данными, через временный файл или читать из буфера и обрабатывать, исходя из моей задачи ? ну ёба, это уже зависит от того, какой парсер xml ты собираеся прикручивать. Если самопальный велосипед, то мо выбор - буфер, если что-то промышленное, то оно наверняку амеет работать со стримами - будет на лету распаковывать необходимые куски через обертку, которую тызапилишь над unzReadCurrentFile()
>>415593 А почему должна? Разбиение на хедер и реализацию это чисто для людей, конпелятору похуй. В некоторых языках, конечно, так делать запрещают, но в целом ошибки в этом нет.
Я не сказать, что спец в этом деле, но на мой взгляд в хедере логично определять всякие геттеры-сеттеры и прочие стандартные функции, которые реализуются в одну строку. Мб имеет смысл там же реализовывать конструкторы и деструкторы, чтобы реализация оставалась специально для сложной логики, но тут пусть более опытные ребята меня поправят.
Кстати, раз пошла такая пьянка -- расскажите про инлайн. Чем хорош, чем плох, кроме обязательного объявления в хедере? Довольно часто натыкаюсь на инлайновые конструкторы, когда смотрю примеры, меня же никто так делать не учил.
>>415596 Ну хуй знает, сеттер, геттер, минеттер, скакать потом аки хохол между файлами. Уж запихал всю логику в .cpp, а интерфейс оставил в .h, и чувствуешь себя сухо и комфортно. Благо, нормальные IDE позволяют генерить пустые заготовки реализации функций из объявления в хедере. Но вообще, это вопрос спорный. В том же Qt, например, делают как ты сказал, а они, ясен хуй, не пальцем деланы. Но я таки придерживаюсь другой позиции, ибо объективных причин пихать реализацию в хедер не встречал.
>>415602 Нет, совершенно адекватный. Все это есть в статьях, блогах, учебниках, в голове у препода, если он не конченый 70-летний дебил, которого держат из жалости.
>>415608 Много вопросов, которые тяжело нагуглить (часто из-за формулировки). На твой же вопрос ответ в первой ссылке с гугла по запросы "inline c++". Все, иди на хуй, заебал засирать тред своими долбоебскими первокурсными проблемами. С этим ЕГЭ совсем дегенератов стали выпускать.
>>415595 > схуев бы должна возникать ошибка? может потому что метод определенный в хедере определяется в каждом файле в который этот хедер инклудится? разве нет?
>>415611 >может А может и нет. Так что в твоей формулировке (без уточнения) вопрос не имеет смысла. Алсо, если это метод класса, то даже при включении в разные файлы проблемы не будет, можешь проверить.
>>415593 >When a function is defined inside the class definition, it is implicitly inline. Compilers usually mark those functions as 'weak symbols'. The linker then gets all translation units and tries to resolve the symbols. Weak symbols will be dropped by the linker if needed (i.e. if the symbol is already defined somewhere else).
>>415620 У меня кстати около 70 одинаковых warning'ов в методе определенном в хедере. То есть получается такой метод в хедере конеплируется каждый раз, а просто при линковке нет проблем.
>>415533 >Легче всего это сделать с regex'ами. Как среди массива строк с помощью регулярок определить строки, содеражащие до пяти раз один и тот же номер? Мне кажется, ты не понимаешь, о чем речь
>потом делай конверт оставшейся строки >>415405 >числа там могут быть много больше 10^20
>>415598 >ибо объективных причин пихать реализацию в хедер не встречал. >>415600 >Подставляемые функции повышают производительность, не? >>415599 >В гугл/к преподу. Не твой личный репетитор. Обосрался и чтобы скрыть этот факт, отправляет в гугл.
>>415647 Нет, студентишка, это ты обосрался. Производительность повышается инлайном, а не занесением в хедер. Хотя, дебилу вроде тебя разница вряд ли заметна.
>>415666 Гуманитарий обосрался с терминологией, но продолжает считать, что обосрался кто-то другой, найс. Попробуй еще, когда научишься строго выражать мысли.
>>415669 Излюбленный прием обосравшихся - троллинг тупостью. Еще и спойлер поставил зачем-то. А теперь смотри, объясняю для самых маленьких. Условие помещения реализации метода в хедер не является обязательным для инлайновости функции. Это означает, что добиться инлайновости (и, как следствие, повышения производительности) можно, например, добавив "inline" перед объявлением, при этом оставив реализацию в .cpp. Таким образом, тезис "помещение реализации метода в хедер нужно для того, чтобы заинлайнить этот метод" является неверным. Именно поэтому нет причин включать реализацию в хедер, инлайновости можно достичь и без этого. Доперло? Если нет, то после курса алгебры или матана (или что у вас там сейчас читают) должно дойти.
>>415470 >За эту хз. Но потсоны советуют Кормена. Не прогадаешь, базарю.
пробовал кормена читать, и чото голову поломал на всем этом псевдокоде, есть где-нитьбудь статейки или что, где по хардкору поясняют как читать псевдокод из его книги и не вывернуть себе мозги?
>>415671 >>415671 >добавив "inline" перед объявлением, при этом оставив реализацию в .cpp но инлайниться такая функция будет только внутри этого .срр потому что внешние вызовы не знают как она реализована (всякие link-time codegeneration и pgo оставим в стороне - оно уж слишком компилерспецифик) > (и, как следствие, повышения производительности) тоже не всегда - я однажды проинлайнил всё подряд, и стало в 1.5 раза медленней потому что основной цикл перестал влезать в L1 кэш
Я сильно боюсь какие-либо заявления делать, но неужели баг компилятора/библиотек? Программа на Qt 5.3.2, GCC 4.9.1, Linux amd64. Читаем файлы на примитивном ассемблере, транслируем во внутреннюю структуру и исполняем. На этапе трансляции появился плавающий баг, когда код из одних и тех же файлов, никак не меняющихся со временем, то транслируется корректно, то возникают ошибки. Ошибки в тупом сравнении QString с константными строками. Причём только в release-билде, запускаемом не из под QtCreator, в остальных случаях всё хорошо. Более того, добавил не влияющий на происходящее код (вывод в консоль строк вида "упало в такой-то строке", какие-либо переменные при этом не трогаются), и баг пропал, убираю этот код и пересобираю -- опять появляется.
>>415691 >только внутри этого .срр Ок, это я не учел, признаю. >не всегда А никто и не говорил, что всегда. Мое мнение - если это не сверхнагруженное приложение с миллионом вызовов в секунду, запускаемое на первом пентиуме, то нечего хуйней заниматься. Компилятор сам умеет оптимизировать и инлайнить то, что нужно и можно.
>>415694 У тебя есть три варианта: скинуть полный код (или хотя бы рабочий, компилирующийся фрагмент), подарить нам по хрустальному шару, либо пойти на хуй.
Компилю я свой проект в очередной раз после добавления класса. А компилятор не компилит файл библиотечный memory. Раньше всё было нормально, а теперь он говорит:
error C2825: '_Alloc': must be a class or namespace when followed by '::' d:\useful\vs12\vc\include\memory
Я могу выложить код метода, комментирование которого убирает это, но я не знаю, как его чтение может помочь.
>>415705 Блять, где вы эти обоссанные сайты находите. Не судьба проект в архив и на ргхост? Нет, будем есть говно. А гугл между тем говорит, что нечто подобное бывает при явном указании типа в шаблонах (например, swap<int>(a, b); вместо swap(a, b);). Убери везде явное указание типа, где это возможно. Без полного кода проекта больше ничего сказать нельзя.
>>415697 Были серьёзные сомнения, что кто-то захочет копаться в этом говнокоде. Ну да попробуем. http://rghost.net/private/59573729/50e26695e0f3f79181f0c69781cb253d Черти зарылись в SMachine::ParseSourceCode. Алсо, только что пересобрал на соседней машине с виндой, используя 32-битный gcc 4.8.2 -- работает без проблем. Более того, оно начинает работать без ошибок, даже если добавить строку как на пике. Больше сотни раз обновлял -- ни одной ошибки. Убираю строку, пересобираю -- за ту же сотню чтений файлов 40-50 ошибок. Как оно могло повлиять? Пиздец.
>>415706 Всё ок, я нашёл ошибку. Она была совсем очевидной, извини, что дёргал. Неправильный конструктор для std::shared_ptr<sf::Text>, забыл написать (new sf::Text(PARAM_LIST), написал вместо этого (PARAM_LIST)
>>415710 Конечно никто не пробовал собирать это сырое почти не работающее говно на маке. Не тот контингент. В чем проблема то, что не получается? А вообще, лучше не связывайся с этой парашей, я ковырял ее, знаю. На практике половина не работает.
>>415712 проблема в том что отсутствуют boost библиотеки которые необходимы для сборки. Ладно попробую на винде, может быть там все веселее. Тем более у меня версия оси больше чем в мануале Wt. Если на винде не влетит то брошу это говно.
>>415725 Короче хуй проссышь. Баг пропадает, если всунуть в функцию операцию вывода в консоль любого текста, причем только qDebug, std::cout не влияет (с другой стороны, если выводить tokens[0] через std::cout, то баг опять же пропадает). В общем, похоже, действительно какой-то баг GCC. Надо бы покопаться в ашшемблере, но я в него не умею, да и вангую там тысячи и десятки тысяч строк.
>>415733 Алсо, ошибка происходит в ветке "inc", вот тут: inst.Register = tokens[1].toInt(&ok); (узнал посредством добавления разных состояний для разных веток). То есть проблема не со сравнением строк, а с преобразованием строки в число. А уж почему так происходит - хуй поймет.
>>415733>>415734 Спасибо. Придётся, похоже, пока это поделие костылями обмазывать, ибо на общение с разработчиками gcc у меня мозгов не хватит, да и не факт, что он виновен.
>>415738 Гооооооосподи Иисусе, вот я дебил, пиздец. Забыл проинициализировать переменную ok, вписав туда true. Странно, что оно вообще работало. >>415734 Спасибо за наводку, пока бегал глазами вокруг того блока кода, дошло.
>>415745 Ага, уже сам нашел. Всегда ругал себя за то, что инициализирую переменные ok в коде, хотя им всегда потом обязательно присваиваются значения при передаче указателя на них в функции. Оказывается, зря ругал.
Тупой вопрос 10/10. Хочу рисовать простые геометрические фигуры, возможно выводить картинки. Что мне гуглить, желатьльно разжеванные туториалы с примерами кода. Я бы мог и сам, но уже начинаю тонуть в документации. Хочется чего-то минималистичного. Я же, блять, не знаю, что и куда подключать, качать, загружать.
>>415779 Это тебе однозначно в сторону SDL. Лёгкая динамическая библиотека, весит меньше полмегабайта, используется в эмуляторе Android, как один из возможных рендеров изображения в куче видеоплееров, и ещё много где.
>>415789 >>415779 Поддвачиваю SDL2/SFML За SDL2 не знаю, а в SFML точно есть встроенные функция отрисовки простейших геометрических фигур. Сам пользуюсь SFML
>>415967 >связанного списка С кем связанного? С хуем твоего деда? Он связный, а не связанный. Это во-первых. Во-вторых, http://pastebin.com/Au2bFaJw (писал прямо там, опечатки сам проверяй).
Нубский вопрос. Как решить, где лучше держать члены класса -- в стеке или в куче? Я как-то привык, что со стандартными типами и часто употребимыми классами вроде string используется стек, а всякие сложные объекты кладутся в кучу и используются по указателю. Но мб я не прав.
>>416194 Когда тебе это на самом деле будет надо, тогда и узнаешь. Тот же std::string внутри хранит данные в куче, кстати. Общее указание: если данных много, то пихай в кучу, чтобы не переполнять стек (места там не очень много).
Есть класс, в котором живет std::unordered_map< string, Record > list. Как правильно сделать, чтобы при удалении данного класса удалялось все содержимое list? При прописывании в деструкторе класса list.clear() ни один деструктор Record-ов не срабатывает.
>>416214 Вот потому я и говорю, что нужен полный код. Каким хуем я могу догадаться, что проблема в мьютексе? Но нет, каждый чепуш думает, что уж с его то проблемой можно разобраться по паре бессвязных кукареков. Нельзя так делать потому, что так (без проверок) быстрее работает. Да, тут критична даже проверка одного bool, ибо лочиться должно как можно быстрее, на счету каждый такт процессора.
>>416215 Как же я все-таки люблю Qt за его полную документированность. Час копался в коде и доках, пытаясь понять, где беда -- и в итоге все равно выяснил опытным путем.
>>416227 У тебя фраза двусмысленная. Выглядит и как сарказм, и как правда. Учитывая количество недовольных неосиляторов, я сделал ставку на первый вариант. Уже хотел извиниться, но не буду, потому что http://en.cppreference.com/w/cpp/thread/mutex/unlock >The mutex must be locked by the current thread of execution, otherwise, the behavior is undefined.
Подскажи, плюсач, какой библиотекой стоит воспользоваться для работы с MySQL под плюсами. Интересует такая, чтобы не требовала буста, хуюста и прочих подобных приколов, а содержала в себе все, что ей нужно, либо брала из std.
Поясните как правильно выделить память под мое дерьмо? Сейчас пытаюсь изначально посчитать сколько потребуется памяти и столько выделяю, но чую все не верно. сама программа делает такую штуку типо например если задан массив Hel2o wo15rld, то она должна переписать его в массив Hello wooooooooooooooorld, типо в зависимости от цифр увеличивается количестко букв. еще там где то нужно впихнуть мемсет. Помогите, ньюфегу плис. язык C
>>416324 О Боги, моги глаза. >тут я считаю сколько символов будет в новом массиве переменная n Не правильно считаешь. У тебя на первый хелоу ворлд получается 10 символов, тогда как их 12. Плюс не учитывается нуль символ. И вообще не понятно, на кой ляд ты сам считаешь размер строки то? Чем тебе strlen? Еще не понятно, нахуя ты выделяешь один байт сначала, а потом реалок делаешь. Выдели себе память после того, как посчитал необходимый размер. Дальше даже не читал, там скорее всего тоже все невероятное.
>>416336 Ну это да, сначала я просто выделял память, но ловиг сегафолт! Это после двух часов возни я просто так оставил, щас попробую исправить, но вообще возможно так делать да? Посчитать сколько памяти нужно и выделить?
>>416336>>416337 Стрлен не использую потому что я же не знаю какого размера будет новый массив, я просто смотрю какие есть числа в изначальном массиве, допустим есть число 30, вот я его и прибавляю к N, потому что будет 30 каких то знаков дополнительно.
>>416336 Да, а насчет n 10, я просто забыл поправить, видишь ли, я не понимаю почему, но если n 12 то сразу сегафолт, а если n10, то первое проходит лол. Вот улучшеная версия, посмотри, пожалуйста. http://pastebin.com/uLeBUsMG
>>416361 Добавить нульсимвол, лол. Каждая строка должна заканчиваться нульсимволом, иначе тот же strcmp не поймет, где конец строки ну это если образно говорить.
>>416368 Теперь оно первый асерт нормально проходит, поздравляю. Падает на втором. Во вребя подсчета размера новой строки. У тебя там с оказывается равным 44772. Ты дебагером вообще умеешь пользоваться? Запусти под дебагером, оно покажет, где упало и состояния всех переменных.
>>416370 Я знаю почему падает на втором, короче нельзя писать newsrc[i+1]='\0'; потому что это не конец новой строки, newsrc[j+1]='\0'; Теперь оно проходит первые два ассерта, спасибо анон, третий правда не проходит, но там я думаю из-за нулякоторый уничтожает символ, щас попробую поправить.
>>416378 Еще раз повторюсь - у тебя не правильно считается размер новой строки. Как минимум пушо из выхода вложенного цикла, который делает c++ ты делаешь еще раз c++.
Вот жеж сука, проверяющая хуйня все равно не хочет брать мою прогу, пишет так. Test 'Начальный тест': Успех 100.00 %
Test 'Тест предельных значений': Программа провела недействительную операцию и была закрыта (Segmentation fault/Bus error/Memory limit exceeded/Stack limit exceeded)
Дорогой сиплюсплюч, есть ли у тебя ссылки на годные лекции по этому замечательному языку? Можно и на английском, я не против, в языки могу. Но не надо просто скидывать нагугленное. Хочется годноты.
Кто может пояснить что тут происходит. смысл вызова функции в ней же самой, рекурсия Когда функция снова себя вызывает она как бы допроходит цикл, но и потом еще допроходит на следующем и на следующем и на следующем? http://pastebin.com/fSgQ1MAS
Кто может пояснить что тут происходит. смысл вызова функции в ней же самой, рекурсия Когда функция снова себя вызывает она как бы допроходит цикл, но и потом еще допроходит на следующем и на следующем и на следующем? http://pastebin.com/fSgQ1MAS
>>416729 Что тебе не понятно то? Практической пользы в этом никакой нет, совершенно искусственный пример рекурсии, да еще и крайне неудачный в плане наглядности. Преподу твоему руки поотрывать за то что учит вас так оформлять код.
>>416745 Да да, ну мне все же будет полезно, мне собственно нужно чтобы допустим в массиве было 3 2 1, и оно выписало все возможные комбинации, но только чтобы шли по уменьшению, такие как 3 2 1, 3 2, 3 1, 3, 2 1, 2, 1. >>416731 - вот это я так просто создал, чтобы понять как работает, уже понял. Щас буду дальше пробовать.
>>416770 А ты попробуй подойти с другой стороны. Составляешь наибольшее сочетание, скажем, (1 2 3), а потом по очереди убираешь один из элементов. Для оставшихся сочетаний (2 3), (1 2), (1 3) повторяешь операцию, получишь (1), (2), (3). Естественно, повторы надо отслеживать при этом, занося, скажем, в массив или множество (лучше tree set).
>>416776 Хуй знает, можно ли придумать алгоритм без отслеживания повторов, но чую я, что он будет либо запутанный, либо построенный на основе хитрых математических трюков, и потому сложный для понимания. А раз в условиях задачи не указано, что нельзя отслеживать повторы, то нехуй себе голову забивать.
>>416776 Не, мне дают N сколько всего чисел, и потом мне нужно выписать все возможные комбинации по уменьшению. Сейчас мой алгоритм может только выписать все подряд, убирая самое маленькое справа и еще через одну цифру перепрыгивать. а нужно как-то все. пиздец короче
Подскажите, как посчитать количество символов в файле. Есть простой способ - посимвольно их считывать до eof, но мне он не подходит, так как хочу динамически выделить память под массив из этих символов, а для этого нужно знать размер. Можно, канеш, их считать, потом поставить каретку на начало файла и записывать уже данные в массив, но по-моему это нерационально. Предполагаю, что можно как-то сдвинуть каретку на конец файла и узнать, сколько же символов там перешагнулось, полагаю воспользоваться этим способом, так вот - какие это функции загуглить (а то гугол в основном С выдает и WINAPI штуки).
Прошу не бить, по образованию ни разу не программистка.
>>417005 Программа сугубо под винду, так как работаю с DirectX. За кроссплатформенную ссылку спасибо, почитать очень полезно. По поводу GetFileSize() - я так понимаю, чтобы это использовать, мне нужно создать класс файловых объектов и вообще хорошенько пошликать на весь WINAPI, потому что иначе там два несчастных параметра не заполнить. Но встречала и такие варианты, как GetFileSize("путь к файлу", NULL) или GetFileSize("путь", &переменная типа unsigned long), что вообще обескураживает мой мозг. Я так понимаю, количество символов внутри файла при использовании этой функции будет равняться такому выражению: GetFileSize(...)/sizeof(char) ? Просто никогда не встречала именно такого выражения в реальных программах и смущена.
Алсо, нафига пруфы на программаче, вы же не быдло.
>>417138 Суть способа взятия размера файла в том, что ты подразумеваешь, что весь текст внутри написан в char'ах. Нет русське/японське/etc языка и вообще. Если это ок, то ты можешь использовать просто tellp/tellg и не париться. Если это есть, то файл придется читать. По поводу GetFileSize ничего трудного. Открываешь файл через винапи, берешь размер через винапи, вот и все. Второй параметр в GetFileSize тебе не нужен http://msdn.microsoft.com/en-us/library/windows/desktop/aa364955%28v=vs.85%29.aspx - читай доки, что он значит. Он ничем не будет отличаться от способа взятия размера файла через стандартные стримы. Алсо в винапи такого нет: >GetFileSize("путь к файлу", NULL) Не знаю, что ты там видела, может кто-то написал свою функцию просто.
>>417151 Че ты ей мозги ебешь своими кодировками. Для этого есть enca. Размер определил, массив char создал, файл в него считал, потом по мере необходимости юзаешь enca (если надо работать именно с текстом) и, собственно, все. Проблемы следует решать по мере их возникновения.
>>417155 Да, и еще. Если производительность не критична (точнее, не очень критична), используй, например, Qt или boost, там уже, как говорится, все украдено до нас.
>>417159 По-моему ты сложнее говоришь. Я вообще думаю с бинарными типами файлов разобраться, так как допускаю, что это улучшит производительность (если под этим понимается скорость, которая для программы критична), только позже. Про кодировки и их различия в курсе, библиотека MSDN не такая страшная после DirectX, поверь.
>>417161 Так тебе надо с кодировками работать, или нет? Я так и не уловил. А если надо, то тут три варианта: или заранее знать и указывать вручную, или enca, или велосипед. Легко догадаться, какой вариант лучше по совокупности простоты и универсальности. О производительности вообще стоит думать только тогда, когда ее не хватает. Иначе это premature optimisation, и это весьма вредно для качества кода и скорости его написания.
>>417171 Мне не надо работать с кодировками, т.к. все файлы будут создаваться: - мной вручную для тестирования на первых порах, и туда будут заноситься цифры, которым побоку на кодировку. - самописной программой в дальнейшем, которая будет опять же заполнять файлы циферками. Есть возможность, что мне придется подключать какие-либо буквы, но и в этом случае я воспользуюсь A-Z, a-z. Поэтому полагаю, один символ у меня соответствует типу char, и wchar'ов внезапных не объявится, а других траблов с кодировкой я не вижу. Но если я слепая курица и чего-то недогоняю, поясни. Просто с Qt, boost и enca я ни разу не сталкивалась и зубрежки там наверняка побольше будет, чем я рассчитываю. Планировала управляться с WINAPI, Direct3D и C++, имхо для игры хватать должно.
>>417179 >игра без движка на голом винапи/дх3 Кек. Вот это извращение. Надеюсь, ты понимаешь, что делаешь. А что касается размера файлов, тебе хватит самой первой ссылки (stackoverflow.com). Тупо копипасти ту функцию из ответа и не парься. Насчет зубрежки ты не права. Ее в программировании (прикладном, а не теоретическом) вообще нет и быть не должно. Надо что-то - вбиваешь в гугл. Наиболее часто используемое само запомнится. Удачи тебе с игрой.
>>417526 >>417527 >nNumberOfBytesToRead >lpNumberOfBytesRead Чувствуешь разницу? Хинт: второй параметр - то, сколько байт было реально прочитано. Передать в функцию можно указатель на переменную с любым значением, оно все равно будет перезаписано. Алсо, нахуя тебе этот винапи? Он же уродливый. Все это можно на чистых крестах сделать, без мелкомягкой дрисни: http://www.cplusplus.com/reference/istream/istream/read/
>>417535 Въехала, спс. >Алсо, нахуя тебе этот винапи? Он же уродливый. Просто интересно стало. Но да, вариант fstream'а посимпатичнее, хотя есть у меня подозрение, что если юзать его, то это подключать лишнюю библиотеку и увеличивать размер программы, или особой погоды количество библиотек не делают? Просто <windows.h> мне все равно инклюдить приходится под окно, а вот без <fstream> могу при желании обойтись же.
>>417546 Я понимаю что это указатель на переменную. Просто сразу подумала, что в этой переменной хранится число байт к прочитке, а не прочитанных. Ну не всем же быть умняшками как ты или вышеотписавшиеся аноны.
>>417606 Подключая <fstream> ты подключаешь только заголовочный файл. Стандартная библиотека у тебя уже по дефолту подключена, и там (о, ужас!) кроме fstream есть еще хуева туча классов. Так что ты ничего не теряешь.
Програномы, не могу понять, как можно убирать компоненты в шестом билдере, а потом их снова создавать по мере надобности. Допустим, есть три кнопки: 0, 1 и 2. По нажатию 1 убирается 0, тем самым освобождая память, а по нажатию 2 кнопка 0ну или просто новая кнопка, которой можно задать caption появляется снова. Пробовал Free, но при попытке снова вызвать компонент билдер ругается ошибками. Помогите, плиз. С меня как всегда
Ситуация такая: есть класс, в нем как член живет std::mutex. В одной из функций класса вызывается try_lock(). Он почему-то выдает false, хотя мьютекс таки не залочен.
Вопрос: какая может быть причина? Класс, где лежит мьютекс, живет в основном потоке. Блокирование вызывается по указателю из дочернего.
>>417866 Откуда мне блять знать, почему он не лочится? Может это из-за того, что твою мать ебут хачи. Без кода невозможно сказать наверняка, так что пока это наиболее вероятный вариант.
>>417877 Проблемы возникают в том месте, где вызывается lock(), Он доходит до проверки трайлока и ЗАВАЛИВАЕТ ее, хотя мьютекс в этот момент не залочен.
>>417874 >>417877 У тебя видимо каждый раз во время попытки блокировки мьютекс оказывается залочен, потому try_lock и не срабатывает. Уменьши время ожидания и увеличь число попыток. Скажем, 10 попыток, между ними по 100 мс. >вызывается блокировка >исполняется lock() Вызов lock() тащем-то и есть блокировка.
>>417890 Нашел ошибку. Она оказалась в другом месте, но все равно спасибо за помощь.
Выяснилось, что анлок работал криво, потому что я не там делал true внутреннюю переменную, которая отражала залоченность мьютекса, чтобы не анлочить не заблокированный.
Двощ, дай быстрый ответ: как лучше всего реализовать методами STL контейнер типа < ключ, указатель, указатель >, то есть, с тремя полями? Заебенить вторым номером pair в unordered_map, или есть варианты симпатичнее?
Анон, что значит две звездочки в переменных функции? Типо указатель на указатель? Зачем это и какие профиты можно извлечь? Пример: void funkce ( int звездочка звездочка p1, int звездочка звездчка p2 ) { }
http://pastebin.com/7WuPdTN5 Программа, которая раскладывает число на простые множители. Не проходит пару значений по лимиту времени. Как можно оптимизировать?
Есть два сту... монитора (просто два монитора, подключенных к одной видеокарте, как у многих из сидящих тут на рабочем месте). Нужно на первый вывести то, что происходит на втором, т.е. продублировать изображение. Подскажите, куда мне копать. Использую связку C++ и Qt.
Анон,нужна помощь. Есть задание и есть в нём один момент который я не понимаю. >Класс Ocean.Состоит из двумерного массива указателей на Cell... >Cell.Абстрактный базовый класс.
Собственно как сделать двумерный массив указателей на абстрактный класс? Моя версия не работает class Ocean{ public: Cellmap; .... Ocean(){ map=new Cell[n]; for(int i=0;i<n;i++) map=new Cell[n]; ....
Самым быстрым способом, без гемороя с инициализацией контекста и перехватыванием видеопотока, будет просто смена режима: когда в Win7 мы жмем Win + P, то возникает панелька, с которой можно клонировать мониторы.
Выходит, это есть в системе и я могу просто переключить режим при помощи WinAPI... Только вот как?
>>415725 Это снова >>415707-хуй, который теперь будет делать бэкапы. Умер диск, потерял исходники, сейчас понадобились, у тебя не остались ещё, случайно?
>>418944 https://ru.wikipedia.org/wiki/NaN Читай, ищи, где у тебя одно из перечисленных условий возникает (втыкаешь std::cout << [переменная]; и читаешь вывод программы).
>>418986 Мне угадывать, где какая переменная? Давай пили нормальный лог, с выводом номера итерации и значений всех переменных, а также с соответствующими именами этих переменных. Либо катись к хуям помогать долбоебам не всралось.
Анон, помоги разобраться. Почему из файла, содержащего 4-е записи, считывается 5-ть? Причем 5-я и 4-я записи содержат одно и тоже. http://pastebin.com/7pb95RC3
Анон помоги. Имеется массив классов предка и в него помещаем наследников,вызывая переопределённую функцию получаем результат работы функции предка,а нужно чтобы работала функция наследника. http://pastebin.com/JAz6tZ5u
Антоны, вот поясните, зачем в реализации std::function сделан велосипед, эмулирующий виртуальную функцию. Если нужно сделать что-то конкретное, имея дескриптор на нечто абстрактное, то без стирания типов не обойтись. Нахрена эта лапша с параметром идентификатора операции и бойлерплейтный свич-кейс?
Чем плохо использовать базовый менеджер с виртуальными методами? Один хрен либо руками эмулировать виртуальность, либо это за тебя сделает компиллятор. И почему по умолчанию размер статического хранилища всего 8 байт (на 32 битах)? Чаще всего в коде приходится вызывать std::bind( &MyClass::myMethod, this ). В итоге используем тормозной malloc. И ещё, необходимость грёбаного using namespace std::placeholders перед каждый вызовом std::bind заставляет чувствовать себя обезъяной. Ллять почему хотя бы не std::_1, std::_2?
>>419000 >>419019 Скорее всего твой текстовый редактор добавляет пустую строку в конце. Убери ее. Под пинусом у меня все нормально. Если добавляю пустую строку, то тоже начинает 5 раз срабатывать (на самом деле в пятый раз оно ничего не считывает, но итерация цикла проходит, и добавляются предыдущие значения). >>419003 Функция должна быть объявлена как виртуальная. Дальше гугли сам. >>419004 namespace std { using std::placeholders::_1; } и далее в коде std::_1 Ты же знал, на что идешь, когда использовал кресты. С функциональной парашей уебывай в хаскель, либо не ной. >>419024 http://lmgtfy.com/?q=%D0%B8%D0%BD%D0%B4%D1%83%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8 >>419066 >>419067 Нахуя ты эрэйзишь? Конечно у тебя сегфолт будет. Сначала поудаляй все delete'ом, потом просто map.clear();
>>419066 >>419067 Забыл добавить. Вот почему нельзя эрэйзить: >References and iterators to the erased elements are invalidated. А у тебя потом идет использование этого итератора (сравнение и инкремент).
>>419139 Хуйню ты говоришь, оно так последнюю строку не добавит. >>419140 Нахуя присваивать 0? clear же вроде не вызывает delete, иначе как бы он работал, скажем, с int вместо указателя?
>>419144 >иначе как бы он работал, скажем, с int вместо указателя? А ты не знаешь, что все контейнеры все в куче объявляют, нет? Ты в мапе хранить указатели, потому что думаешь, что unordered_map<int. Foo> тут без указателя будет делать все Foo в стеке?
Начнем с того, что я не тот анон, который задавал вопрос. >>419148 По поводу EOF - пикрелейтед. Так что обтекай. Красота - понятие относительное. Для меня лишний код не есть красота. (inb4 зачем тогда пишешь на крестах.) >>419149 >>419150 Сравни: http://pastebin.com/Z5zrWAq0 Очевидно, что если при clear() будет вызываться delete, то второй вариант соснет, потому что по сути будет выполнено удаление int, а не указателя на int. Если же, как ты говоришь, память выделяется в куче, то фактически в первом случае мы получим указатель на указатель, который собственно и будет удален. См. пример: http://pastebin.com/zgmzbyQh
>>419156 >По поводу EOF Окей, подойдем с другой стороны. Скорее всего у анона, который спрашивал, в конце есть какой-то символ. Мое предложение элементарно его игнорирует. По хорошему после каждого чтения nn и A надо проверить на конец файла. Да и вместо eof вообще с good работать.
Я не о том, что мапа должна/не должна удалять память указателей. Я о том, что возможно судя по его проблеме это точно ему там вообще указатели не нужны, т.к все контейнеры выделяют память в куче под хранение данных. И в это случае ему не надо будет играться с удалением, т.к clear все сделает за него.
>>419165 Я вообще-то про лишний символ сразу и написал. Но чукча же писатель, а не читатель, как в том анекдоте. В любом случае, это костыль. По поводу мапы неправильно понял, ну да ладно теперь. Согласен, что лучше, если можно, делать как ты сказал. Но это не всегда бывает возможно, увы.
коллеги, плиз подскажите: я создаю класс отдельным файлом и вкладываю его (#include <header.h>) в основной main.cpp. В main.cpp есть такая строчка #include <string> В header.h в самом теле класса есть public: string name; Так вот компилятор ругается что не знает такой тип string. Что бы дописать?
>>419336 Не буду тебе нихуя говорить. Прочитай учебник. C++ это не тот язык, в который можно вот просто так с бухты-барахты влезть и начать писать программы. Нужно хоть самую малость почитать.
>>419407 Учебник читай. Хотя, если ты знаешь что такое класс, функция и оператор (а оператор это функция, которую просто можно вызывать немного другим способом), но не можешь понять что значит >Функтор это класс с оператором operator(), что позволяет его вызывать как функцию то задумайся о проверке на умственную отсталость.
>>419549 Твой дед - родитель номер 2 твоего родителя номер 1. Кстати я уже сам разобрался в вопросе, всего делов то инклюдить класс после обьявления пространства имён. Пилим перекат без пидоров.
>>419606 Тащем-то на то и был расчет, ибо надо самому немножко думать.
Программа на языке С++Сергей26/12/14 Птн 19:28:44#693№420047
>>410025 Разработать программу, которая позволить создать двоичный типизированный файл test.bin и наполнить его с клавиатуры десятью целыми положительными десятичными числами (типа int) из диапазона от 100 до 200. Предусмотреть эащиту от ввода чисел,. выходящим за пределы указанного диапазона. Перед вводом каждого числа на экране должна появляться подсказка с его номером. После загрузки последнего числа закрыть созданный файл и вывести на экран сообщение о его успешном создании
Писал первое задание - Name Generator. Вот жеж блядский СИ с классами! Я целые сутки потратил на то чтобы узнать что оказывается нельзя внутри класса инициализировать массив символов. Или можно?
>>420241 Ну нашёл вроде стрингами можно. class namegen {public: string s[34]} int main() {namegen n; n.s[0]="а"; n.s[1]="б";// как бы весь алфавит закинуть в массив?
Написал прогу решения СЛАУ методом крамера. При определенном наборе чисел появляется ошибка floating point overflow - переполнение разряда. Два дня пытаюсь нагуглить как ее обойти, но все безрезультатно. Подскажите, желательно по проще способы, ибо сдавать работу уже очень скоро
>>421695 Давай код и входные данные, с которыми возникает ошибка. У тебя где-то слишком большое\маленькое число получается, которое не запихнуть в переменную. Попробуй double что ли, если float сейчас используешь.
Не знаю где спросить - спрошу тут. Есть QWebView, есть сигнал linkClicked(QUrl), и есть минибраузер на Webkit, который я пилю. Как в QT определить, происходит переход на другой сайт при нажатии ссылки, или же это просто открывается новая страница на этом же сайте? Там есть что-то готовое, или придется самому писать?
>>421767 я понимаю, что проблема в этом. вопрос - как от нее избавиться, чтобы программа выдавала нужный результат? ошибка появляется в следующей строке (пикрелейтед) double coef = masTmp... здесь я делю следующий элемент в столбце на предыдущий, чтобы вычислить коэффициент, на который затем буду умножать предыдущую строку и вычитать ее из следующей, дабы привести матрицу к треугольному виду
>>422362 У тебя с английским проблемы, или ты просто дебил? >Yes, it is possible to avoid floating-point overflow. However, the appropriate method for doing so depends on your application. In an application where the ranges of the numbers are known in advance, it may be appropriate to design calculations that do not encounter overflow. If an application must handle general calculations that it cannot easily control, it may be appropriate to test for overflow at certain points, adjust the numbers to avoid it, and retain additional information to correct the results later. Or it may be appropriate to design one’s own system for floating-point arithmetic. >Да, избежать floating-point overflow можно. Однако, способ сделать это зависит от твоего приложения. В приложении, где диапазоны чисел заранее известны, можно выстроить вычисления таким образом, чтобы избежать переполнения. Если приложение должно выполнять вычисления, которые непросто контролировать [твой случай, видимо], то следует проверять переполнение в определенных точках, подправлять числа во избежание переполнения и сохранять дополнительную информацию для корректировки результатов в дальнейшем. Или еще можно реализовать собственную систему для арифметики с плавающей точкой [а лучше воспользоваться готовыми библиотеками].
Привет, анончики. Успел поработать уже в направление кодинга по С++ и С. Работал в компании, к-я занималась Android планшетами, портировал с АОСПа на дерьмовые китайский планшеты. В основном допиливал различные драйвера и переносил китайские костыли, дабы это заработало. Так же постоянно пилю всякие свои программы. Понимаю, что программист должен выбирать инструмент под задачу, да только всё стараюсь пилить на крестах, чтобы углубить свои знания. Читаю кучи книг по алгоритмам, подводным камням и т.п. Вчера у меня немного полыхнуло, когда я понял, что пилю парсер пары сайтов для сбора статистики на С++. В основном разными "самоделками" пользуюсь я, да пара друзей. Подскажите, есть ли аналогичный язык, к-й позволит иметь кроссплатформу на деле не так часто нужна работа под линукс, но иногда необходима, т.к. ноут у меня очень слабый и на нём стоит линукс, язык должен быть компилируемым и не должно быть прослойки, как в JVM.
Пока из всего, что я пробовал доставил больше всего питон. Но это скрипты, а дрочить PyToExe как-то не православно, как и заставлять знакомых под виндой ставить себе интерпретатор. Но пока это лучшее, что я встречал. Есть ли какой-то путь?
if (side == 1) return true; else if (side == 2) return false; else cout << "Для выбора цвета необходимо ввести 1 или 2" << endl << endl; }; }
Проблема, по ходу, с cin << и типом данных, потому что программа иначе себя ведет, если установить side в тип char. Короче, если пользователь вводит некоторое число, кроме 1 и 2, ему предлагают заново ввести число и все тип топ. Но если на ввод подается буква - начинается лютый пиздец с бесконечным потоком "выберите цвет". Если из инта сделать чар, то при вводе нескольких цифр/букв нас спросят про цвет ровно такое же количество раз. Почему так?
>>422536 Ну мне интересен именно более удобный инструмент. С требованиями, к-е я описал. Как бы то ни было, но решение простейших задач решается в большее кол-во строк. На питоне тестил формошлёпство через tkinter и работу с HTTP. По сравнению с теми же wxwidgets и QT всё делается гораздо удобнее. Хотя большие проекты на питоне, скорее всего, выглядят как говно. Может правда есть что-то, что имеет массу простых средств, при этом быстро работает и не требует писать тонны строк? Способное работать под Линем и виндой, не тянущее за собой подобие JVM и разные интерпретаторы.
Подскажите как на Qt сделать приложение на андроид. Как там вообще обычные виджеты будут выглядеть? У меня сомнения. Нужно например сделать календарь, сетку дней как в стандартном приложении Calendar. Qt вообще приспособлено для этого или придётся что-то другое учить?
Продублирую, пожалуй, из ньфаготреда: Борщ погромач! Есть один проект на плюсах под 2010 студию, есть dll используемые в проекте. Возможно ли как-то принудить студию включить эти dll-ки в готовый бинарник, именно внутря бинарника, а не просто в целевой каталог скопировать при постбилде, и как это сделать?
>>422978 Компилируй из сырцов в статику или делай дропболл, который будет распаковывать все твое говно, в тмп или сразу в память, и запускать его. Касаемо последнего способа, есть инфа, что будешь послан нахуй антивирусом. Еще есть либы dllpack и dll2. Ну а вообще, нахуй это надо-то?
>>422981 > Компилируй из сырцов в статику Ебааать я дебил! Добра тебе анон!
> Ну а вообще, нахуй это надо-то? Небольшая прога, которая таскает за собой opencv, а последняя представляет собой кучу dll-ок, если использовать больше 1-2 функций. Да, там есть прямо из коробки скомпиленные либы для статической линковки, но я: 1 — Забыл про них; 2 — сделал несколько мелкоправок вставил костылей и грабель, ага.
Котаны, объясните маминому погроммисту-перваку, почему моя программа так странно себя ведет? А именно, появляются неизвестно откуда берущиеся пробелы и запятые. Понимаю, что дело в потоке, но нихуя об этом не знаю, а рандомное использование слов, найденных в интернетах, лишь усугубляют ситуацию - после того, как в 27 строчке дописал "cout.clear();", мой код вообще перестал отображать вводимые мною символы, даже перепостроение не помогло. VS2008, если это имеет значение. http://pastebin.com/MGb4E24Y
Плюсаны, мне оче стыдно, я уже пару лет пишу сурьёзный говнокод на крестах, но так и не знаю, как посмотреть код STL. Например, хочется мне узнать, как в std::list работает метод size(). В своём модном QtCreator по F2 открываю файл stl_list.h, вижу в реализации return std::distance(begin(), end()); Далее хочу посмотреть, что такое std::distance, но тут Qt по F2 уже ничего не находит. Что за хуита? Где мне посмотреть реализацию std::distance?
>>423321 Это проблемы QtCreator'а. Ты, наверное, шаблонный код не часто в нем пишешь. Он большую часть кода из Буста, к примеру, не видит. Приходится в слепую писать. Что с этим делать не знаю, я уже давно смотрю какую-нитбудь IDE на замену. Но пока остальные не вставляют сразу, а разбираться как-то лень.
>>423357 А, кстати. Если у тебя из чужого хидера что-то не видно, то просто напиши где-нибудь у себя эту функцию/класс/etc и тогда жмакни F2. Часто помогает. Вот я смог так std::distance посмотреть. Если коротко, то там ничего такого нет, просто return last - first;
>>423495 Охуеть, каких петушков сюда завезли. Сначала приходит и сикает на всех, а потом обвиняет в агрессии. Маня, нахуй ты тогда вообще сообщение написал?
>>422724 2gis поставь для примера, он на Qt построен. Внешне отличается от обычной жабапрограммы. Прокрутка списков хуёвенько реализована, в частности.
Привет. Я тут перекатываюсь на плюсы и у меня появились 2 вопроса: 1) Мне нужно написать приложение c OpenGL под винду. Мне не хочется разбираться с Qt, поэтому, собственно, спрашиваю: Какую технологию мне юзать? Думал над WinForms в VS, но я не понял, как там настроить контекст(ну, в какой элемент и как выводить графику). Посоветуйте что-нибудь пожалуйста. 2) Есть возможность получить 2 книги: Modern C++ Design: Generic Programming and Design Patterns Applied - Andrei Alexandrescu и C++ Coding Standards: 101 Rules, Guidelines and Best Practices - Gerb Sutter Стоит ли их читать? Пока что прочёл Шилдта по С++ и Effective C++ Мэйерса. А, и еще. Что стоит прочитать по С++11/14? Или может просто еще какие-то полезные книги/источники посоветуете?
>>424253 А там нету встроенных часов? Просто sleep(10 часов) выглядит устрашающим. К тому же твой код будет зависеть от того, когда ты включишь девайс. Я бы делал while(clock::now() < 23:00) sleep (10 секунд)
>>424364 В хедере, ибо тот, кто будет использовать твой код ололо, никто не должен без надобности лезть в твой cpp-файл. Что уж говорить о том, когда ты поставляешь либлиотеку. >>424253 Алсо, поясни за ардуину. Это то же самое, что и распберри пи? На чём там можно код писать? Я задумываюсь взять, но боюсь, что в итоге будет на полке стоять грузом.
Програмач, помоги с wxWidgets. У меня есть главный Frame, он идет wxBORDER_NONE. Протрахав мозги с возможностью таскать это окно, я подсмотрел в примере и сделал таки. Но! Окошко можно затащить за панель таскбара, и потом оттуда хрен вытащишь. Нативные окна затащить туда нельзя, курсор останавливается на границе с таскбаром, вот хочу так же сделать, но не знаю как. Пробовал через wxDisplay, но у меня руки из жопы, ничего хорошего не получилось. Спаси, анон! BTW: Если ты хорош в С++, ООП и wxwidgets, и не прочь оказать мне помощь по этим вопросам - оставь контакты, за беспокойство заплачУ.
>>424552 >>QT >Это и есть корень проблемы >>GTK >Это и есть корень проблемы >>C++ >Это и есть корень проблемы
Большинство проблем мне решить удалось, да и то, они возникали и возникают из-за моей неопытности, ибо я похапе-быдлокодер:) Своими силами они решаются очень долго, а мне надо побыстрее, поэтому готов вознаграждать за помощь
>>424666 >666 Сатана, простой вопрос, как бы мне считать посимвольно ввод чаров, но записать его в одну ячейку массива как целое слово. Вот держи, пока что записывается просто символ. Там с коментами. Кстати забыл сказать, что язык параша СИ. Если кто может помочь, то пожалуйста сделайте это. http://pastebin.com/hjt87MgR
>>424669 >>424671 У тебя какой-то дерьмовый код, ну да ладно. Во-первых, почему у тебя инкрементируется "skokslov" только когда попадается символ новой строки? И потом ты записываешь сивол array[skokslov]? Хуйня какая-то. Ты должен инкрементировать его каждый раз, когда ты получаешь символ. А когда попадается новая строка или пробел, то выходить из своего кривого цикла. Или это какая-то мНоГоХоДоВоЧкА и я просто не понимаю. Во-вторых, хорошо бы проверить что у тебя возвращает realloc.
>>424679 Нет, вопрос же в другом, мне нужно чтобы записывались слова в отдельные ячейки массива, именно поэтому только когда он видит новую строку скокслов инкрементируется, просто посимвольно записываю, если нужно по другому ты скажи.
>>424683 Если я конечно понял, что тебе нужно. Если только алфавитные символы, то всё ок. Если ещё и цифры нужны, то добавь isalpha(input) || isdigit(input)
>>424687 Ну смотри, задание такое, на input идут слова, допустим так. Vsem privet ITT И я хочу, каждое слово записать строкой в отдельную ячейку массива, так чтобы, массив[0]='Vsem', массив[1]='privet', массив[2]='ITT". Вот что я хотел. Но вместо этого у меня получается записать только один символ из слова.
>>424688 Ты понимаешь, что в С нету string? У тебя массив символов. Чтобы сделать массив строк - тебе нужно создать массив массивов char. То-есть что-то типа этого: char array = (char) malloc(кол-во слов); for(int i=0; i<кол-во байтов; ++i){ array = (char)malloc(кол-во символов в слове); } И дальше как-то там заполняешь.
>>424689 Сука, лол. Все символы сбились нахуй. Секунду. http://pastebin.com/YEQauf3s Дальше подумай сам как и когда там удлинять массив/добавлять в него что-то.
>>424690 В общем, тебе нужно немного поменять. 0) Создай массив, как я тебе написал небольшой длины. Например, кол-во слов = 1, длина этого слова = 10. 1) Создай переменную index. 2) Каждый раз, когда ты считываешь нужный тебе символ, инкрементируешь index и записываешь его в array[номер слова][index] = символ. 3) Если длины слова не хватает(index больше его длины при инициализации) - делаешь realloc. 4) Когда попадается символ пробела или новой строки - обнулешь index, делаешь realloc для кол-ва слов(в начале у тебя 1 строка), инкрементируешь номаер слова. Дальше повторяется всё заново.
>>424696 Тупой вопрос, но, ведь это получится не двойной массив, а массив массивов? Как мне его допустим вывести, чтобы просто все слова вывелись? что то вроде, пока не пустое место - массив выводи?
>>424707 Бля. Только сейчас фэйл заметил. Строка 19. Нужно заменить (array)[rows_amount] = (char) malloc(sizeof(char)100); на (array)[rows_amount] = (char) malloc(sizeof(char)strlen(line)); Дабы выпилить ограничение на длину строки.
Ну и проверки на маллоки и реаллоки хорошо бы тоже иметь, но для лабы норм.
>>424708 Сука. Ни [code], ни звёздочек. Абу мудила. Ну ты понял. Вместо статики на 100 символов, выделяется кол-во байт, к-е занимает строка. Всё остальное похерил Абу.
Суть такова. Функция при конструировании объекта передает конструктору число полученное при помощи rand(). Результат при каждом вызове rand() один и тот же. srand( time(NULL) ) прописал . ЧЗХ? http://ideone.com/j3dwRO
>>425023 Напиши srand не в функции генерации, а где-нибудь пораньше. А то получается, что он вызывается каждый раз и потом сразу rand. То-есть там разница получается одна и та же.
Программач, ночь не спал, помоги. Есть один класс в нем есть map typedef struct NewStruct{ unsigned id; } STRUCTAZAZA; typedef map<size_t,NewStruct> NewType1; class class1 { NewType1 _mapStorage; }
Как правильно организовать доступ к _mapStorage соблюдя инкапсуляцию, или просто нахер её и набыдлокодить прямой доступ к переменной класса?