М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 7 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

75 Кб, 400x400

C++ #52 19 Май, 19:47 #993446 В конец треда | Веб

Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/

Прошлый >>979476 (OP)

Теги: кресты, cpp

Ответы994280996212996887997480

19 Май, 20:43 #2 #993469

Я тут читал гайд по правильному оформлению кода, да и от других подобное слышал то что строки более чем из 80 символов следует переносить на новую строку. Стоит ли это делать? И что если у меня блоки кода только уходят на 40 символов? Как тогда переносить код?

Ответы993481993489993512993517993735

19 Май, 21:05 #3 #993481

>>993469
Твоё только в /dev/null переносить.

Ответы993485

19 Май, 21:07 #4 #993485

>>993481
Твой мозг уже там

19 Май, 21:18 #5 #993489

>>993469
да

19 Май, 22:10 #6 #993512

>>993469
В фирмах, где макакам выдают мониторы моложе 2002 года, и которые больше 19" в диагональ, обычно строку делают в 120 символов. Но, можешь не волноваться, тебя даже в самый закудышный бодишоп не возьмут.

19 Май, 22:23 #7 #993517

>>993469
http://e-maxx.ru/bookz/files/golub_cord.pdf

20 Май, 00:48 #8 #993595

Ононы, как в визуалке 2010 года можно сделать чтобы по нажатию на button отредактировало в определенных местах готовый word документ?
Добавил СОМ-ссылку Microsoft Office 14.0 Object Library и Microsoft Word 14.0 Object Library, ничего не выходит.
Пробовал делать по учебнику MS Visual C++ 2010 в среде .NET. Нихуя не вышло. Шляпа срочно нужна для диплома, но в С++ я ни в зуб ногой.

Ответы993609993628

20 Май, 01:09 #9 #993609

>>993595
OLE Automation

Ответы993617

20 Май, 01:18 #10 #993614

Почему не получается функцией WriteConsoleOutbutA вывести символы псевдографики?
Вместо этого выводит знаки вопроса или какую-то мишуру, в зависимости от шрифта. В то время как тот же набор данных выводится обычным cout безупречно, да и другие символы вроде латинских букв выводятся WriteConsoleOutbutA как надо. В чем проблема?

Ответы993618993633993663993755

70 Кб, 673x483

20 Май, 01:20 #11 #993617

>>993609
Нету такого.

Ответы993624

20 Май, 01:22 #12 #993618

>>993614
>Вместо этого выводит пробелы, знаки вопроса или какую-то мишуру, в зависимости от шрифта.

20 Май, 01:30 #13 #993624

>>993617
В COM-компонентах.

Ответы993637

20 Май, 01:43 #14 #993628

>>993595
Вообще на крестах это писать - ад, лучше всего на c# бахнуть или js+activex.
Вот по шарпу мануал
https://support.microsoft.com/en-us/help/316384/how-to-automate-microsoft-word-to-create-a-new-document-by-using-visual-c

Ответы993637

20 Май, 01:49 #15 #993633

>>993614
Опять эти спермоклоуны со своей командной строкой из 1992 года

Ответы993645

20 Май, 01:58 #16 #993637

>>993624
Одновременно чекал. Там тоже нету.

>>993628
Дак сказали эту хуйню на ЗИБЛЮЗБЛЮЗ писать. Был бы выбор - писал на своем питоне или шарпе.

Ответы993724993726

20 Май, 02:31 #17 #993645

>>993633
Сказал прыщеклован, у которого и в 2017 ничего, кроме командной строки, толком и нет.

Ответы993754

3 Кб, 121x162

20 Май, 06:15 #18 #993663

>>993614
Это какой-то пиздец, господа. Переключил я шрифт сосноли с точечного на lucida - пробелы превратились в вопросики. Запустил программу еще раз - теперь все нормально отпечатано, в lucida. Поменял шрифт на точечный, точно такой же, какой был изначально - и теперь символы выглядят нормально и на изначальном шрифте. Запустил программу в третий раз - и теперь все символы отображаются на изначальном шрифте без переключения шрифта. Что это за хуйня? Как это работает? Как мне создать приложение, которое, например, выводит cp437 на дефолтном шрифте с любого компьютера без ебатни со шрифтами, бесплатно без формочек и юникода?

Ответы993665993668993755994765

20 Май, 06:17 #19 #993665

>>993663
Ах тыж блять, запустил программу в четвертый раз, и снова вместо символов пробелы. Что за ебаный пиздец?

Ответы993666

20 Май, 06:29 #20 #993666

>>993665
Нашел новую деталь: эти символы отображаются как пробелы только в точечном шрифте 8х12. Вернее, не все, а все, кроме вот этого: . Поэтому в моей коробке всегда рисуется только верхний правый угол.
Так вот, в точечном шрифте 7х12 все символы отображаются как , кроме того самого уголочка, который стойко держится в верхнем правом углу. При чем они не только превращаются в треугольники при переключении шрифта, но и остаются такими при перезапуске программы.
5x12 - аналогично.
8x9 - снова пробелы.
6х9 - то ли снова треугольники, то ли запятые какие-то, мелко, плохо видно. Угол на месте.
16x8 - пробелы.
4х6 - походу, треугольники, мелко пиздец.
16х12 - пробелы.
12х16 - ну вот тут уже точно апострофы или запятые развернутые.
10x18 - треугольники.

Продолжаю зоонаблюдения и запрашиваю помощи.

Ответы993667

20 Май, 06:31 #21 #993667

>>993666
Пиздец, макаба не пускает символы. Короче, угол который отображается - в таблице https://en.wikipedia.org/wiki/Code_page_437 под номером 187. Треугольник - 31.

20 Май, 06:41 #22 #993668

>>993663
Нахуя тебе все это сдалось?! Сделай, если уже так надо, свою псевдо-консоль на гуе, если ты там какой-то рогалик пилишь или что. На винде командная строка КОНЧЕНАЯ, это тебе не zsh или bash хотя бы.

Ответы993671993756

20 Май, 06:50 #23 #993670

Еще одно зоонаблюдение: если ставить цп сосноли через SetConsoleOutputCP или system("chcp 437") (не имеет значения) - то символы перестают отображаться даже при cout. Если убрать это и оставить дефолтную 866, то символы отображаются через cout безупречно.

20 Май, 06:50 #24 #993671

>>993668
Есть какой-нибудь гайд, как так сделать? Был бы премного благодарен.

Ответы993732993757993778993781

20 Май, 09:07 #25 #993683

Здравствуйте, не подскажите какой-нибдуь ресурс по созданию GUI приложений на QT либо на VS. Буду очень благодарен!

Ответы993700994803

20 Май, 10:20 #26 #993700

>>993683
> не подскажите какой-нибдуь ресурс по созданию GUI приложений на QT
doc.qt.io

Ответы994803

20 Май, 11:45 #27 #993724

>>993637
Ну вот просмотри. Можёт что наковыряешь.
https://code.msdn.microsoft.com/office/CppAutomateWord-28938be1

Ответы993795

20 Май, 11:48 #28 #993726

>>993637
Вот ещё мануал.
https://support.microsoft.com/en-us/help/316587/how-to-automate-embedded-office-activex-documents-with-c

Ответы993795

20 Май, 12:08 #29 #993732

>>993671
Гайд хз, но думаю чувак предлагает через winapi создавать окно, сделать его черным, и имитировать командную строку окном с текстовым полем внутри главного окна шириной в всё окно и высотой с 1 символ

20 Май, 12:17 #30 #993735

>>993469
Строки должны быть такие, чтобы при их чтении целевой аудитории не приходилось водить горизонтальный скролл туда-сюда. Из этого выходит:
Если ты пишешь говнокод в стол - длина любая.
Если ты в закрытой конторе, и у всех стоят одинаковые мониторы, и никто не пользуется разделением окон - тогда на всю ширину ваших мониторов.
Ширина в 80 символов была придумана хуилион лет назад, когда нужно было выбрать минимально читаемый размер символов для консольных терминалов. Собственно, это просто стандарт, который актуален, если иное не указано.
Лучше, если чтение кода даже не будет заставлять двигать глаза по горизонтали.

В любом случае, правила написания кода нужны для того, чтобы код удобно было читать.

20 Май, 13:13 #31 #993754

>>993645
Спермодебилу НИБАМБИТ

20 Май, 13:13 #32 #993755

>>993614
>>993663
Спермодебилы, обсуждайте WinAPI и спермопроблемы проблемы в /s/

20 Май, 13:18 #33 #993756

>>993668
> На винде командная строка КОНЧЕНАЯ
Говорят, с полгода назад она начала поддерживать управляющие ASCII-коды. Всего-то 40 лет прошло с момента принятия стандарта.

20 Май, 13:30 #34 #993757

>>993671
Я бы ради прикола завел все на OpenGL, но еботы с этим, конечно же, прибавится, хотя, в целом, ничего сложного быть не должно. Плюс опыта в корзину (научишься шрифты рендерить и рисовать полигоны текстурированные).
Я бы, может, такой хуйней сам занялся. Да лень пиздец. Пойду лучше посру.

20 Май, 13:36 #35 #993759

Как можно замерить время выполнения функции?

Ответы993762

20 Май, 13:50 #36 #993762

>>993759
http://www.cplusplus.com/reference/chrono/

20 Май, 14:36 #37 #993778

>>993671
http://www.libsdl.org/
http://lazyfoo.net/tutorials/SDL/index.php
https://habrahabr.ru/post/198600/

20 Май, 14:50 #38 #993781

>>993671
Если у тебя десяточка, включай WSL и наслаждайся рабочей консолью и соответствующим стандарту компилятором.

40 Кб, 683x390

--- 20 Май, 15:09 #39 #993793

С помощью каких алгоритмов это можно реализовать? Зачет горит.

Ответы993796993799993802993866

20 Май, 15:17 #40 #993795

>>993724
>>993726
Скачал какую-то библиотечку. Нихуя не понял. Не осилил.

20 Май, 15:18 #41 #993796

>>993793
Это матан
Какие нахуй алгоритмы?

Ответы993798

20 Май, 15:20 #42 #993798

>>993796
Это линал
Какой нахуй матан?

Ответы993863

20 Май, 15:23 #43 #993799

>>993793
google -> line segment intersection

20 Май, 15:42 #44 #993802

>>993793
мне в свое время сильно помог этот ответ: http://stackoverflow.com/a/565282

20 Май, 16:09 #45 #993810

В заочном тестовом задании мне надо было разработать класс. В ТЗ были указаны конструктор по умолчанию, конструктор копирования и деструктор. Чтобы соблюсти правило трех, я добавил еще оператор присваивания (было разрешено добавлять свой функционал). Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещении для правила пяти, если меня об этом не просили?

Ответы993812993813993814993836

20 Май, 16:10 #46 #993812

>>993810
> Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещении
Вряд ли они знают, что это такое.

20 Май, 16:11 #47 #993813

>>993810
Конечно стоит, иначе не пройдёшь тест.
директор-той-конторы

20 Май, 16:13 #48 #993814

>>993810
Правило пяти нужно для того, чтобы вспоминать о нем, когда класс становится реально сложным.
В твоем примере ты можешь их добавить, чтобы показать что ты о нем знаешь. А так, если бы ты делал это для себя, то не надо.

20 Май, 17:07 #49 #993831

Как узнать количество определенного символа в одной строке?

Ответы993832

20 Май, 17:08 #50 #993832

>>993831
http://stackoverflow.com/questions/3867890/count-character-occurrences-in-a-string

20 Май, 17:14 #51 #993836

>>993810
>> В заочном тестовом задании мне надо было разработать класс
>> было разрешено добавлять свой функционал
Охуеть задачи, одна охуительнее другой.

20 Май, 17:25 #52 #993842

Как вы парсите строки?
Хочу читать OBJ файлы, у которых обычно они имеют вид: <тип данных> <данные>
Пока есть идея завести словарь из строковых литералов типов и лямбд для разбора данных.
Получился вот такой пиздец https://pastebin.com/NQvtWifE
Есть идеи получше?

Ответы993865

20 Май, 17:51 #53 #993863

>>993798
Это аналгеом какой линал?

20 Май, 18:02 #54 #993865

>>993842
С таким же успехом можешь использовать указатели на функции, которые можешь разместить в анонимном пространстве имен, вместо того, чтобы использовать функциональные объекты (хотя, расходы будут небольшие, если лямбды помещяются в кусочек выделенной памяти функциональным объектом, однако здесь это не то место, где нужно искать оптимизации).

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

Ответы993923

20 Май, 18:05 #55 #993866

>>993793
Пиздец какой-то, какие-то наложения, числа, перечения. В выводе вообще цифры какие-то, нихуя не понял. Чему вас там учат?

Ответы993895

130 Кб, 1073x420

188 Кб, 684x667

20 Май, 19:08 #56 #993894

блядь, что не так то?

Ответы994114

20 Май, 19:18 #57 #993895

>>993866
>Чему вас там учат?
Это называется утилизацiя человечишков. Чтобы не мешались под ногами у номенклатурных сынков и дедков со связями в ЦК КПСС.

20 Май, 20:13 #58 #993917

Нужен ли деструктор в собственном итераторе?

20 Май, 20:24 #59 #993922

>новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими.
Несколько неправда.

20 Май, 20:28 #60 #993923

>>993865
>если уж в c код полез
Где, например?
Мне наоборот хочется в стиле плюсов делать, только что-то не понимаю что это значит.

Ответы993925

20 Май, 20:34 #61 #993925

>>993923
Да хоть те же регекспы.

20 Май, 20:36 #62 #993926

Если я напишу

typedef unsigned int zalupa;

То zalupa будет читаться как "unsigned int"?

Ответы993927

20 Май, 20:36 #63 #993927

>>993926
да. Но вообще, сейчас уже не 1999 год, по-этому
using zalupa = unsigned int;

Ответы993928

20 Май, 20:38 #64 #993928

>>993927

Здорово! Спасибо.

20 Май, 21:20 #65 #993935

Как на последний Visual Studio установить этот самый сишарп?
У меня уже дикий бугурт, ничего непонятно.

Ответы993938993939993942

20 Май, 21:27 #66 #993938

>>993935
Visual Studio 2015 Community, всё есть там из коробки. Проследуйте к шарпоёбам за деталями.

Ответы993939

20 Май, 21:32 #67 #993939

>>993935
>>993938
Орнул с даунов

Вызовите мастера-программиста на дом и он вам за пятихаточку всё сделает

20 Май, 21:37 #68 #993942

>>993935
Ай блджад, тредом промахнулся, сорри

20 Май, 23:32 #69 #993984

Создаю объект:
``
angle = new ModelAngle();
fprintf(stderr, "angle = %X\n", angle);
``

В его конструкторе:
``
ModelAngle::ModelAngle()
{
fprintf(stderr, "ModelAngle = %X\n", this);
}
``

И что ж я вижу?
``
ModelAngle = 1F31160
angle = 1F31180

``

Ну и при удалении:
``
Error in `./a.out': double free or corruption (out): 0x0000000001f31180
``

Почему адреса не совпадают?

20 Май, 23:32 #69 #993984

Создаю объект:
``
angle = new ModelAngle();
fprintf(stderr, "angle = %X\n", angle);
``

В его конструкторе:
``
ModelAngle::ModelAngle()
{
fprintf(stderr, "ModelAngle = %X\n", this);
}
``

И что ж я вижу?
``
ModelAngle = 1F31160
angle = 1F31180

``

Ну и при удалении:
``
Error in `./a.out': double free or corruption (out): 0x0000000001f31180
``

Почему адреса не совпадают?

Показать весь текст
Ответы993985

20 Май, 23:37 #70 #993985

>>993984
Братишка, жахни через ideone.

Ответы993999

20 Май, 23:57 #71 #993999

>>993985
https://ideone.com/AbcCuC

Ответы994004994007994109

21 Май, 00:05 #72 #994004

>>993999
Ну тут на 8 байт отличается, а не на 32, но всё равно отличается.
Я где-то с наследованием накосячил?

21 Май, 00:14 #73 #994007

>>993999
Да, в моём коде у базового класса полей на 24 байта. Вот и разница на 32 байта.
Это же 8 байт - длина указателя vtbl? Или чего? Почему так?

Ответы994018

21 Май, 00:35 #74 #994018

>>994007
http://stackoverflow.com/questions/22256620/why-pointers-to-the-same-object-have-different-values

По поводу падения программы: на Angle нужен виртуальный деструктор.

Ответы994061994097994115

21 Май, 09:39 #75 #994061

>>994018
А ведь ты прав.
https://ideone.com/VuJKVb

21 Май, 12:19 #76 #994094

Анон, есть пера вопросов.

Если член класа это вектор. Нужно ли его руками очищать в деструкторе?

И второй вопрос. Есть класс, который содержит некоторые поля и другой объект.

class A {
private:
int x;
B b;
}

Как объект B может получить доуступк х?

Ответы994098994100

21 Май, 12:25 #77 #994097

>>994018
Хм, и правда. Но адреса всё равно не совпадают.
То есть указатель на Angle на 8 байт (vtbl?) отличается от указателя.
То есть, указатель на Angle в принципе не должен знать, что этот Angle является ещё и ModelDevice?

И таки да, если изменить порядок наследования, адреса совпадают.

21 Май, 12:26 #78 #994098

>>994094
Передаешь в класс B указатель на класс A. Объявляешь хоть где в декларации класса дружественный класс, то есть friend class B; Тогда B будет иметь доступ КО ВСЕМ членам класса А.

Ответы994106

21 Май, 12:30 #79 #994100

>>994094
>Если член класа это вектор. Нужно ли его руками очищать в деструкторе?
Не нужно. Деструктор вектора сам удалит своё содержимое. Другое дело, если вектор хранит указатели на объекты в куче, которые ты создавал через new. Тогда да, их надо удалять самому.

>Как объект B может получить доуступк х?
Лолникак. Объявить friend class B внутри A. Только по-моему это говорит о том, что ты что-то делаешь неправильно.

Ответы994106

21 Май, 12:36 #80 #994106

>>994100
>>994098
Спасибо.

>Только по-моему это говорит о том, что ты что-то делаешь неправильно.
Вероятней всего.
У меня следующая проблема. Есть вектор с объектами и все эти объекты должны использовать несоклько общих переменных. Сделать через глобальные переменные - некрасиво. А как правильно?

Ответы994220

21 Май, 12:46 #81 #994109

>>993999
Probeloblyad is not a men.

21 Май, 13:01 #82 #994114

>>993894
Добавь boost_system в линкер

21 Май, 13:02 #83 #994115

>>994018
Во, и если сделать
delete(dynamic_cast<ModelAngle*>(angle));
то тоже всё работает.

7 Кб, 505x385

21 Май, 13:51 #84 #994140

Господа, прошу, я заебался. Ну не понимаю я что происходит.

Фишка в чём? У меня программа... работает. Но она не работает под убунтой и вообще на университетских компьютерах. Не работает и в IDEONE (ну, там тоже gcc++).
Я даже почти уверен, что я действительно не прав и то, что программа работает у меня и одногруппников - заслуга, скорее, компилятора, чем моя. Прошу, помогите.
Правильный вывод - на пике.

Текст программы (ну, последнее изменение):
pastebin.com/Ys6u2W9b

Ошибки в IDEONE
Прошлая версия: http://ideone.com/FwMMBa
Последняя версия: http://ideone.com/zdkbHQ

Ответы994158994188994190

21 Май, 14:01 #85 #994146

Инициализация переменной – это?
1 Каждое присвоение ей значения
2 Последнее использование переменной
3 Объявление переменной
4 Первое присвоение ей значения

Ответы994153994156

21 Май, 14:11 #86 #994153

>>994146
3 и 4 одновременно.

21 Май, 14:15 #87 #994156

>>994146
4

21 Май, 14:24 #88 #994158

>>994140
В рализации функции которая начинатеся с 15 строки нет возвращаемого значения, тогда как сигнатура требует. Получается UB (скорее всего все кончается разименованием нулевого указателя) поэтому результаты в разных компиляторах разные. Тот в котором работает (скорее всего) отпимизирует код выбросив нахуй код с UB (хитрожопые оптимизирующие компиляторы такое любят), потому и кажеться что "работает". Если интересно можешь изменить 392 строку на что-то типа cout << endl << a << endl << "TEST" << endl; и запустить на компиляторе на котором "работало" чтобы посмотреть как работает теперь.

Ответы994159994175

21 Май, 14:26 #89 #994159

>>994158
Почему она вообще скомпилировалась? Всегда же ругается, если не выводится ничего.

Ответы994168994170994175

20 Кб, 1067x343

21 Май, 14:35 #90 #994167

Зочем писать произвольный блок кода не связанный ни с каким оператором в фигурных скобках?

Ответы994172994173

21 Май, 14:36 #91 #994168

>>994159
Предупреждения зависят от ключей. Почти что самые параноидальные - -Wall -pedantic для gcc.

21 Май, 14:37 #92 #994170

>>994159
Всегда ругался скорее всего статический анализатор твоей IDE. А комплятору похуй. В gcc вроде можно ворнинг включить. Ну и в main стандарт разрешает не писать return - должно добавляться return 0.

21 Май, 14:38 #93 #994172

>>994167
Чтобы переменные разрушались, и освобождалось место и другие ресурсы, связанные с переменными (мьютексы, например).

Ответы994174

21 Май, 14:39 #94 #994173

>>994167
Чтобы ограничить видимость переменной dos_header или чтобы переменная dos_header уничтожилась сразу а не в самом конце выполнения функции (внешнего блока кода).

Ответы994174

21 Май, 14:39 #95 #994174

>>994172
>>994173
А, типа скоуп такой неявный? Спасибо.

Ответы994184994187

21 Май, 14:41 #96 #994175

>>994158
>>994159

Окей, допустим. Но умножение-то всё равно не правильно работает (в последней версии), а если брать старую, то там всё равно ошибка двойного освобождения памяти. И у меня, хех, всё ещё работает
http://ideone.com/v6ClEO

Ответы994177

21 Май, 14:41 #97 #994177

>>994175
*неправильно
А сылка на старую-исправленную

21 Май, 14:56 #98 #994184

>>994174
В нём нет ничего неявного. Фигурные скобки - это блок кода (statement по стандарту, ЕМНИП), а не часть while-if-чототам. while и for могут быть вообще без фигурных скобок.

21 Май, 15:01 #99 #994187

>>994174
Это скоуп явный.

21 Май, 15:10 #100 #994188

>>994140
> Фишка в чём? У меня программа... работает.
Хуй с два. Компилируется ≠ работает.

>pastebin.com/Ys6u2W9b
Ну полюбуйся на отчёт valgrind-а для твоей "работающей" программы. Куча use after free.
http://paste.ubuntu.com/24616911/

Ответы994194

21 Май, 15:11 #101 #994190

>>994140
>я заебался. Ну не понимаю я что происходит.
Для этого придумали valgrind.

Ответы994194

21 Май, 15:18 #102 #994194

>>994190
>>994188

Ну, она выдаёт тот результат который нужен - значит работает. Просто не везде и через жопу.

>valgrind
Я даже не знаю, что это. Погуглю.

>use after free.
Ну, это довольно очевидно учитывая ошибки двойного осовбождения в другом компиляторе. Делать-то что? Я не понимаю что я делаю не так. Возможно, потому, что я мыслю категориями языков в которых нет ебучих указателей и ссылок. И где можно спавнить объекты по КД, возвращать объекты(ссылки) на объекты созданные внутри функций и так далее, а они сами уж когда нибудь, когда станут ненужны, исчезнут.
И я всё ранво не понимаю, что происходит :(

Ответы994200994202

21 Май, 15:24 #103 #994200

>>994194
> Делать-то что?
Непонятно, зачем в Vector::copy ты выделяешь/освобождаешь память. Судя по логике работы Vector::operator=, copy должна просто копировать из другого массива.
Подумай над этим.

Ответы994202994203

21 Май, 15:25 #104 #994202

>>994194
>>994200
Переделал твой copy к такому виду:
void copy(int *v) {
for (int i = 0; i<this->n; i++) {
this->v = v;
}
}
Результат налицо: http://paste.ubuntu.com/24616978/

Ответы994206994207994216

21 Май, 15:26 #105 #994203

>>994200
cpp.sh/4fybt

А тут работает. Только с рандомом что-то не так.

>в Vector::copy
Я его вообще сотру если надо. Он был нужен для того куска который уже переписан иначе.

2 Кб, 448x92

21 Май, 15:27 #106 #994206

>>994202
Макака потёрла индексацию

Ответы994287

21 Май, 15:29 #107 #994207

>>994202
хм. Когда-то он выглядел именно так. Но, видимо, была другая ошибка и всё равно ничего не работало. А сейчас она исправлена. Спасибо.
Хотя я всё равно не совсем понимаю. C не может хранить объекты? Он удаляет их сразу после завершения функции? Или что?

Ответы994208

21 Май, 15:30 #108 #994208

>>994207
Ты их удаляешь когда не надо.

Ответы994209

21 Май, 15:31 #109 #994209

>>994208
Я где-то явно писал удаление? о.О

21 Май, 15:38 #110 #994216

>>994202
http://codepad.org/hHhWINzD
IDEONE, кажется, лихорадит, Я попробовал запустить здесь с исправленным copy.
Опять ошибается, там где переопределённое умножение (ну, и, соответственно, те же проблемы будут со сложением и прочим. Понять бы что не так и я исправлю их все)

Ответы994222

21 Май, 15:41 #111 #994220

>>994106
Ну передай указатель на структуру с этими переменными или на каждую переменную, по желанию, в конструктор или через сеттер. И все дела.

21 Май, 15:44 #112 #994222

>>994216
>Опять ошибается
Скомпилировал с -O3
http://paste.ubuntu.com/24617060/

Ответы994227994230

21 Май, 15:52 #113 #994227

>>994222
Единственное, что я могу понять так это то, что в твоём компилировании он всё же запихивает правельные значения (64-8-8-4), в отличии от codepad, у которого там уже лежит стрёмная хрень. Но это и всё.

21 Май, 15:57 #114 #994230

>>994222
http://codepad.org/TwwiR44r
Я вижу ошибки связанные с ostream. Но всё, что я могу придумать - это сделать вот так. И это не поможет с остальным

9 Кб, 851x271

21 Май, 15:57 #115 #994231

Вообще шикарный код.
@return Ничего не возвращает
В конце стоит return, который возвращает.
В начале офигенно сделана проверка на присваивание самому себе. Через оператор ==. Ну, в принципе, сравнивать адрес this с адресом аргумента бессмысленно, т.к. последний передаётся по значению, а не по ссылке.

У Страуструпа, кажется, была имплементация вектора в книге. Почитай, что ли.

Складывается впечатление что тут проще переписать с нуля.

P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.

Ответы994240

21 Май, 16:04 #116 #994238

Можете рассказать о подводных камнях использования std::ofstream?
1. Нужно ли вызывать flush() после каждой записи, зачем он вообще нужен?
2. Что нужно проверять, чтоб понять, что операция прошла успешно? Всякие там good()/bad()?
3. Вообще std::ofstream еще актуален или уже устарел?
4. Позволяет ли он писать внахлёст в середину файла? 5. Чтобы вставить данные в середину файла нужно перезаписать первую половину в новый файл, добавить новые данные, и потом продолжать писать вторую половину?

Ответы994293

21 Май, 16:07 #117 #994240

>>994231
>@return Ничего не возвращает
>В конце стоит return, который возвращает.
Очевидно, потому, что раньше он ничего и не возвращал. Я за сегодня этот оператор трижды переписал пока у меня хотя бы до умножения стало доходить.
>проверка на присваивание самому себе.
Это не она, хех. Это проверка, скорее, в духе "если у них одинаковая длина и каждое значение одинаково, то ничего присваивать и не нужно"

>P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.

Про это как-то не натыкался, но спасибо, это я бы хотел сделать.

Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью. Потому, что я не понимаю, как работает память. Все эи задания с сололёрнов прохожу, но в итоге ничего не могу вынести. Мне бы сдать это и забыть про кресты, но... эх

Ответы994244

21 Май, 16:13 #118 #994244

>>994240
>Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью.
Переписать с нуля, глядя в Страуструпа. Чтоб была нормальная работа с памятью. А арифметические операции добавить можно за 10 минут.

Ответы994251994254

189 Кб, 800x533

21 Май, 16:20 #119 #994251

>>994244
Ну, он милый, конечно, но как это поможет мне получить решение?
А если речь про книгу, то не уверен, что я осилю это в столь сжатые сроки. Или там есть конкретно, хм, глава? Статья? в которой все проблемы решены?

Ответы994252994255994277

21 Май, 16:22 #120 #994252

>>994251
>Или там есть конкретно, хм, глава?
Я не знаю, я же не читал сам.
Но похоже, что 17-я и 18-я.

Ответы994277

21 Май, 16:25 #121 #994254

>>994244
ААААА!
http://codepad.org/7cEMqbmp
Ну тут-то что? Вроде и функций никаких нет трогающих память, а всё равно дрянь какая-то выходит.

При том матрицы, с которых я сегодня начал слизывать вектора, потому, что, очевидно, сам совсем бы проблемами не разобрался - работают прекрасно
http://codepad.org/Jlh479m0

Ответы994261994285994287

383 Кб, 604x604

21 Май, 16:25 #122 #994255

>>994251
http://codepad.org/pgar8feS

Ответы994258

21 Май, 16:26 #123 #994258

>>994255
cпасибо, Иисус. А что ты изменил?

Ответы994259994269

21 Май, 16:26 #124 #994259

>>994258
На деструктор посмотри.

Ответы994262

21 Май, 16:28 #125 #994261

>>994254
>http://codepad.org/7cEMqbmp
http://paste.ubuntu.com/24617287/

21 Май, 16:29 #126 #994262

>>994259
но... блять. Как так-то?
Я думал "деструктор - функция которая вызывается в момент уничтожения объекта", которая нужна, собственно, чтоб очистить память. Разве не нужно там удалить эту штуку?

А если не нужно, то почему в деструкторе матриц (см. выше) это делается и всё работает?

Ответы994263994321

21 Май, 16:30 #127 #994263

>>994262
Он просто стебётся.

Впрочем, можешь выпилить все delete и жить спокойно.

Ответы994264

21 Май, 16:32 #128 #994264

>>994263
:(
Настолько не могу в C, что не понимаю даже шуток про C. Делать-то что?

И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?

Ответы994283994324

21 Май, 16:36 #129 #994269

>>994258
Мне кажется, тут move asignment оператор по умолчанию включается, поэтому всё сыпется.
Но я не смог чёт его добавить в этом редакторе каличном.

Ответы994270

21 Май, 16:38 #130 #994270

>>994269
Если у тебя явно реализован деструктор, move costructor и move assignment не будут сгенерированы.

21 Май, 16:44 #131 #994277

>>994251
>Или там есть конкретно, хм, глава?
>>994252
Можно прямо с 18-й начать, в 17-й вода для полных нубов.

Ответы994283

21 Май, 16:46 #132 #994280

>>993446 (OP)
потсоны помогите пжалста! Призываю всех топ программистов 10000килорублей/сек Короч есть 2стула 2 файла .cpp с основным говнокодом(класс + main) и .h заголовочный в котором прописана функция получения текущего времени... Как в .cpp файле в классе получить результат отработки файла-функции с временем?

Ответы994281

21 Май, 16:47 #133 #994281

>>994280
>Как в .cpp файле в классе получить результат отработки файла-функции с временем?
Вызови эту функцию.

Ответы994338

35 Кб, 379x337

21 Май, 16:49 #134 #994283

>>994277
>18-й начать
Выглядит не совсем так как мне представлялось. Это хоть та книга?

>>994264
Ещё разок обращу внимание на вопрос. И на "что делать", и на второй.

Ответы994288

21 Май, 16:49 #135 #994285

>>994254
Ну ты калич. Зачем с макабы код копируешь?
http://codepad.org/1eK6SvZt

21 Май, 16:51 #136 #994287

>>994254
>http://codepad.org/7cEMqbmp
Лол. Я же сказал, что макака похерила доступ по индексу в copy(). И скинул скрином >>994206

Ответы994289994292

21 Май, 16:51 #137 #994288

>>994283
>Выглядит не совсем так как мне представлялось. Это хоть та книга?
Идёшь по ссылке в ОП-посте и качаешь "Программирование. Принципы и практика использования C++"

Ответы994290

21 Май, 16:51 #138 #994289

>>994287
блё. Я подумал что ты про \t

21 Май, 16:52 #139 #994290

>>994288
действительно

21 Май, 16:54 #140 #994292

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

Спасибо

21 Май, 16:54 #141 #994293

>>994238
1. Делать этого каждый раз не нужно, если есть необходимость записывать данные сразу, делай это после всех необходимых записей, то есть когда необходимые данные будут заполнены, потому что частые вызовы снизят производительность, если ты будешь пихать данные маленькими объемами.
2. Можно проверять, бывает всякое.
3. В стандарте никакой замены ему нету, и, в целом, эта хренотень не поддерживает бинарный формат данных, только текстовый, для сериализации, мягко говоря, годится едва ли, а на самом деле вообще бесполезна чуть менее, чем полностью
4. Все, что позволяют выполнять файловые операции ядра ОС, все это поток и может, так что ответ на твой вопрос - ДА, но только не в случае, если ты открыл файл на append, тогда вся запись будет производиться в конец файла, как бы ты не старался перемещать указатель записи.
5. Нихуя не понял. Ты делаешь ofstream::seekp, чтобы перейти в необходимое место, куда ты будешь записывать (указываешь направление и смещение) и потом проталкиваешь данные в поток. И все, в общем-то.

Ответы994300

21 Май, 17:04 #142 #994300

>>994293
>Нихуя не понял.
Имею в виду, если поток открыт с флагом std::out, то при записи он будет перезаписывать текущие данные файла. В таком случае, чтобы именно вставить, а не перезаписать данные, нужно считать в новый файл до необходимого места, потом вставить новые данные, а потом считать остальное?

И еще вопрос появился: в c++ завезли OpenFileDialog кроме как варианта с MSDN:
https://msdn.microsoft.com/en-us/library/bb776913(v=VS.85).aspx

Ответы994370

21 Май, 17:43 #143 #994320

Псаны, как правильно хранить set ссылок/указателей на объекты?

21 Май, 17:44 #144 #994321

>>994262
В 111 строке ты создаёшь временный объект, копируешь его и удаляешь память, указатель на которую остаётся в `a`.
Ты будешь наступать на те же грабли всегда, когда ты будешь копировать вектор. Чтобы этого не было, сделай конструктор копирования или конструктор перемещения.

Пока ты их не написал, они дефолтные - копируют значения слово в слово, включая указатели, новую память они не выделяют.

В твоём коде Vector не может копироваться и перемещаться, поэтому писать надо по-другому:
Vector a(n) - тут не создаётся временный объект.

В строке 206 тоже временный объект.

Ответы994325994328

21 Май, 17:48 #145 #994324

>>994264
>И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?
1) Да.
2) Кроме того, все копии созданного вектора будут использовать один и тот же указатель.

Ответы994328

21 Май, 17:49 #146 #994325

>>994321
>Сделай консруктор копирования

А это разве не он?
Vector(const Vector& vect) {...}

Ответы994332

21 Май, 17:53 #147 #994327

Как называется код который не разделён на интерфейс и реализацию?

Ответы994329

21 Май, 17:55 #148 #994328

>>994324
>>994321

http://codepad.org/XyP1fsQ9

Вроде тут, после того как тот анон исправил мою copy() нет ошибок. И делиты на своих местах. И, вроде, копирующий конструктор есть. А что там с "одним и тем же указателем" или временными объектами?

Ответы994334

21 Май, 17:55 #149 #994329

>>994327
говнокод?

21 Май, 17:58 #150 #994332

>>994325
Он. Тогда я нихера не понял: ты, вроде, правильно копируешь с выделением второго блока.

21 Май, 18:01 #151 #994334

>>994328
Не обращай внимание, я просто твой код не читал, просто тыкнул пальцем в небо.

21 Май, 18:05 #152 #994338

>>994281
а как ее в классе вызвать?

Ответы994390

21 Май, 19:04 #153 #994370

>>994300
Ну если каретка на начале файла, то да, он будет перезаписывать содержимое. Если ты хочешь стереть файл перед открытием, то используй опцию std::ios::trunc или как ее там. Если ты хочешь записывать поверх имеющихся данных, просто перемещаешь указатель записи при помощи seekp и все.

21 Май, 19:53 #154 #994390

>>994338
https://www.google.com/search?q=c+++function+call+syntax

21 Май, 20:49 #155 #994417

Как дебажить статическую библиотеку? У меня есть приложение, которое использует здоровую либу, и в ней при выполнении срабатывает какое то говно. Как это дело отдебажить? Где ставить точки остановки?

Ответы994432

21 Май, 21:21 #156 #994432

>>994417
Отбой, нашёл.

21 Май, 23:40 #157 #994505

Двач, я что-то не понял, культя что-ли сама при уничтожении виджета не отсоединяет сигналы от лямбд?

Ответы994513994545

22 Май, 00:04 #158 #994513

>>994505
Наркоман чтоли?

Ответы994518994545

22 Май, 00:29 #159 #994518

>>994513
ньюфаг штоле

22 Май, 01:29 #160 #994545

>>994513
Всё, что я выгуглил это вот: https://wiki.qt.io/New_Signal_Slot_Syntax (раздел Disconnecting in Qt5)
> Only works if you connected with the symmetric call, with function pointers (Or you can also use 0 for wild card) In particular, does not work with static function, functors or lambda functions.

>>994505 кун

Ответы994711994747

22 Май, 14:06 #161 #994711

>>994545
Я немножко не понимаю твою проблему. Как ты решил, что соединение не рвётся? Как оно вообще может не рваться, если посылающий объект сдох? Точнее, кто посылает данные, если автор сдох?

Ответы994749

22 Май, 15:33 #162 #994743

Сап, плюсоводы. Как у вас с работой, удаленной работой, вкатыванием без профильной вышки (есть техническая из лютой шараги) и английским(которого я не знаю)? Есть ли смысл продолжать учить, если туповат (память плохая) или мне с плюсами ничего не светит и лучше не выебываться, а учить фронтенд?

Ответы994767994792

22 Май, 15:33 #163 #994744

Вместо одного char используют его массивы из-за того, что он только 8 бит хранить может?

Ответы994754

22 Май, 15:53 #164 #994747

>>994545
Нихуя не понял вопрос. char'ы используют для паддингов, нарпример, сетевые структуры в linux'е так задефаны. Если ты используешь char для хранения переменной, то, как правило, компилятор будет выделять под него 4 байта, чтобы выравнивать память для быстрой выборки.

Ответы994751994754994757

22 Май, 16:05 #165 #994749

>>994711
Нет, немного не правильно. Сдох объект со слотом, а объект, посылающий сигнал жив. В качестве слота выступала лямбда. Так вот после того, как объект сдох, этот слот всё равно вызывается. Сейчас я накидаю код.
А как решил, что соединение не рвётся? Прога падает

Ответы994753

22 Май, 16:07 #166 #994751

>>994747
Нихуя не понял. Нахуй ты мне про char'ы рассказываешь

22 Май, 16:09 #167 #994753

>>994749
Чтобы отсоединять сигнал при уничтожении объекта, в контексте которого работает лямбда, ты должен передать указатель на контекстный QObject в качестве третьего аргумента, а четвертым - лямбда функцию. И, в общем-то, все дела. Только смотри, чтобы время жизни захваченных объектов лямбда-функцией не истекло до смерти QObject. Короче, что-то вроде такого:

QWidget firstWidget;
QWodget secondWidget;
QObject::connect(&firstWidget, &QWidget::signal, &secondWidget, []() { lambda_call(); });

Ответы994758

22 Май, 16:10 #168 #994754

>>994744 > >>994747

22 Май, 16:19 #169 #994757

>>994747

Я про те случаи, когда в char нужно хранить предложение.

Например, я щас балуюсь, и чар не принимает в себя больше одного символа.

Ответы994759994760

22 Май, 16:20 #170 #994758

>>994753
Блядь, действительно. В глаза ебусь, в доке всё написано. Спасибо, анон

22 Май, 16:21 #171 #994759

>>994757

Хм, если обьявить просто

char A;

То можешь сунуть туда только 1 символ, а если уже

char A[1];

То можно всунуть туда даже больше чем в мамку опа. я любя

22 Май, 16:21 #172 #994760

>>994757
char - это один символ одна буква. Если ты хочешь хранить много букв, но тебе нужен массив букв char'ов
В чём проблема то?

Ответы994761

22 Май, 16:23 #173 #994761

>>994760

Ну, я не знал немного.

22 Май, 16:35 #174 #994765

>>993663
>без формочек и юникода?
>2017
>без юникода
Прими мои соболезнования раз тебе приходится поддерживать легаси.
В ином случае это диагноз.

9 Кб, 301x596

22 Май, 16:53 #175 #994766

Призываю мастера Qt на помощь.
Есть очень странная проблема, в интернете нашёл только одну похожую проблему и то не решили.
Есть на форме textBrowser, в него пихаю текст и ссылки ака окно чата.
Ссылки так - ui->textBrowser->append("<a href="+url+">"+url+"</a>");
Обычный текст вот так - ui->textBrowser->append("me# " + message + "\n");

После открытия ссылки, тобиш после void Chat::on_textBrowser_anchorClicked - весь новый текст, который выводится в textBrowser - становится ссылками с юрл последнего нажатого.

Диплом горит, помогите господа.

Ответы994792994805994809995016995062

22 Май, 16:54 #176 #994767

>>994743
bump

22 Май, 17:59 #177 #994792

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

>>994766
Ты весь код покажи, тут борда с вангами или все еще со кольшиками, как-никак.

Ответы994793994796

22 Май, 18:03 #178 #994793

>>994792
>> школьниками
блеать!

22 Май, 18:09 #179 #994796

>>994792
От кода толку тут мало будет. Потому-что в textBrowser текст отправляется коректно и без ссылок. Сам ебаный textBrowser что-то с текстом делает внутри себя. У него там есть какой-то общий объект для ссылок? И сущность ссылки цепляется к тексту? Я хуй его.

https://pastebin.com/syxkiWNn

Ответы994812

22 Май, 18:11 #180 #994798

Как в VS компилировать код с минимальным размером кроме настроек пикрил?
Какие директивы компилятора нужно использовать, чтобы переменная в в PE-файле была в секции кода, а не инициализированных констант?
Можно ли встроить/переписать себе функции из WinAPI, чтобы не было привязки ко всяким Kernel32.dll, user32.dll, чтоб можно было просто вытащить секцию с кодом из исходного PE файла и вставить её целиком в другую и не ебаться с подгоном адресов функций, импортом и т.п.?

Ответы994799994806

38 Кб, 829x602

22 Май, 18:11 #181 #994799

>>994798
Пикрил, разумеется, забыл

22 Май, 18:30 #182 #994803

>>993683
>>993700
Кьют слишком специфичен и своеобразен. Есть ли что-то ориентированное непосредственно на винду?
Я могу прописывать обьявления окон для каждой кнопки, и даже готов писать свой фреймворк, но мне кажется что должно быть что-то несложное для винды типа эмбаркадеровского vcl или дотнетового фреймворка.

Ответы994804994831

22 Май, 18:31 #183 #994804

>>994803
Именно поэтому С++ для настолок - полное дно.

22 Май, 18:33 #184 #994805

>>994766
Очевидный баг в Qt. Решение:
1) другая версия Qt
2) быстро накатай багрепорт
3) накостыляй какой-нибудь тупое решение типа добавления избыточных </a> в конце каждой ссылки, если это поможет, или ещё что

22 Май, 18:35 #185 #994806

>>994798
Слишком много сложных вопросов.

22 Май, 18:39 #186 #994809

>>994766
Попробуй пока что в отдельное место выводить текст, потом с него уже загружаться. Заодно проще отладить будет, если что.

Ответы994811

22 Май, 18:43 #187 #994811

>>994809
> потом с него уже загружаться
Что ты имеешь ввиду?

22 Май, 18:47 #188 #994812

>>994796
Хуй его знает, я сейчас чекнул я себя, под 5.8 все работает, или ты на говне мамонта 4.8 сидишь, а?!

Ответы994813994815

22 Май, 18:49 #189 #994813

>>994812
4.2.1, не бей, лучше обоссы.

Ответы994814

22 Май, 18:50 #190 #994814

>>994813
Это даже не легаси, это пиздец. Надо было тогда на Qt3 делать, если в жопу полез без мыла.

14 Кб, 477x252

22 Май, 18:51 #191 #994815

>>994812
а нет, обосрался. Кинь прожэкт плс

Ответы994817

22 Май, 18:55 #192 #994817

>>994815
http://rgho.st/7fBqZY4ml

Виджеты Qt, которые не-QML, должны работать все без проблем, поскольку это дело уже отточено. Другое дело QML, ебал их маму.

Ответы994823

22 Май, 18:58 #193 #994822

http://ideone.com/cATtjT

Скажите, почему мне всё таки пишет Welcome? Ведь объявление переменной B[2], и B[3] просто не может существовать. Или всё таки может? Если может, то зачем указывать размер массива?

Ответы994834

22 Май, 19:01 #194 #994823

>>994817
Он у тебя любой текст в ссылку хуячит

Ответы994826

22 Май, 19:05 #195 #994825

Сап, плюсоводы. Как у вас с работой, удаленной работой, вкатыванием без профильной вышки (есть техническая из лютой шараги) и английским(которого я не знаю)? Есть ли смысл продолжать учить, если туповат (память плохая) или мне с плюсами ничего не светит и лучше не выебываться, а учить фронтенд?

Ответы994828

22 Май, 19:08 #196 #994826

>>994823
Ну замени на что-то такое, хули ты как дурак https://pastebin.com/8hLuuTKm .
Диплом уже блять на носу, а руки из жопы.

Ответы994848994853

22 Май, 19:09 #197 #994828

>>994825
Почему решил кресты учить?

Ответы994843

22 Май, 19:11 #198 #994831

>>994803
UWM
W
M

Собрал в себе красоту WPF и мощь крестов (а также бонус: CLR сверху и win10 only, торопитесь, предложение ограничено)

Ответы994835

22 Май, 19:14 #199 #994834

>>994822
-Wall -pedantic для GCC. Олсо, у тебя тут UB из-за того, что в двубайтный массив запихнётся больше двух байт.

Ответы994838

22 Май, 19:14 #200 #994835

>>994831
Чё это за хрень? Даже гугл не знает.

Ответы994840

22 Май, 19:15 #201 #994838

>>994834

Ну, по факту он трёхбайтный.

Ответы994842

22 Май, 19:16 #202 #994840

>>994835
Да я еблан просто
U W P
W
P
https://msdn.microsoft.com/ru-ru/library/bb384843.aspx

Ответы994844

22 Май, 19:17 #203 #994842

>>994838

Тьфу, не так понял. Думал, ты имеешь ввиду двухбитный.

22 Май, 19:18 #204 #994843

>>994828
В универе семестр на них микроконтроллеры программировали, и они мне больше понравились, чем ассемблер.

Ответы994845

22 Май, 19:19 #205 #994844

>>994840
Опять наебал. Не та ссылка, ту потерял. Ну короче на XAML'е можно ебашить GUI для крестов. Инструкция была на MSDN, но я чё т проебал.

Ответы994846

22 Май, 19:19 #206 #994845

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

Ответы994852

22 Май, 19:20 #207 #994846

>>994844
Бля, нашёл. От она
https://docs.microsoft.com/ru-ru/windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp

22 Май, 19:20 #208 #994847

Тааак, падажжи ёбана. Это получается, что если я создаю массив M[2], то я могу обращаться к нему как к M[0] и M[1], но не как M[2]? Так, что ли?

Ответы994849994850

5 Кб, 398x331

22 Май, 19:22 #209 #994848

>>994826
Ну баг на месте

22 Май, 19:24 #210 #994849

>>994847
Массив с размером два, отсчёт идёт с нуля.

Ответы994851

22 Май, 19:24 #211 #994850

>>994847
При объявлении массива в скобках ты указываешь размерность. Индексация начинается с нуля.

Ответы994851

1104 Кб, 320x240

22 Май, 19:25 #212 #994851

>>994849
>>994850

22 Май, 19:28 #213 #994852

>>994845
Это то я уже понял. Но сейчас все равно не определился, в какую сторону двигаться. Т.е. понятно, конечно, что вкатиться легче всего через веб, но что-то как-то он совсем уныло выглядит. А по плюсам - читаю сейчас Страуструпа для чайников - и чем больше читаю, тем больше нравится. Я бы и дальше чиал и не замарачивался, но память подводит: буквально пару недель перерыв сделал, и все, открываю книгу где остановился - и нихрена не понимаю, все забылось. Вот и думаю - может нахер эти кресты.

Ответы994855994856

22 Май, 19:29 #214 #994853

>>994826
Ну бля, если у тебя бага нет, версии qt одинаковые - то это совсем странно. Бинарники дай что-ли.

162 Кб, 800x747

22 Май, 19:33 #215 #994855

>>994852
>нахер эти кресты.

зарепортил

22 Май, 19:35 #216 #994856

>>994852
А ты какую нибудь конкретную задачу себе поставь для обучения.

Ответы994859

22 Май, 19:41 #217 #994859

>>994856
Даже на ум не приходит, какую задачу можно было бы перед собой поставить: какую не придумаю - оказывается, что решить ее куда быстрее выйдет используя другой ЯП, даже если изучать его придется с нуля.

Ответы994860994861994997

22 Май, 19:43 #218 #994860

>>994859
Что нибудь с ОС сделай

22 Май, 19:43 #219 #994861

>>994859
Вся суть крестов.

22 Май, 21:36 #220 #994921

Что значит оператор "^" в следующем случае
String^ MergeSections

Ответы994930

22 Май, 21:51 #221 #994930

>>994921
Это у мелкомягких такое.
https://stackoverflow.com/questions/7530175/auto-foo-ref-new-foo-what-is-ref

Ответы994932

22 Май, 21:53 #222 #994932

>>994930
Типа хурма для CLR из .net? Потом GC ее подберет или что?

Ответы994935

22 Май, 21:54 #223 #994935

>>994932
Не знаю, что за хурма, но да, скидывает объект на сборщик мусора.

22 Май, 22:06 #224 #994943

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}

Проблема - шифруется прекрасно, но при дешифровке(когда ввожу ключ меньше нуля) происходит внезапный выход из цикла, файл перестает читаться, хотя байты в нем еще есть. Какой-то байт зашифровался в байт, обзначающий конец файла? Что за хуйня? Памагити

22 Май, 22:06 #224 #994943

#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}

Проблема - шифруется прекрасно, но при дешифровке(когда ввожу ключ меньше нуля) происходит внезапный выход из цикла, файл перестает читаться, хотя байты в нем еще есть. Какой-то байт зашифровался в байт, обзначающий конец файла? Что за хуйня? Памагити

Показать весь текст
Ответы994944

22 Май, 22:07 #225 #994944

>>994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}
Проебался

22 Май, 22:07 #225 #994944

>>994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}
Проебался

Показать весь текст
Ответы995002

22 Май, 22:58 #226 #994997

>>994859
Суть крестов. Так тебе нужно учить кресты или нет? Если надо - зачем ноешь?

22 Май, 23:06 #227 #995002

>>994944
Лень читать. Пройди по коду и обрати внимание на каждое место, в котором у тебя имеет значение знак, в котором знаковое значение присваивается беззнаковой переменной и т.д.

Олсо, ideone.com

22 Май, 23:25 #228 #995016

>>994766
> Диплом горит, помогите господа.
Что за диплом ты делаешь?
Очередной чат?

Ответы995036

22 Май, 23:52 #229 #995036

>>995016
Он самый, но с прямым подключением, шифрованием, ДХТ и ещё парой плюшек. Делаю то, чем сам буду пользоваться после написания. И в рот пусть ебутся все телеграмы и прочее.

Ответы995037995041

22 Май, 23:54 #230 #995037

>>995036
Зачем тебе для всего этого кресты?
мимокрокодил

Ответы995038

22 Май, 23:55 #231 #995038

>>995037
Потому-что я угорел по qt, отличная штука. Хочу научится в нём кодить ака боженька.

22 Май, 23:57 #232 #995041

>>995036
Самому себе будешь писать сообщения?

Ответы995042

22 Май, 23:59 #233 #995042

>>995041
Подколол так подколол.

Ответы995054

23 Май, 00:40 #234 #995054

>>995042
Так это была такая шютка? Хих.

23 Май, 01:03 #235 #995062

>>994766
Костылями решил проблему. Теперь обычные строки буду писать - ui->textBrowser->append("<span>me# " + message + "</span>\n");

23 Май, 13:49 #236 #995169

Можно ли при помощи std скопировать каждый N-ый элемент вектора?

Ответы995189995190

23 Май, 14:30 #237 #995189

>>995169
Готовых способов нет. Вот пример с помощью copy_if и лямбды.

23 Май, 14:30 #238 #995190

>>995169
https://stackoverflow.com/questions/30817563/copy-every-other-element-using-standard-algorithms-downsampling

76 Кб, 572x575

23 Май, 19:22 #239 #995298

Почему крашится на некоторых файлах?

Ответы995313995315

23 Май, 20:04 #240 #995313

>>995298
После удаления нужно прерывать итерацию. Итераторы, которые в for-each цикле использовались, становятся мусором.

Ответы995320

23 Май, 20:08 #241 #995315

>>995298
Смотри пример использования erase
http://en.cppreference.com/w/cpp/container/map/erase

Ответы995320995321

23 Май, 20:23 #242 #995320

>>995313
>>995315
Я недавно учить начал, поэтому не совсем понимаю. Я же удаляю элемент в самом конце итерации, т.е. это ни на что влиять не должно, разве нет? Почему на многих файлах оно работает вполне корректно?

Ответы995330

23 Май, 20:24 #243 #995321

>>995315
В любом случае, спасибо за инфу.

23 Май, 20:34 #244 #995330

>>995320
У тебя с максимальным значением несколько ключей может быть. Первый ты удалишь, а вот дальше не понятно, что происходит.

Ответы995336

46 Кб, 575x539

23 Май, 20:54 #245 #995336

>>995330
Ну как-то же оно удаляет несколько ключей с максимальным значением перед тем, как крашнуться. Если в указателе рандомный мусор - то не понятно, как оно работает до момента краша.

Ответы995338995339

23 Май, 20:55 #246 #995338

>>995336
В этом вся суть. Оно работает до какой-то магической черты, а потом падает.

23 Май, 20:55 #247 #995339

>>995336
Просто воспользуйся способом в статье - и всё будет робить.

Ответы995345

23 Май, 21:09 #248 #995345

>>995339
Что-то оно ни с
p = words.erase(p.first);
ни с
p = words.erase(p);
вообще не компилится

Ответы995346995920

23 Май, 21:11 #249 #995346

>>995345
Тебе ясно написали: воспользуйся способом в статье.
R u retarded?

Ответы995347

23 Май, 21:12 #250 #995347

>>995346
Я не хочу через сишное условие for делать.

Ответы995349

23 Май, 21:13 #251 #995349

>>995347
So you are.

23 Май, 21:51 #252 #995373

Почему майкрософтовый cmake думает что у него тулчейн версии 150, а на деле 141? А потом он еще и говорит, что библиотек буста нет.
Что не так с этими майкрософтами?

Ответы995397

23 Май, 22:35 #253 #995397

>>995373
Спермопроблемники — в /s/

72 Кб, 1000x563

23 Май, 22:54 #254 #995417

Скоро меня пригласят в геймдев-фирму на собеседование. К чему следует подготовиться?

Ответы995420995467

23 Май, 23:04 #255 #995420

>>995417
> К чему следует подготовиться?
Что тебе под ноги полотенце кинут.

24 Май, 00:13 #256 #995467

>>995417
к работе забесплатно

24 Май, 16:55 #257 #995746

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

Ответы995755

24 Май, 17:22 #258 #995755

>>995746
Какой это тебе нахуй билдер. Борланд что ли или как их там. Он же уебищный.
Если ты нубас, выкачай QtCreator, будет гораздо проще, чем вот в этой хуйне.

Ответы995756

24 Май, 17:27 #259 #995756

>>995755
Я бы это дерьмо даже не трогал, но вот препода моего это не колышет.

24 Май, 17:49 #260 #995766

Юзаю CodeBlocks, все правильно делаю?

24 Май, 21:53 #261 #995920

>>995345
Давай я загугля за тебя, скотыняка.
http://www.cplusplus.com/reference/map/map/erase/
Что возвращает erase? А ты, сука, что делаешь?
У типичного вопроса на собеседовании "нахуй нужен erase" - ты соснул. Поздравляю, ты даже не интерн, учитывая что тебе сказали, где ошибка.

24 Май, 22:36 #262 #995933

Анон, поясни мне такую вещь.
Я юзаю qt creator (только как иде). Там своя система сборки и свои файлы для проектов.
Вот, например, я хочу исходники своего поделия выложить для всех.
Как быть юзерам которые юзают другие иде и другие системы сборки?
Ведь им придётся менять пути к либам на свои постоянно?
А если юзается какая-то специфичная версия библиотеки?

Ответы995940

24 Май, 22:46 #263 #995940

>>995933
https://stackoverflow.com/questions/39705210/c-how-to-manage-dependencies-use-libraries-from-github-for-example

25 Май, 01:32 #264 #996013

Как так получается что мы используем конструктор шаблонного класса std::thread без передачи значений в сам шаблон? Я не понимаю...

Ответы996022

9 Кб, 277x268

25 Май, 02:05 #265 #996022

>>996013
> шаблонного класса std::thread

25 Май, 02:46 #266 #996028

Мейлач. рассказывали, что можно написать многопользовательскоеприложение без тредов и форков. Это правда?
Под многопользовательским подразумевается, что я могу запустить два пользователя и они будут работать параллельно, не мешая друг другу, но с возможностью изменять их общие данные.

Ответы996029996042996139996195996206

25 Май, 03:07 #267 #996029

>>996028
Мейлач?

Ответы996139

25 Май, 04:50 #268 #996042

>>996028
>но с возможностью изменять их общие данные.
Алан Бьюли, «Изучаем SQL».
Старательно изучаем!!!

25 Май, 13:11 #269 #996139

>>996029
С разморозкой. https://2ch.hk/abu/res/52038.html (М)
>>996028
Разумеется, это возможно. Представь себе, что ты читаешь данные из stdin и используешь их, но только данные могут прилетать не из одной консоли, а из нескольких. Если в случае с одной косолью у тебя была одна структура на всю программу, то во втором случае у тебя будет массив структур для всех пользователей.

25 Май, 15:34 #270 #996195

>>996028
Хрен знает, про что тебе рассказывали. Про корутины, select/poll?

25 Май, 16:00 #271 #996206

>>996028
https://ru.wikipedia.org/wiki/Цикл_событий

Одна из возможных реализаций такого приложения.

25 Май, 16:06 #272 #996208

Ананасы, хочу, чтобы мой QWidget, помещённый в layout, был квадратным. Как это можно реализовать. Нагуглить не могу.

25 Май, 16:12 #273 #996212

>>993446 (OP)
Где можно почитать сжато про распределители памяти(allocator<T> вот это все).

Ответы996219

25 Май, 16:37 #274 #996219

>>996212
Гуглил уже?

25 Май, 16:51 #275 #996227

Нужна небольшая помощь в реализации класса ассоциативного массива. Он должен организовывать данные как бинарное дерево поиска, содержать операции вставки элемента, удаления элемента, поиска по ключу
Много гуглил и ничего конкретного не нашел, некоторые предлагают в качестве примера брать реализацию красно-черного дерева, но там тоже не особо всё ясно
Вот это наиболее близкий вариант, как мне кажется https://www.codeproject.com/Articles/149879/Associative-Array-in-C

Ответы996248

25 Май, 17:16 #276 #996248

>>996227
Что тебе не понятно?

Ответы996356

25 Май, 21:34 #277 #996356

>>996248
насколько эта реализация соответствует моему заданию

Ответы996369

25 Май, 22:09 #278 #996369

>>996356
Это вариант на массиве. Тут деревом поиска даже не пахнет.

Ответы997266

25 Май, 22:09 #279 #996370

Полистал я вашу шапку, решил Qt Creator поставить. При попытке создать простое консольное приложение пишет, что нет подходящих комплектов. Хотя MinGW стоит и в настройка дефолтного комплекта прописан. Я даже вручную через него скомпилировал минимальный код. А ide почему-то не может.
Я не могу нагуглить как решить эту проблему. Всё что я нашёл, всё сводиться к предложению загрузить Qt полностью.

Ответы996372996406

25 Май, 22:11 #280 #996372

>>996370
Не стоит эту IDE использовать для чего-то, кроме Qt. Она хуже любой другой распространённой.

Ответы996404

25 Май, 23:26 #281 #996404

>>996372
Хорошо, понял, спасибо.

Вот я в ужасе от этого, горит просто от крестов. Точнее как, сам язык мне очень нравиться, удобно с указателями всё, нет непонятных ограничений и прочего. Я с делфи начинал. Качаешь любую версию, качаешь любой пример, хоть десятилетней давности, запускаешь - и он сходу, сука, компилируется. А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера. Я не знаю уже, говорят, мол с++ сложный, да пошли они к чёрту, там компиляторы сложнее языка в десять раз. Эклипс сейчас тоже вот ошибку выдаёт при попытке запустить хоть что-то.

Может быть есть что-то типа pelles c, только для с++? Где компилятор вместе с ide весят 10 мб, и где можно нажать создать проект, запустить проект, и он запуститься сразу?

25 Май, 23:29 #282 #996406

>>996370
Короче, делаешь так: New Project -> Non-Qt Project -> Plain C++ app. Там выбираешь систему сборки Qbs. Сразу создастся обычный консольный Hello world и он будет нормально компилироваться.

Ответы996409

25 Май, 23:36 #283 #996409

>>996406
Тоже так думал, пока не разобрался с ней более-менее. Единственное пока с чем не разобрался, как в ней пользоваться дебаггером, сколько пробовал нихера не получается.

Ответы996414

25 Май, 23:47 #284 #996414

>>996409
Во, благодарю от все души. А я то почему-то упорно пытался комплект настроить, гуглил значения полей и что в них должно быть.
>как в ней пользоваться дебаггером
Да пошёл он к чёрту, этот дебаггер. Я уже даже консолькой через батник и gcc готов собирать. Восемь часов пытаюсь этот мусор запустить. Я из армии только пришёл, идей куча накопилась, радовался, думаю, свободное время, сейчас поставлю какой-нибудь новый компилятор (сейчас же всплывают в разных областях такие новые проекты с открытыми исходниками), альтернативу визуал студии, где можно 100% времени уделить коду, а не только 60%. А то не сидеть же на своём умирающем делфи, да тормозном питоне. А тут вот. Ещё раз спасибо, прям настроение исправил.

Ответы996417

25 Май, 23:55 #285 #996417

>>996414
Не за что. Кстати, сразу на будущее скажу, что по дефолту последние стандарты не включены. Чтобы включить с++14 нужно в qbs файле проекта написать cpp.cxxLanguageVersion: "c++14". Также если хочешь запускать отдельный экзешник без дополнительных библиотек, то нужно там же прописать cpp.linkerFlags: "-static"

Ответы996446

26 Май, 00:19 #286 #996427

ПЛАТИНОВЫЙ вопрос, но все же
Что по идеи должен уметь джун? или хотя бы стажер или я настолько нулячий, что никуда вообще не возьмут :с

Ответы996428996680

26 Май, 00:29 #287 #996428

>>996427
Гуглить.

26 Май, 01:11 #288 #996433

Сап, анон. Пишет тебе крестовик-наверное-джун-наглости-на-мидла, работающий в унылом госучреждении и параллельно ебу труп науки в универе. Наткнулся на вакаху мечты - https://streamhpc.com/job/openclcuda-expert/. Собственно, занимаюсь я примерно тем, чем занимается эта контора - пишу код в соответствии с требованиями инженеров и физиков и параллелю на видеокарте, ну и ещё всякой хуйней по мелочи, но это неважно. Думаю попробовать прибиться к ним, но смущает пункт про то, что требуется опыт работы с архитектурами в количестве больше двух. Какие архитектуры имеются ввиду? Разные видеокарты? Плисы, ардуины и проч? RISC, CISC? Может быть, вопрос звучит глупо, но я дальше обычного комплюхтера с его цп и видеокартой не лез. Более того, я на самом деле хуёво разбираюсь в архитектуре э-вэ-эм, потому как в основном занимался алгоритмами, матаном, высокоуровневыми задачами, а по диплому вообще физик-теоретик, но думаю, смогу быстро подтянуть, если таки решусь к ним постучаться. Стоит ли вообще позориться перед белыми людьми с таким уровнем знаний?

Ответы996436996469996684

26 Май, 01:35 #289 #996436

>>996433
Или тут вообще имеется в виду архитектура кода и я идиот, лел.

26 Май, 03:42 #290 #996446

>>996417
>то нужно там же прописать cpp.linkerFlags: "-static"
Не помогает. Ексешник пустой программы начинает весить 2 мб, а при запуске жалуется на отсутствие "libgcc_s_dw2-1.dll".

Ответы996539996792

26 Май, 08:50 #291 #996469

>>996433
>ON 5 MAY 2015
ну да, спустя 2 года, вакансия, без сомнений, еще актуальна)

Ответы996485

26 Май, 10:25 #292 #996485

>>996469
Думаю, это тот случай, когда набор идет постоянно, но не спеша, и с каждым кандидатом все обсуждается отдельно. Тем более что сайт они обновляют.

26 Май, 13:23 #293 #996539

>>996446
Хм, хуй знает, если честно. У меня все нормально. Посмотри в папке bin компилятора этот файл. Или скачай чистый mingw с офсайта и им пользуйся, но только юзай Qbs вместо qmake.

Ответы996576

26 Май, 14:06 #294 #996576

>>996539
Вот я тоже. Сейчас поставил netbeams, требует то ли mingw, то ли cywgin, нечто make и другой мусор. Ставлю всё прям по инструкции ещё раз отдельно для него, а оно пишет, что всё-равно не хватает некоторой dll непонятно для чего. Поставил kdevelop, поставил geany, поставил CodeLite и всё одно и то же. Как люди вообще используют этот мусор - не представляю, самим то приятно с этим разбираться? Просто невообразимо выбешивает это, не передать словами. Почему вот по пунктам с офф-сайта скачиваю всё необходимое, а оно не работает, неужто так сложно поподробнее написать.
Всё что необходимо, просто минимальную ide, текстовый редактор с поддержкой нескольких файлов и выделением ключевых слов в которой кнопки компилировать и запустить работают. Как pelles c на 10 мб (где даже отладчик есть, между прочим) - побаловаться-вкатиться в новые стандарты, ничего такого серьёзного не требуется. А тут скачай то, скачай пять утилит для компиляции, линковки, пропиши им все конфиги и получи непонятно что. Сейчас удалил вообще всё что стояло, пойду по второму кругу. Я уже даже почти готов громадную визуал студию поставить.

Ответы996580996617996663996794

26 Май, 14:09 #295 #996580

>>996576
Чем тебя вижел студия не устраивает? Бесплатная, охуенный жырный инталлятор со всем на свете, огромный мсдн и не менее огромный стэковерфлоу. Притом, что большая часть энетрпрайза и геймдева как раз на студии, так что если учить, то ее.

Ответы996596996663996677

121 Кб, 1354x670

26 Май, 14:32 #296 #996596

>>996580
> охуенный жырный инталлятор со всем на свете
Вот именно этим. Последний раз когда я её ставил, там она гигабайта четыре и я уже офигел от жизни. Какой-то пусть даже навороченный текстовый редактор запускается две минуты и компилирует с такой же скоростью. А то что сейчас я вообще боюсь представить сколько времени будет запускаться и как работать. Просто галочка для мобильных телефонов добавляет 10 Гб, может быть так принято сейчас, но я не вижу причин, куда там столько всего. Я в армии прям с андроида непонятно чем создавал apk за неимением лучших вариантов. Так соответствующее приложение занимает 27 мб. То есть фактически 27 мб достаточно для создание приложений под андроид (и даже если он использует что-то из самого себя, полный образ андроида 300 мб где-то). Хрен с ним, там ещё поддержка айфона и прочего, но не 10 же Гб?
>А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера.

Ответы996600996602

26 Май, 14:45 #297 #996600

>>996596
Ну, во-первых, там допгалочки есть для охочих до места, тут просто ставит наверняка всё. Скоре всего сразу хуюнити и воображаемый паровоз.
По-хорошему тебе наверное надо только шиндовс сдк и кресты а остальное доставлять по мере надобности.
А че за ошибки у тебя с хедерами?
Может ты тупо копипастил файлы проекта в инклюд и сорс, не указав их как пути инклюда и сорса? Это самое очевидное, системные либы студия уже сама пишет, если ты их ставил.
Давай конкретику, все равно тред полудохлый.

Ответы996660

26 Май, 14:50 #298 #996602

>>996596
>Просто галочка для мобильных телефонов добавляет 10 Гб
Там кроме сдк для разных систем ещё 9гб мусора в виде десятка симуляторов разных версий систем для разных устройств, юнити и прочих.

Что сдк иос, что офф. сдк андроида в полном составе весят по 4-6 гб.

26 Май, 14:54 #299 #996605

Я знаю питон, Go. Думаю начал писать на спп. С чего мне начать?

Ответы996667

26 Май, 15:12 #300 #996617

>>996576
Для твоих целей идеально подходит CodeBlocks. Только качай сразу с компилятором в комплекте. В ней все очень просто, даже настраивать ничего не надо, и даже может компилировать отдельные cpp файлы, а не только проекты, как студия, qtcreator и т.д. И сразу по дефолту включена статическая линковка, т.е. все компилируется без зависимостей от dll. Я вначале ее использовал, сейчас, правда, перешел на qtcreator. Хотя иногда и сейчас использую ее для дебаггера и компиляции статической библиотеки, т.к. пока не разобрался, как это сделать в qt.

Ответы996660

26 Май, 16:57 #301 #996656

Пишу приложение, работающее с sqlite. Мне нужно хранить в БД дату поступления на работу и иметь в классе поле для хранения этой даты. В каком формате хранить дату в классе?

Ответы996683

71 Кб, 1152x1021

26 Май, 17:07 #302 #996660

>>996600
>Давай конкретику, все равно тред полудохлый.
Хорошо. Я поставил визуалстудию таки. Без совсем лишних галок примерно 4 Гб, хрен с ним.
Запускаю, кликаю создать простую консольную программу. Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1. По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает. Зачем мне этот sdk? В тех четырёх гб я тогда что скачал, если нельзя пустую программу скомпилировать? Я не собираюсь использовать возможности win8.1, даже возможности win7 не буду использовать, максимум создам окно, подключу древний opengl и буду обрабатывать нажатия мышки/клавы. Функции ос, которые, наверное, со времён win2000 не менялись.
>>996617
>CodeBlocks
Идеально, есть даже версия не требующая установки, можно с собой таскать.

Ответы996667996683

26 Май, 17:29 #303 #996663

>>996576
>>996580
Студия как я понимаю сейчас работает на .NET, а использование Java/C# для разработки графических приложений известно к чему приводит.
На C++ написаны только QtCreator и CodeBlocks.

Ответы996667997799

26 Май, 18:08 #304 #996667

>>996605
С хеллоуворлда.

>>996660
Ты пишешь
>Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1.
Но почему-то потом ты пишешь
>По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает.
Ставь шиндовс сдк раз хочешь под шинду девелопить.
Покажи дерево проекта, кстати, если ты создавал Empty Project оно не должно хотеть сдк и должно собираться само.
И поменяй язык, только уёбки кодят на русском.
>>996663
На плюсах можно самостоятельно на винапи хуярить, просто толковых готовых либов нет, проще самому нахерачить под ту утилитку что пишешь, либо стырить готовую большую либу.

175 Кб, 500x480

26 Май, 18:40 #305 #996677

>>996580
>большая часть энетрпрайза и геймдева как раз на студии, так что если учить, то ее

> учить IDE

Ответы996678

26 Май, 18:42 #306 #996678

>>996677
Ну да. Это не борланд си, тут надо хоть пару раз ошпариться с настройками проекта, директивы препроцессора позыркать и подключать проекты в солюшен.
Ты хочешь сказать, что это ОЧЕВИДНО и ПОНЯТНО без изучения?

Ответы996683

26 Май, 18:51 #307 #996680

>>996427
Бумага ответу

26 Май, 18:57 #308 #996683

>>996678
Систему сборки настрой, маня. Нормальные люди уже давно перешли на внешние генераторы проектов (GYP, CMake и прочее говно), а не привязываются к какой-то конкретной IDE.
Visual Studio нужна, чтобы на нее накрутить Visual Assist X или решарпер и послать нахуй интеллисенс, который окромя полутора подсказок для крестов выдать нихуя не может.
Директивы препроцессора нужны, если ты особо упорот и уж очень хочешь себе натвикать хуйни, как какой-то аудиофил, в большинстве случаев, даже в нагруженных приложения, на многие директивы, за исключением директив на добавление служебной информации и оптимизации компилятора насрать абсолютно, потому что прирост производительности от них нулевой, если даже не отрицательный.
Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма.
Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.

>>996660
>> Идеально, есть даже версия не требующая установки, можно с собой таскать.
Говно ебаное, даже не пытайся пользоваться этим легаси чмом. IDE, которая не может выводить типы для auto и делать нормальные пометки об ошибках нужна была лет 17 назад (если ты не говнокодер ЦЭ99, подавайте мне бинды сюда, ко-ко-ко, нужно следить за легаси, стандарты вносят слишком много изменений, register выкинули, да как они смеют). Единственный плюс этого корыта в том, что парсит заголовочные файлы в поисках объявлений он достаточно быстро (ну а хули нет-то, если он ничего другого делать не умеет).
Тут, наверно, будут советовать CodeLite и прочий мусор, который весит по питнадцоть мегобайт. Ты знаешь, что такое море крови ты наверное не купался в этом дерьме ты искупаешься тебе мало не покажется (цитаты Великих Людей)

>>996656
В timestamp переводи и храни как число. Благо 64-битная метка времени позволяет нам хранить наши говноподелки до времен терминаторов или может быть даже больше...

26 Май, 18:57 #308 #996683

>>996678
Систему сборки настрой, маня. Нормальные люди уже давно перешли на внешние генераторы проектов (GYP, CMake и прочее говно), а не привязываются к какой-то конкретной IDE.
Visual Studio нужна, чтобы на нее накрутить Visual Assist X или решарпер и послать нахуй интеллисенс, который окромя полутора подсказок для крестов выдать нихуя не может.
Директивы препроцессора нужны, если ты особо упорот и уж очень хочешь себе натвикать хуйни, как какой-то аудиофил, в большинстве случаев, даже в нагруженных приложения, на многие директивы, за исключением директив на добавление служебной информации и оптимизации компилятора насрать абсолютно, потому что прирост производительности от них нулевой, если даже не отрицательный.
Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма.
Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.

>>996660
>> Идеально, есть даже версия не требующая установки, можно с собой таскать.
Говно ебаное, даже не пытайся пользоваться этим легаси чмом. IDE, которая не может выводить типы для auto и делать нормальные пометки об ошибках нужна была лет 17 назад (если ты не говнокодер ЦЭ99, подавайте мне бинды сюда, ко-ко-ко, нужно следить за легаси, стандарты вносят слишком много изменений, register выкинули, да как они смеют). Единственный плюс этого корыта в том, что парсит заголовочные файлы в поисках объявлений он достаточно быстро (ну а хули нет-то, если он ничего другого делать не умеет).
Тут, наверно, будут советовать CodeLite и прочий мусор, который весит по питнадцоть мегобайт. Ты знаешь, что такое море крови ты наверное не купался в этом дерьме ты искупаешься тебе мало не покажется (цитаты Великих Людей)

>>996656
В timestamp переводи и храни как число. Благо 64-битная метка времени позволяет нам хранить наши говноподелки до времен терминаторов или может быть даже больше...

Показать весь текст
Ответы996685996694996709

26 Май, 18:58 #309 #996684

>>996433
Бумп штоле

26 Май, 19:02 #310 #996685

>>996683
>Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма.
В чем проблема? Я сам их по папочкам раскладываю, но нередко дерьмо когда они на полу. Райтклик - открыть в эксплорере. В студию гит уже впендюрен, так что и коммитить можно из него.
>>996683
>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.
Это пичот, но у меня юникод. А на работе постоянно сталкивался с этой ебаниной.

Ответы996687

26 Май, 19:10 #311 #996687

>>996685
>> В чем проблема? Я сам их по папочкам раскладываю, но нередко дерьмо когда они на полу. Райтклик - открыть в эксплорере. В студию гит уже впендюрен, так что и коммитить можно из него.
Ну проще, конечно же, когда можно не прибегая к посторонним инструментам, сделать все как надо. Тысячи окон уже осточертели.
Но соль в том, что даже при использовании двух IDE одновременно (открываю CLion и MSVS), я не могу получить адекватного редактирования кода (CLion в этом преуспел, зато автокомплит работает криво и куча раздражающих косяков, да и вообще пиздец бывает зачастую в большом проекте, но сейчас как-то этого поубавилось) вместе с хорошей производительностью и нормальной отладкой (отладка в студии хорошо, хотя были случаи, когда отладчик загибался и не хотел читать память, приходилось перезапускать всю студию, а студию с решарпером быстрой назвать язык не поворачивается). Короче, на двух стульях блять, как меня это доебало, если честно...

Ответы996690996709

26 Май, 19:18 #312 #996690

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

Ответы996692996695

26 Май, 19:25 #313 #996692

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

175 Кб, 500x480

26 Май, 19:35 #314 #996694

>>996683
>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.

> комментарии на русском

Ответы996696

26 Май, 19:41 #315 #996695

>>996690
>ВС Код
Не думаю что десктопные приложения на яваскрипте могут быть легковесными.

Ответы996697

26 Май, 19:43 #316 #996696

>>996694
ИМХО лучше на русском, чем на кривом англицком. Видал я комменты, от которых ржать хотелось. Пускай человек выражается правильно, а не будет ограничен знаниями неродного языка. Комменты на том языке, который человек знает хорошо более выразительны, и должны объяснять сжато и в то же время точно принцип работы того или иного метода/куска кода.
Алсо в принудительных английских комментариях смысла не особо много, если вся контора располагается в одной стране без зарубежных участников. Может, в коей-то мере, это и интересно, но больше будет походить на какой-то Брайтон-Бич, где все разговаривают на рунглише.

Ответы996697

26 Май, 19:45 #317 #996697

>>996695
Однако ж.
Я, конечно, его сравниваю с родным братухой атомом, платным саблаймом и добротным нп++.
Щас немного попробовал вим и мне кажется, что тут что-то есть. Но пока нет времени навернуть (говорят емакс пижже). В коде плюгины одной кнопкой ставятся, тот же пуфон дебажить одно удовольствие.

>>996696
Толковый кодер комментариев не пишет, ибо что написано с трудом должно читаться с трудом.
А кроме шуток - надо ангельский тянуть хотя бы в предметной области, а то напишешь контроллер панелей как painController и прочие перлы и комменты даже на русском не спасут.

Ответы996701996876

26 Май, 19:51 #318 #996701

>>996697
Интерфейсы следует документировать, реализацию можно избавить от этого, в принципе. Если архитектура документируется, то от комментирования можно отказаться, да. Самодокументируемый код, это, конечно же, хорошо, но никто не подскажет без соответствующих подсказок, является ли метод блокирующим или нет, как он вызывается и чем отличается от подобного метода с интересным суффиксом.
Английский нужно знать, не спорю, чтобы потом несуразиц не было, да и документация на те же API требует хотя бы средненьких знаний.

Ответы996703

17 Кб, 600x384

26 Май, 19:54 #319 #996703

>>996701
Ну хули, всё правильно сказал. Мы все знаем, как делать правильно, только реальность оказывается проворнее.

26 Май, 20:03 #320 #996709

>>996683
>Говно ебаное, даже не пытайся пользоваться этим легаси чмом.
> IDE, которая не может выводить типы для auto
Я пока даже не знаю что это, я с++11 только издали видел.
>>996687
>Короче, на двух стульях блять, как меня это доебало, если честно...
А на люниксах есть решение, раз уж ты всё ругаешь? Мне то для себя, могу свободно обперекатываться.

Ответы996919

26 Май, 22:20 #321 #996781

написал односвязный список, хранящий статические данные - строчки
почему то функции стандартных библиотек tolower toupper
не работают, поэтому не могу реализовать статический метод, который меняет регистр этих строк, программа нормально компилируется и всё работает, все условия проходят, но строчки не меняются, не могу понять почему, помогите плиз
https://pastebin.com/dwxgvqea

Ответы996788996791

26 Май, 22:47 #322 #996788

>>996781
Эти статические данные у тебя часом не строковые литералы?

Ответы996808

26 Май, 23:03 #323 #996791

>>996781
Во1 нужно явно присваивать: с = tolower(c)
Во2 условия неправильные: нужно >=a && <=z

Ответы996808

26 Май, 23:03 #324 #996792

>>996446
Кутэкреактор отличился этим - хуй ты запустишь скомпилрованный файл без деплоя на винде.

Чтобы всё всегда запускалось, надо добавить в PATH все пути к динамическим библиотекам, которые ты используешь, в том числе путь к папке bin компилятора.

26 Май, 23:05 #325 #996794

>>996576
Как пользоваться codelite:
- ставишь codelite
- ставишь MinGW
- в настройках указываешь путь к папке MinGW
- добавляешь путь к папке bin в PATH (охренеть, там такая же проблема, как в креакторе)

Всё, оно робит. В линуксе ьаких проблем нет, там все либы в заранее определённых местах.

Ответы996913

26 Май, 23:20 #326 #996808

>>996788
ну да, а что?

>>996791
да, про присвоение я тупо забыл, спасибо

26 Май, 23:39 #327 #996830

пытаюсь реализовать на плюсах простую сортировку пузырьком для элементов односвязного списка, которые хранят в себе строковые литералы (типо чтобы по алфавиту сортировало)
https://pastebin.com/2xPXQkMK
чет вроде должно работать, но не пашет
анонче, нужна твоя помощь

5 Кб, 214x131

27 Май, 01:31 #328 #996876

>>996697
>А кроме шуток - надо ангельский тянуть хотя бы в предметной области, а то напишешь контроллер панелей как painController и прочие перлы и комменты даже на русском не спасут.
https://wandbox.org/permlink/747TNFxKBVkr9LN4

Ответы996880

27 Май, 01:36 #329 #996880

>>996876
Ну и нахера ты это показываешь?
Ты еще пропиши
#define int целое
#define { начало
и пиши на 1с.

Ответы996881

6 Кб, 212x127

27 Май, 01:38 #330 #996881

>>996880
https://wandbox.org/permlink/s7W2X3nng1rUktr3

Ответы996883

3993 Кб, 420x310

27 Май, 01:40 #331 #996883

>>996881
Мсье знает толк в извращениях.

Ответы996885

27 Май, 01:42 #332 #996885

>>996883
Это #импортозамещение

Ответы996888

27 Май, 01:52 #333 #996887

>>993446 (OP)
Занимаюсь некой хуйнёй.
Есть класс float3, имеющий float v[3];
Есть класс Vec, имеющий float x, y, z;
Возможно ли перегрузить оператор присваивания, чтобы эти 2 типа можно было друг другу присваивать?

Ответы996889996942

27 Май, 01:52 #334 #996888

>>996885
класс КонтроллерПанелей
Начало
общее:
Панель ПолучитьПанель(цел номер);
Панель СоздатьПанель;
Панель УдалитьПанель (цел номер);
Панель ВыбратьПанель (цел номер);
внутристроч цел ТекущПанель() Начало вернуть выбраннаяПанель; Конец;
внутристроч СледПанель() Начало ВыбратьПанель(ТекущПанель++); Конец;
...
частное:
стд::вектор<Панель> хран;
цел выбраннаяПанель;
Конец

Ответы996889

27 Май, 01:53 #335 #996889

>>996887
Есть.
>>996888
А что, довольно мило.

Ответы996890

27 Май, 01:56 #336 #996890

>>996889
>Есть.
Что есть?
Каким образом осуществить перегрузку?
Я пробовал несколько вариантов, но компилятор жалуется на всякие ошибки типа missing type specifier и что-то ещё.

Ответы996892996893

44 Кб, 523x705

27 Май, 02:04 #337 #996892

>>996890
>>Есть.
>Что есть?
Возможность.

Ответы996894

27 Май, 02:06 #338 #996893

>>996890
#include <iostream>
using namespace std;
class Vec;
class float3
{
public:
float v[3];
void set(Vec in);
};
class Vec
{
public:
float x, y, z;
void set(float3 in){x = in.v[0]; y = in.v[1]; z = in.v[2];}
};
void float3::set(Vec in) {v[0] = in.x; v[1] = in.y; v[2] = in.z;}
int main() {
Vec foo;
foo.x = 1;
foo.y = 2;
foo.z = 3;

float3 bar;
bar.set(foo);
std::cout<<bar.v[2];
return 0;
}

27 Май, 02:06 #338 #996893

>>996890
#include <iostream>
using namespace std;
class Vec;
class float3
{
public:
float v[3];
void set(Vec in);
};
class Vec
{
public:
float x, y, z;
void set(float3 in){x = in.v[0]; y = in.v[1]; z = in.v[2];}
};
void float3::set(Vec in) {v[0] = in.x; v[1] = in.y; v[2] = in.z;}
int main() {
Vec foo;
foo.x = 1;
foo.y = 2;
foo.z = 3;

float3 bar;
bar.set(foo);
std::cout<<bar.v[2];
return 0;
}

Показать весь текст

27 Май, 02:06 #339 #996894

>>996892
Я примерно так и делал.
Сейчас вроде разобрался, проблема походу была в циклических зависимостях файлов.

Ответы996899

27 Май, 02:50 #340 #996899

>>996894
Разрулил вроде как.
У меня эти структурки были в отдельных файлах.
В начале файлов есть #pragma once ибо они во множестве других мест ещё подключаются.
В одном из файлом (например float3.h) можно подключить второй (Vec.h), и там же реализовать конструктор и перегрузку из Vec в float3.
В файле Vec.h просто в начале пишем "struct float3;", далее в классе/структуре можем объявить прототипы для конструктора и оператора=, и потом в каком-то другом файле написать реализацию этих методов (можно в том же float3.h после объявления структуры float3).

Ответы996901

27 Май, 02:59 #341 #996901

>>996899
В хедерах реализацию писать моветон, пиши в плюсовом коде.
Можно только мелкие инлайны типа метода-инкрементора.

Ответы996902996982

41 Кб, 576x463

27 Май, 03:03 #342 #996902

>>996901
>В хедерах реализацию писать моветон
Скачай исходники boost или какой-нибудь реализации стандартной библиотеки и посчитай число строк в хедерах и не-хедерах.

Ответы996904996982

27 Май, 03:07 #343 #996904

>>996902
Я сказал "моветон". Я себе такое обычно не позволяю.
И нет, я не петух, а плюсер, на петухе я только небольшой скриптинг строк максимум на 500 делаю, посерьёзнее уже задача для плюсов.

27 Май, 04:00 #344 #996913

>>996794
Хм, я всё так и делал и не работало. При попытке запуска консольку выводит с сообщением, что программа завершила работу с ненулевым кодом. А сегодня я поставил MinGW в очередной раз, 64-битный, и всё заработало.
И CLion заработал, к слову говоря.
Значит, три с половиной работающих стула уже. Это, codeblocks и ещё половина qt-креатора, которая даже при статической линковке самостоятельный ексешник мне не соизволило собрать.

Всем спасибо большое за наводки и советы - думаю пока этого пространства для плавания хватит, пойду тестировать последние обновы с++.

27 Май, 06:14 #345 #996919

>>996709
>> А на люниксах есть решение, раз уж ты всё ругаешь? Мне то для себя, могу свободно обперекатываться.
Идеального решения НЕТ. Самое вменяемое по удобству и скорости работы, для меня во всяком случае, это CLion. Eclipse гораздо медленнее, к примеру, да и многих фич у него нет (а может и есть, я с этим уже года 3 не связывался). Недоредакторы, типо codeblocks, codelite, wxc++ (или как его там) и прочие, прочие (в т.ч. всякие редакторы типо atom, vscode и т.д.) это все не то. Рефакторинга нет (имеется в виду нормальный рефакторинг, с редактированием типов параметров, количества аргументов и прочим), вывода типов нормального нет, ошибок шаблонов нет и так далее до бесконечности.
Можно попробовать QtCreator, но он, как по мне, кастрированный слишком, до нормальной IDE не дотягивает, но для новичка, я думаю, сойдет, особенно, если у тебя слабенькая пекарня (потому что все эти java-IDE жрут столько ресурсов, что пиздец...)

27 Май, 11:37 #346 #996942

>>996887
Да.

27 Май, 13:38 #347 #996982

>>996901
Два чаю этому.
>>996902
Аргумент инвалид, так как шаблоны не разносятся по файлам, а идут инлайном на крайняк выносятся за пределы класса в том же хедере. А теперь ты скачай какую-то не шаблонную либу и посмотри, сколько там реализаций в заголовочниках.

Ответы997027

27 Май, 15:17 #348 #997027

>>996982
>так как шаблоны не разносятся по файлам,
Очень даже разносятся. Обычно реализацию отделяют и выносят в отдельный хидер - делают .h и .hpp или .inc. В одном хидере необходимый минимум, во втором -тяжелая реализация, которую инклудят в .cpp при использовании.

Ответы997032

27 Май, 15:31 #349 #997032

>>997027
Ок, но суть то осталась прежней - реализация все равно остаётся в хедерах.

Ответы997073

27 Май, 17:05 #350 #997071

Анон, у меня есть sqlite база данных с зарплатами сотрудников. Как в ООП-парадигме реализовать выборку данных из этой БД по идентификаторы сотрудника? Есть ли паттерны для решения такой задачи?

Ответы997104997109

27 Май, 17:12 #351 #997073

>>997032
>реализация все равно остаётся в хедерах.
Но в большинстве случаев этот хидер подключается в cpp и парсится только один раз.

27 Май, 18:20 #352 #997104

>>997071
> в ООП-парадигме
Делают ORM.

Ответы997107

27 Май, 18:25 #353 #997107

>>997104
А без орм?

Ответы997123

27 Май, 18:29 #354 #997109

>>997071
О блять, тысячи их. Начиная с активного объекта до маппинга (тот же ORM), можно еще шлюз таблицы данных или шлюза записи данных. Если тебе интересны паттерны взаимодействия с базой данных, можешь прочитать Patterns of Enterprise Application Architecture (паттерны корпоративных приложений в переводе), книги что на русском, что на англицком есть в доступе. Ссылок не будет.

27 Май, 19:00 #355 #997123

>>997107
Без ORM получится не ООП.

27 Май, 23:07 #356 #997218

Можно ли таким способом как-то инициализировать myFloat1,2,3? В таком виде не работает

void ini(float myFloats)
{
myFloats[0] = new float(1.0f);
myFloats[1] = new float(2.0f);
myFloats[2] = new float(3.0f);
}

int main()
{
float myFloat1 = nullptr;
float myFloat2 = nullptr;
float myFloat3 = nullptr;
float myFloats[] = { myFloat1, myFloat2, myFloat3 };
ini(myFloats);
}

Ответы997219997348

27 Май, 23:12 #357 #997219

>>997218
цы, ты зачем переменной nullptr присваиваешь. ты либо делай
float myFloat1=nullptr;
...
float myFloats[] = {myFloat1,...
либо
float myFloat1, myFloat2,...
...
void ini(float myFloats[])
{
myFloats[0]=1.0f;
...

а еще лучше почитай про указатели.

Ответы997220997222

27 Май, 23:15 #358 #997220

>>997219
ну ебаный по голове, разметка всё испортила.
float ~myFloat1=nullptr;
...
float ~myFloats[] = {myFloat1,...
либо
float myFloat1, myFloat2,...
...
void ini(float myFloats[])
{
myFloats[0]=1.0f;
...
где ~ - оператор указателя (звездочка).

Ответы997223

7 Кб, 421x235

27 Май, 23:18 #359 #997222

>>997219
Не знаю как тут вставить код, но в общем вот скрин

Ответы997225

27 Май, 23:21 #360 #997223

>>997220
>void ini(float myFloats[])
myFloats[] должен же быть типа массив указателей, а не просто массив флоатов, ну в общем даже если так, то все равно не работает, я скрин выше приложил

27 Май, 23:24 #361 #997225

>>997222
не компилируется или что?

Ответы997229

27 Май, 23:33 #362 #997229

>>997225
Компилится, просто делает не то что я хочу, я хочу таким образом иницилизировать переменные myFloat1,2,3 но они так и остаются nullptr, зато если посмотреть потом содержимое myFloats то вот там как раз и создались эти 3 переменные

Ответы997231997232

27 Май, 23:37 #363 #997231

>>997229
Сударь, вы к нам с мира Джавы приехали?

27 Май, 23:37 #364 #997232

>>997229
тогда попробуй сделать myFloat1,2,3 переменными, а массив так и оставляешь двойным указателем и не трогаешь функцию. массив инициализируешь его как &myFloat1, &myFloat2 и тд

Ответы997236

27 Май, 23:41 #365 #997236

>>997232
Вот так не получится, ибо в действительности у меня там не флоаты будут а указатели на объекты абстрактных классов, т.е. переменными не получится их сделать

Ответы997238

27 Май, 23:42 #366 #997238

>>997236
гошподи. почему указатели хранишь в флоатах? почему не можешь просто создать указатели абстрактных классов?

Ответы997241

27 Май, 23:43 #367 #997241

>>997238
просто со стороны выглядит так, как будто ты пытаешься срать через ноздрю. ты в образовательных целях это делаешь или считаешь, что это единственно верное архитектурное решение?

Ответы997246

27 Май, 23:46 #368 #997245

Не смог ничего нагуглить. Есть же явно какие-то инструменты в библиотеке string для того, чтобы разделить строку по разделителям.
Например из "Плюсы не самый плохой язык"
Можно было вытащить сначала Плюсы, потом не, а потом самый и тд.
Я вот знаю только find() substr(), но тогда нужно буферную строку делать и вообще не красиво получается.

Ответы997247997248

27 Май, 23:47 #369 #997246

>>997241
И то и то наверное, ну я хочу так инициализировать нужные мне переменные объединив их в массив и передав в функцию, ну раз по-другому нельзя значит буду потом доставать их из массива и приравнивать вручную.

Ответы997248

27 Май, 23:51 #370 #997247

>>997245
>Плюсы не самый плохой язык
>Нет встроенного типа-строки
>В стандартную либу для строк не завезли .split()

Ответы997251

27 Май, 23:55 #371 #997248

>>997245
Нету ничего, братишка.
>>997246
Попробуй в своём коде, там где инициализируешь {&myfloat1, ... }, тогда 3 звезды будет, в функции-инициализации нужно тоже поправить.

Ответы997249997251

27 Май, 23:58 #372 #997249

>>997248
Да я хотел через массив указателей, 3 звезды не оч хочется делать

28 Май, 00:01 #373 #997251

>>997248
>>997247
А ну и ладно, не очень то и хотелось. Сам напишу, может даже класс бахну. в портфолионапишу, что имею собственную библиотеку.

28 Май, 01:20 #374 #997266

>>996369
тогда в какую сторону двигаться? как-то идей нет

Ответы997340

28 Май, 09:23 #375 #997340

>>997266
Начни с изучения дерева поиска.

28 Май, 10:23 #376 #997348

>>997218
Хуйню какую-то написал, потому и не работает.

33 Кб, 762x269

28 Май, 13:21 #377 #997397

wtf?

Ответы997404997470997505

28 Май, 13:31 #378 #997404

>>997397
Microsoft Visual C++ Redistributable
Написано же

590 Кб, 1600x1000

28 Май, 14:25 #379 #997441

Кто кодит с линуксов? Какие подводные? Думаю перекатиться на минт какой-нибудь. но слышал, что с библиотеками под пингввинов все плохо, хотя много инфы нарыть не удалось. Поясните

Ответы997460997462

sage 28 Май, 14:47 #380 #997460

>>997441
Провокация срача незаметна.

> Поясните
За щёку пояснил тебе.

28 Май, 14:58 #381 #997462

>>997441
Какие билиотеки тебя интересуют, не msvcrt ли?

Ответы997475

28 Май, 15:08 #382 #997470

>>997397
Это библиотеки Visual C++ разных версий и битностей. У меня примерно такая же пачка на ЖД, ставлю во избежание сюрпризов, не во всех программах явно написано, что ставить.

28 Май, 15:14 #383 #997475

>>997462
Слышал, тот же conio не дружит с линуксом.

Ответы997501997504

28 Май, 15:24 #384 #997480

>>993446 (OP)
Почему везде (ладно не везде, но много где) пишут, что обучение программированию лучше начинать с C++ ?

Ответы997484997921

sage 28 Май, 15:26 #385 #997484

>>997480
Везде пишут, что с поц-кала.

Впочем, и те, и те — больные на тугодумку.

Ответы997524

28 Май, 15:49 #386 #997501

>>997475
>> conio
>> линуксом
Школьный учитель по информатике 60 лвл плес

28 Май, 15:51 #387 #997504

>>997475
>conio
>2k17
В голос обдристался.

28 Май, 15:51 #388 #997505

>>997397
Наслаждайся своей спермопарашей.

28 Май, 15:54 #389 #997507

В моём регионе одна вакансия по запросу С/С++
Зато WEB и 1C хоть жопой жуй.
Ума не хватает, чтобы работать на себя. Фрилансу это нахуй не надо кроме студентов с лабами
Уже смазал лыжи в ДС2.
Пасаны, кому нужны кресты в 2017, кроме ынтерпрайз говна?

Ответы997509

28 Май, 15:57 #390 #997509

>>997507
В крупных конторах типа яндекса, мейла, дохуя нужны. Но если ты чмо, писавшее только laba1.cpp, туда будет почти нереально попасть, а если и попадешь - будешь работать сверх нормы и за копейки. Там макакам платят не особо много, якобы престиж от надписи "Yandex" в трудовой это компенсирует.

Ответы997512

28 Май, 16:03 #391 #997512

>>997509
Это понятно, чтобы попасть в топы нужен неплохой math-background. Я то макачу уже давно и всё забыл. Есть вариант в Unity-геймдев вкатиться, но там своя атмосфера.

Ответы997513

28 Май, 16:14 #392 #997513

>>997512
Вкатись в системное или сетевое программирование, будешь потом с десятком флагов возле сокета плясать и еполлы трахать.

28 Май, 16:25 #393 #997524

>>997484
Почему? Разве изучение С++ не дает какого-то собого понимания программирования? Почему тогда советуют?

Ответы997525

sage 28 Май, 16:26 #394 #997525

>>997524
> Разве изучение С++ не дает какого-то собого понимания программирования?
Ты про "выучил сипласплас — счетай выучил все языки"?

Ответы997528

28 Май, 16:40 #395 #997528

>>997525
Наверно. Я же не знаю почему его советуют. Типа чем сложнее язык, тем проще потом перекатиться.

Ответы997534

28 Май, 16:48 #396 #997534

>>997528
Он скорее просто растягивает очко. Перекатится потом правда легче — всё кажется слишком маленьким для твоего расхуяренного очка, если это конечно не хачкели.

Ответы997562997598

28 Май, 17:59 #397 #997562

>>997534
А если начинать с хачкеля, то что тогда?

Ответы997568

28 Май, 18:20 #398 #997568

>>997562
Тогда будешь колесить по дорогам Вальхаллы.

28 Май, 19:46 #399 #997588

А это, даже стыдно за такой вопрос, как не создавать консоль вообще при запуске программы? Не скрыть её сразу после запуска, а вообще не показывать, что бы даже не мигала.

Ответы997616997755

28 Май, 20:02 #400 #997598

>>997534
А для чего в современном мире вообще используется С++?

Ответы997615997616

28 Май, 20:35 #401 #997615

>>997598
Что угодно, где нужен перформанс. Попробуй пораскинуть мозгами.

28 Май, 20:36 #402 #997616

>>997588
Создавай win32 приложения. Аналог на линупсах не знаю.

>>997598
Всякая системная, сетевая, околонизкоуровневая хрень, где не хочется писать с нуля на С, а хочется использовать современный язык с современным синтаксисом и кучей либ на все случаи жизни.

Ответы997623997715

28 Май, 21:01 #403 #997623

>>997616
> кучей либ на все случаи жизни
Ну это ты конечно слегка напиздел

Ответы997633997635

28 Май, 21:21 #404 #997633

>>997623
Он про современный язык напиздел, а про либы — это правда.

Ответы997635

28 Май, 21:27 #405 #997635

>>997633
>>997623
Ну епта, из языков с такими возможностями для системного/низкоуровнего программирования и различными либами, у крестов лучший синтаксис. В общем то, мне кроме крестов и голого С ничё на ум не приходит. Ну разве что ассемблер, но на нем что нибудь прикладное крупное писать - это ояебу пристрелите меня.

Ответы997715

29 Май, 00:17 #406 #997715

>>997616
На линупсах консоль никогда не показывается просто так. В винде она показывается потому, что программы вызывают WriteConsole вместо printf, в позиксах такой поебени нет (либо она исчезающе редка).
>>997635
>В общем то, мне кроме крестов и голого С ничё на ум не приходит.
Питон, Перл.

Ответы997848

29 Май, 01:42 #407 #997755

>>997588
Спермоблядь незаметна. Где ещё есть такие искусственные проблемы?

29 Май, 07:45 #408 #997799

>>996663

>а использование Java/C# для разработки графических приложений известно к чему приводит.

К чему приводит? В чем подвох? А то вот вкатываюсь и понимаю, что на C# охренеть как проще гуй заделать, причем не надо под 100 мб библиотек таскать с приложением

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

Ответы997913997917

29 Май, 10:51 #409 #997848

>>997715
>Питон, Перл.
Ты про пхп и жаваскрипт забыл - топовые языки для системного и низкоуровневого программирования.

29 Май, 11:34 #410 #997863

Почаны, поясните за сертификаты, кто-нибудь получал, есть ли в них профит?

Где можно попроходить тесты и посмотреть примерные задания, которые выдают для получении сертификата?

Я какое-то время по нужде быдлокодил (на работе заставили выучить если это можно назвать словом "выучить" кресты и писать на них несложные MFC приложения), а сейчас решил взяться за голову и научиться писать нормальный код, за последний год немного подтянул синтаксис, упорядочил знание ООП, конечно, гуру С++ все равно назовут это быдлокодом, но я готов совершенствоваться и дальше.
Теперь хочу попробовать получить какой-нибудь сертификат. Поможет ли это при устройстве на работу? Спрашиваю, потому что читал разные мнения вплоть до того, что сертификаты только хуже делают при трудоустройстве.

Ответы997901997969

29 Май, 13:41 #411 #997901

>>997863
Двачую этого, тоже интересно

29 Май, 13:51 #412 #997913

>>997799
Дотнет уже занимает пару гигов на диске. Виртуальная машина медленно интерпретирует байткод, количество ненужных выделений памяти и кастов типов растёт экспотенциально со сложностью программы, сборщик мусора может полностью заморозить гуй в любой момент. В результате получаем 50% потерю производительности у конечного пользователя только ради того чтобы быдлокодерам было проще шлёпать Form1_Click. Это приемлемо для энтерпрайзных систем на серверах, но графические приложения должны быть исключительно нативными.

29 Май, 13:55 #413 #997917

>>997799
В том что это говнище будет работать с таким скрипом, с каким твои, блеять, родители делали тебя, сука, гомункула.

Попробуй на торренте найти ту же 2010 или 2008-ю студию — последние нативные версии. И сравни их с последней, 2017. При том, что она работает куда лучше той же 15-й, оно всё ещё лагает на любом железе хуже жидеи (у той хоть есть честная несколькоминутная индексация, во время которой не поработаешь, а вот у студии такое говно перманентно).

Ответы997920998154

29 Май, 14:04 #414 #997920

>>997917

О, не знал что студия 2017 не нативная. А я то думал хули она так лагает блять.

Выходит VS2017 написали на C#? пиздос. Зашквар уровня IDE от JetBrains на джаве

Ответы998163

29 Май, 14:06 #415 #997921

>>997480

Обучение программированию лучше начинать с С.
С++ язык слишком сложный и уже для опытных программистов. Вкатываться в него не имеет смысла.

А вот С более прост, при этом мощь языка так и прет как и в С++.

Ответы997926

29 Май, 14:08 #416 #997925

Никуда вы не денетесь от прогресса. Гуй на JS/C# — это объективная реальность.

Objective C тоже был в своё время тормозным гогном, но ничего, макоблядь писали.

Ответы997928

29 Май, 14:09 #417 #997926

>>997921
>мощь языка так и прет
Если не сказать, что ПРОТЕКАЕТ

Ответы997927

29 Май, 14:13 #418 #997927

>>997926
УТЕКАЕТ

29 Май, 14:14 #419 #997928

>>997925
>Гуй на JS/C# — это объективная реальность.
>JS
>J
>S

Ты ебанутый?

Я БЛЯТЬ ХУЕЮ. Люди хотят писать программы на языках которых не существует физически. Ты понимаешь что твоего JS кроме браузера нигде нет?

Взять тот же Node.js, это обычная С программа которая выполняет код написанный с синтаксисом JS.

А теперь представь громоздкость среды которая должна будет целый GUI создавать подобным методом. Нахуй эти костыли нужны, когда уже есть QT/GTK для белых людей или те же Windows Forms/WPF для C#?

Какому мудаку придет на ум писать на яваскрипте ебучий гуи?

Ответы997936

29 Май, 14:23 #420 #997936

>>997928
Ты сам понял, что написал?

Ответы997937

29 Май, 14:26 #421 #997937

>>997936

Да. Уже есть managed решение в виде C# отработанного годами для GUI.

Для JS нет нихуя кроме небольшой ноды. JS как языка кроме браузера нигде не существует.

Если так хочется писать менеджед гуи, каким мудаком надо быть чтоб писать на чем то кроме .NET?

Ответы997939

29 Май, 14:28 #422 #997939

>>997937
Ипать довен. VSCode, Atom и ещё миллиарды десктопных приложений на JS.

Ответы997942997954

29 Май, 14:31 #423 #997942

>>997939

Говно написанное через анальные костыли и анальные врапперы над врапперами.

Поссал тебе на ебало, смузихлеб

Ответы997946

29 Май, 14:33 #424 #997945

GUI можно писать только на WinAPI.
Кто не согласен - нахуй из профессии.

Ответы997956

29 Май, 14:34 #425 #997946

>>997942
Ты можешь бомбить сколько тебе угодно, но это объективная реальность.

29 Май, 14:45 #426 #997954

>>997939
>Atom
Лагает при большом количестве открытых файлов/большом объеме кода. Особенно я почувствовал разницу, когда с атома на phpstorm пересел. Просто как с жигулей в ауди.

Ответы998070

29 Май, 14:45 #427 #997956

>>997945
Долго и муторно

29 Май, 15:12 #428 #997969

>>997863
Нету сертификатов, потому что всем похуй. Сертификаты появляются, когда язык начинают немеренно форсить, тот же C#, к примеру.
Я не знаю, какие ты там собрался по крестам сертификаты получать, но я бы туда только шаблонов и запихивал, чтобы на десять тысяч проходило парочку человек (я бы не прошел). Самое лучшее, что ты можешь сделать, так это написать свою какую-нибудь либу или еще что. Сделай на бич-хабе реп и по-маленьку запушивай туда новинки своих творений, через пол-года увидишь, что все, что ты делал - говно.

Ответы997989

29 Май, 16:00 #429 #997989

>>997969
У меня вообще эта идея с сертификатами появилась, когда возник вопрос, а как вообще определяют подойдет ли кандидат на должность программиста или нет. Ведь кроме стажа по сути сейчас ничего не просят. Допустим, у меня 10 лет стажа, я в это время в том числе и кодил, но как это проверить? Сертификат может дать хоть какой-то срез, хотя, понимаю, что от быдлокодерства это все равно не защитит.

Впрочем не суть, я все же решил просто попроходить различные тесты и понял что пока никуда не гожусь, т.к. местами не понимаю основ. В следующем посте по этому поводу у меня будет вопрос.

Ответы997998998000

29 Май, 16:23 #430 #997998

>>997989
Ну какого-нибудь Сеньора Помидора посадят рядышком, он будет слушать, что за хуйню ты несешь. Если будешь пиздеть, то точно объебешься. Если контора хуевая, то отправят к ХаРэ (ЭйчАр, как они любят себя называть), бывают такие, что там королева бензоколонки сидит, которая отсеивает в две кучи и, как следствие, без должного надсмотра в саму же контору попадают лютые объебосы, которые могут только промеж булок шурудить своим волосатым языком.
Стаж, это тоже понятие такое, я бы за стаж, конечно, не цеплялся. Но, однако, как минимум год нормального программирования у тебя должен быть за плечами и вот этот год ты постоянно должен заполнять свою головешку полезной информацией и по итогу неплохо было бы посмотреть, что поменялось за год. Я думаю, если ты будешь каждый месяц инспектировать и анализировать свои предыдущие работы и постепенно набивать хоть на чем-нибудь руку, то там понятно станет что и как. Например, тебе станет очевидно, какие ты решения принимал, насколько они подходили или нет в конкретных ситуациях. Все-таки это тоже опыт.
Был тут до меня один человек, который работал года 4. Стаж, по сути, 4 года, а в коде, ну полная хуйня творилась. Человек применял паттерны налево и направо, делал какую-то хуйню там, где это не надо было и (sic!) будо охуительно лицезреть что-то вроде такого:
>> QMap<...,...> m_map;
>> ...
>> if (m_map.contains(key)) { return m_map[key]; }
Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры. Он все хвастался, что постоянно подключает новейшие сборки Qt, но самое веселое было то, что он использовал legacy-подход к работе, который был еще в 4 версии. То есть вместо кошерных ныне соединений при помощи указателей на функции и лямбд, как тут уже не раз обсуждалось, он цеплял все через SIGNAL(...) и SLOT(...). Про охуительную реализацию PIMPL на классы с тремя интовыми полями я вообще молчу.

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

29 Май, 16:23 #430 #997998

>>997989
Ну какого-нибудь Сеньора Помидора посадят рядышком, он будет слушать, что за хуйню ты несешь. Если будешь пиздеть, то точно объебешься. Если контора хуевая, то отправят к ХаРэ (ЭйчАр, как они любят себя называть), бывают такие, что там королева бензоколонки сидит, которая отсеивает в две кучи и, как следствие, без должного надсмотра в саму же контору попадают лютые объебосы, которые могут только промеж булок шурудить своим волосатым языком.
Стаж, это тоже понятие такое, я бы за стаж, конечно, не цеплялся. Но, однако, как минимум год нормального программирования у тебя должен быть за плечами и вот этот год ты постоянно должен заполнять свою головешку полезной информацией и по итогу неплохо было бы посмотреть, что поменялось за год. Я думаю, если ты будешь каждый месяц инспектировать и анализировать свои предыдущие работы и постепенно набивать хоть на чем-нибудь руку, то там понятно станет что и как. Например, тебе станет очевидно, какие ты решения принимал, насколько они подходили или нет в конкретных ситуациях. Все-таки это тоже опыт.
Был тут до меня один человек, который работал года 4. Стаж, по сути, 4 года, а в коде, ну полная хуйня творилась. Человек применял паттерны налево и направо, делал какую-то хуйню там, где это не надо было и (sic!) будо охуительно лицезреть что-то вроде такого:
>> QMap<...,...> m_map;
>> ...
>> if (m_map.contains(key)) { return m_map[key]; }
Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры. Он все хвастался, что постоянно подключает новейшие сборки Qt, но самое веселое было то, что он использовал legacy-подход к работе, который был еще в 4 версии. То есть вместо кошерных ныне соединений при помощи указателей на функции и лямбд, как тут уже не раз обсуждалось, он цеплял все через SIGNAL(...) и SLOT(...). Про охуительную реализацию PIMPL на классы с тремя интовыми полями я вообще молчу.

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

Показать весь текст
Ответы998006998020998074

30 Кб, 1178x665

29 Май, 16:27 #431 #998000

>>997989
а вот и вопрос.

Нужно определить что выдаст этот код:
Ответ: ddcccdd

Я пытался в нем разобраться, отнумеровал (1-11) строки, в которых может быть какой-то вывод и затем для лучшего понимания начал сам себе объяснять каким образом получился этот ответ. И в некоторых местах я не понимаю почему и так и прошу объяснить.

1-3. как мне кажется у меня не возникает вопросов. В 1 и 2 выделяется память в стэке и запускает обычный конструктор. В 3 пункте на основе уже имеющейся переменной методом копирования создается новая переменная в стэке.
4. Вызвал у меня легкое непонимание в совокупности с 5 и 6. Почему в 4 при создании ссылки и присвоении ей значения другой переменной (я так понимаю ссылка теперь будет указывать на стэк, в котором хранится переменная с) никакой конструктор не вызывается.
5-6. При этом, если переменная объявляется и тут же инициализируется значением другой переменной того же типа, то задействуется конструктор копирования (пункт 5), но при этом, если переменная была объявлена заранее и ей присваивается значение другой переменной, то никаких конструкторов не задействуется (пункт 6)
7. При создании указателя выделяется память в хипе размером с переменную типа А, немного сбивает А(с). Возникает вопрос, при этом в эту память записывается что-то?
8. Разница с предыдущим в том, что передается ссылка. И вот тут у меня самый большой вопрос. Ссылка указывает на стэк, а указателю нужен хип, верно? В этой строке работает конструктор копирования, но я не понимаю почему.
9. со статик кастами я плохо знаком, так что тут у меня ни ответов ни вопросов.
10. вопросов не вызывает
11. Функция принимает 2 параметра по ссылке. В первый параметр передается цифра, и вот тут я снова не понимаю почему работает обычный конструктор, а не копирования. Второй параметр выглядит понятнее, и, как я подумал, там тот же механизм, что и в пункте 3, но нет, тоже обычный конструктор.

Кто-нибудь сможет объяснить, пожалуйста, где я не прав и ответить на вопросы.

Ответы10017971001800

29 Май, 16:37 #432 #998006

>>997998
Ещё год назад я делал лабы на QT5, про новый синтаксис вообще ничего не слышал в то время. В официальных доках всё было по-старому.
Ничего удивительного, что чувак про него не знал.

Ответы998022

29 Май, 16:48 #433 #998011

Пишу программы для расчета зарплаты сотрудников. Расчет основан на стаже работы, количестве подчиненных и верхнем пределе надбавки. Стаж и количество подчиненных используются с коэффициентами.

Есть абстрактный класс для сотрудников worker.
От worker наследован head - абстрактный класс для всех сотрудников, которые могут иметь подчиненных.
employee : worker не может иметь подчиненных.
manager : head и sales : head могут иметь подчиненных.

Функция расчета зарплаты определена в worker виртуальной. В head определена вспомогательная функция расчета зараплаты с учетом числа подчиненных и поле std::set подчиненных.

Я хочу избавиться от дублирования кода, потому что функция расчета везде почти одна и та же, она в employee и она же в manager и sales отличается только тем, использует ли она число подчиненных.

Можно сделать ее общей для всех и в классе employee число подчиненных использовать с коэффициентом 0.

Как это лучше реализовать? Для этой функции нужен set подчиненных, а определять его в worker как поле я не хочу, потому что worker - общий класс, и не все сотрудники могут иметь подчиненных.

29 Май, 17:08 #434 #998020

>>997998
>>> QMap<...,...> m_map;
>>> ...
>>> if (m_map.contains(key)) { return m_map[key]; }

Ошибка не очевидна без контекста. Например: обрабатывается поток данных, и на каждом шаге пары могут быть вставлены и исключены, и если ключа нет, то может возвращаться какое-то "пустое" значение (не обязательно default-constructed).

Если тип функции - референс, то уже смешнее, конечно.

Ответы998022

29 Май, 17:19 #435 #998022

>>998020
В противном случае он возвращал объект по-умолчанию, если мне память не изменяет. Значения он только вставлял. Если мне память не изменяет, это было что-то вроде кэша уже использованных данных или как это можно назвать.

>>998006
Этому синтаксису уже несколько лет

Ответы998053

29 Май, 17:40 #436 #998036

Почему в VS2015 отваливается дебаг? Breakpoint'ы не срабатывают, код выполняется. Запускаю в режиме отладки, гугл не помогает.

Ответы998040

29 Май, 17:48 #437 #998040

>>998036
всё, неактуально. это я д

29 Май, 18:05 #438 #998053

>>998022
Если это мемоизация, как ты написал, то в чем проблема в приведенном участке? Так же и делается.

Ответы998054998056998399

29 Май, 18:09 #439 #998054

>>998053
Нахуя искать дважды?!

Ответы998095

5 Кб, 572x134

8 Кб, 813x110

29 Май, 18:12 #440 #998055

Почему код с 1.png в rezultAddress заносит 0x0100AA00 а не 0x0040AA00?

Ответы998058

29 Май, 18:13 #441 #998056

>>998053
Короче, фиксю по-быстрому. Уже нихуя не помню, если до репа завтра доберусь выложу это чудо.

29 Май, 18:34 #442 #998058

>>998055
Потому что результат сложения числа с указателем - это указатель + sizeof(тип)*число

29 Май, 19:09 #443 #998070

>>997954
Никто не говорит, что не лагает. Да, это жрёт память и ЦП. Но зато быстро (а значит и дёшево) и удобно (наверное, я сам не пробывал).

73 Кб, 992x490

29 Май, 19:14 #444 #998074

>>997998
>>> QMap<...,...> m_map;
>>> ...
>>> if (m_map.contains(key)) { return m_map[key]; }
>Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры.
Ну или ты не осилил.

Ответы998090998399

29 Май, 19:37 #445 #998090

>>998074
Жёстко ты его.

29 Май, 19:46 #446 #998095

>>998054
Потому что для типов, которые не имеют "дэфолтных" значений это единственный вариант.
По мне так это предложение к обсуждению и улучшению, а не пиздец ошибка. Можно в optional значение завернуть например. Придираешься ты.

29 Май, 20:20 #447 #998114

Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?

Ответы998115998119

37 Кб, 836x345

37 Кб, 950x509

29 Май, 20:20 #448 #998115

>>998114
Ну ебать, картинки как обычно забыл.

29 Май, 20:22 #449 #998119

>>998114
Зачем делать именно так? Конкретно по вопросу ничем не помогу, это уже даже не байтоёбство, а какой-то изврат.

Ответы998123

29 Май, 20:23 #450 #998121

Есть темплейт, представляющий собой mutex-ограниченное std::queue<unique_ptr<T>> с паблик Push, Pop и is_Empty.

Понадибилось в другом классе иметь референсы на хранимые объекты.
Можно ли в одном темплейте объединить возможность работы как с unique_ptr<T>, так и с &T или вообще с <T> напрямую? Или городить отдельный темплейт для этого?

Заставлять его хранить shared_ptr<T> тоже не хочу, потому что многие классы пользуются этой же очередью для хранения и уникальных объектов тоже.

Ответы998131998218

29 Май, 20:25 #451 #998123

>>998119
Это подготовительные меры. Мне главное понять, как основываясь на ImageBase и RVA в таблице импорта получить VA, по которому можно вызвать LoadLibraryA. Разумеется, в реальном приложении всё будет несколько иначе.

Ответы998210

29 Май, 20:27 #452 #998131

>>998121
Ну так что тебе мешает получить из unique_ptr ссылку на объект?

Ответы998136

29 Май, 20:33 #453 #998136

>>998131
unique_ptr на объекты хранятся в map другого класса (выше по иерархии), он же управляет временем их жизни.

Дочернему классу он их передает для обработки (временно), гарантируя, что они никуда не исчезнут и не будут удалены до конца обработки. Дочерний класс их не хранит, соответственно передавать shared_ptr смысла нет. При этом передает он их через "реалтаймовую" очередь, для которой и создан темплейт.

Изначально в проекте использовались только очереди с unique_ptr и проблем не было. Теперь понадобилось использовать тот же класс "живой очереди" для любых объектов или референсов на них и вопрос в том, можно ли универсализировать темплейт.

Ответы998139998145

29 Май, 20:36 #454 #998139

>>998136
В голову пришло только декларить все необходимые queue в твоём классе, а потом использовать нужные, оверлоадя все Pop и Push, либо указывая в конструкторе варинт использования.

29 Май, 20:44 #455 #998145

>>998136
Хочешь сделать контейнер для любых типов?
Ну можешь хранить всё добро в виде объектов одного базового класса на всех, вроде как так можно делать.
Я не знаю, почему, но мне кажется, что тебе может помочь паттерн Visitor.

Ответы998146

29 Май, 20:47 #456 #998146

>>998145
Технически, он и так работает для базовых типов, но способы передачи объектов и указателей отличаются, а значит тело функции должно понимать, что перед ней, и вызывать соответствующие методы (std::move для unique_ptr, прямая передача для &Object).

Сами объекты мне там хранить не нужно вообще никогда, либо умные указатели, либо референсы.

Ответы998148998218

29 Май, 20:53 #457 #998148

>>998146
Мне кажется, тебе реально тут Visitor может помочь.

29 Май, 20:54 #458 #998149

Вот, если лагает последняя студия, то какую поставить? Слышал, что более старые вменяемые. Какие именно, и где их достать?

Ответы998154

29 Май, 20:56 #459 #998154

>>998149
Вот же тебе писали -> >>997917

Ответы998156

29 Май, 20:57 #460 #998156

>>998154

Хорошо, спасибо

29 Май, 21:07 #461 #998163

>>997920
Чот хуево. Я сейчас на 2015, некоторых фич с++17 уже не хватает.

Ответы998164

29 Май, 21:09 #462 #998164

>>998163
Так не вышел ещё стандарт.

Ответы998165

29 Май, 21:10 #463 #998165

>>998164
Радыю по этой штуке
http://en.cppreference.com/w/cpp/utility/optional

Ответы998174

29 Май, 21:18 #464 #998174

>>998165
Так там же он вроде есть в experimental, не?

Даже если нет — возьми из буста/фолли/кути или что ты там юзаешь (да да, привыкай тащить в проект кучу говна руками, это очень жизненный опыт шиндовс-программера).

29 Май, 21:19 #465 #998176

Либо напиши свой опшен, там 20 строк кода.

Ответы998180

29 Май, 21:22 #466 #998180

>>998176
Оно-то да, но в стандарте приятнее.

29 Май, 21:52 #467 #998210

>>998123
пиздуй в с-тред

29 Май, 22:01 #468 #998218

>>998121
>>998146
Используй std::move для всех проходящих мимо объектов.

29 Май, 22:06 #469 #998220

Есть такая проблема
https://gist.github.com/tjarrow/d9b447cc48c663a7343b0bd7601b831e
Это цифровая сортировка по 16-чной записи
почему-то упорно не хочет работать с количеством элементов, меньше чем 10
дебажил долго и упорно - так и не разобрался
подскажите, где ошибка

Ответы998224998225998238

29 Май, 22:09 #470 #998224

>>998220
>почему-то упорно не хочет работать
Когда к доктору приходишь, тоже говоришь "нога упорно не хочет ходить"?

29 Май, 22:11 #471 #998225

>>998220
Ты это сам написал? Подозреваю, что нет.
Падает, потому массив хранит разряды чисел. В стандартном 32-битном целом их как раз 10.

Ответы998232

29 Май, 22:26 #472 #998232

>>998225
ты про mas_col ? он же вроде и хранит 10 разрядов

Ответы998234

29 Май, 22:28 #473 #998234

>>998232
>mas_col = new int[10]; //Здесь падает
>почему-то упорно не хочет работать с количеством элементов, меньше чем 10
Слющай, ну я и подумал, что когда 9 тут ставишь, программа умирает. Мол, что за глупые вопросы.

29 Май, 22:34 #474 #998238

>>998220
http://ideone.com/e2OFVp

ЧЯДНТ?

http://ideone.com/xDoUjw - scanf("%x",...) читает в unsigned int, а не int.

Ответы998244998249

29 Май, 22:39 #475 #998244

>>998238
>http://www.cplusplus.com/reference/cstdio/scanf/
>x
>Unsigned argument

29 Май, 22:50 #476 #998249

>>998238
ничего не понял. проблема в scanf ?

Ответы999262

29 Май, 22:56 #477 #998252

Обращаюсь к знатокам
Есть некоторый фрагмент кода, который считает строки в файле хз, есть ли функция для этих целей в стандартных библиотеках, суть не в этом
Почему когда я вставил этот же фрагмент в другую прогу все переменные забрал, библиотеки подключил цикл начал зацикливаться, хотя в той, другой проге, все работает идеально?

Ответы998255

29 Май, 22:58 #478 #998255

>>998252
Обращаюсь к знатокам
Есть некоторые педали, который вращает колеса хз, может другие вели сразу с педалями, суть не в этом
Почему когда я вставил эти педали в другой велик все тросики забрал, колёса подключил рама начала зацикливаться, хотя на том, другом велике, нормально ездил?

Ответы998256

29 Май, 23:01 #479 #998256

>>998255
ясно
какой язык, такие и обезьяны

Ответы998257

29 Май, 23:03 #480 #998257

>>998256
С таким вопросом тебе бы в любом треде по ебалу дали.

Ответы998261

29 Май, 23:07 #481 #998261

>>998257
о дибил
ты знаешь что через интернет в ебало дать невозможно?

Ответы998264

29 Май, 23:09 #482 #998264

>>998261
То-то ты до сих пор кровоподтёки потираешь.

30 Май, 06:12 #483 #998399

>>998074
Ох ты блять, ну спасибо. Вопрос повторяется. Нахуя искать дважды?!
Про второй пример со значением по-умолчанию, я уже сказал, что нужно было делать так или через .find и проверкой итератора (первое проще).

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

des 30 Май, 07:25 #484 #998406

Годная реализация шифрования des(triple des) у кого-нибудь есть?
Кажется, что уже сто вариаций переробовал, все дают разные результаты шифрования с ключом. И при этом ни один не дает правильного. За правильность взял то, что дает большинство бесплатных сприптов в онлайне, найденных по запросу в гугле "des encode online".
Интересует именно обособленная реализация, а не часть большой библиотеки, которую придется тащить с исполняемым файлом.

Ответы998415998437

30 Май, 08:43 #485 #998415

>>998406
В каком режиме нужно?

Ответы998419

30 Май, 08:55 #486 #998419

>>998415
ECB
Самый простой.

Ответы998421

30 Май, 08:59 #487 #998421

>>998419
На сисярпе вроде писал DES в ECB. Щас завтрак приготовлю и гляну, если в шарпе поковыряться не брезгуешь..

Ответы998444

6 Кб, 435x189

30 Май, 09:06 #488 #998423

VS2017, если что. Что мне с этим делать? Где достать эти библиотеки?

Ответы998918

30 Май, 09:44 #489 #998437

>>998406
Охуительный критерий правильности.
Тесткейсы botan проходят на этом онлайн декодере - http://des.online-domain-tools.com/

Тесткейсы (в hex-формате): https://github.com/randombit/botan/blob/master/src/tests/data/block/des.vec

Код несильно зависит от остальных компонент ботана, они нужны только для унификации интерфейсов - https://github.com/randombit/botan/blob/master/src/lib/block/des/des.cpp

Можно пересобрать библиотеку, отключив всё лишнее -
https://github.com/randombit/botan/blob/master/src/lib/block/block_cipher.cpp

Ответы998444

30 Май, 10:01 #490 #998444

>>998421
Давай, интересно.

>>998437
Гляну, окей.

Ответы998453

30 Май, 10:23 #491 #998453

>>998444
А я тебя наебал, нет у меня DES. У меня ближайшее к DES это AES и Magma только.

30 Май, 10:51 #492 #998473

что читать что смотреть что бы устроиться c++ программистом? какие технологии изучать

Ответы998474

30 Май, 10:52 #493 #998474

>>998473

C++-программистом разве работают? Я думал, что это язык для программисткого хобби.

Ответы998475

30 Май, 10:53 #494 #998475

>>998474
а разве не работают? так что там надо уметь что бы взяли на работу

Ответы998478

30 Май, 10:56 #495 #998478

>>998475
STL, Boost, опционально Qt, матан, алгебра, физика, геометрия, теория чисел, криптография

Ответы998479

30 Май, 10:58 #496 #998479

>>998478
stl и boost полостью? а из матана физики геометрии что вообще может пригодиться?

Ответы998485

30 Май, 11:07 #497 #998485

>>998479
Ответ на оба вопроса: смотря на что ты претендуешь и куда идёшь устраиваться. Проблема крестов в плане трудоустройства в том, что их уже не используют повсеместно. Заводы автоматизируют на С/машинном коде/асме, энтерпрайз на джаве/C#, web под asp.net/php. Остаются всякие нефтяные/геологические компании, где шарп/джава не подходит по производительности, а C/asm/op-code не подходит из за сложности разработки. Ну gamedev сюда можно приплести, в том же UE пишут на крестах да и юнити вроде можно заставить их жрать, браузеры, короче долгостроящиеся приложения, обрабатывающие большой сетевой трафик и/или системные функции. Вообще, мне кажется, что в разработке большого приложения голых плюсов будет недостаточно, и придется обращаться к сторонним библиотекам, ибо без них ты работаешь уже не над приложением, а над созданием собственного велосипеда для крестов, грубо говоря, создаешь себе инструмент, а не инструментом создаёшь продукт. Поэтому, КМК, stl может и нахуй шлют, а boost/Qt их аналоги используют активно, поэтому не лишним будет хотя бы скачать и посмотреть чё в них есть.

Ответы998537998542

30 Май, 13:08 #498 #998537

>>998485
ну вообще я бы хотел просто работать над каким нибудь десктоп приложением, но так походу не получиться, тот же на пример скайп, мб браузер ну и тд, что можешь посоветовать, яп сменить мб, или технологии под c++ подходящие под это

Ответы998659

30 Май, 13:23 #499 #998542

>>998485
>stl может и нахуй шлют
Поясни ньюфагу почему очень многие пишут, что stl - говно и вообще не нужен? Хотя сам Страуструп вроде пишет, что лучше использовать стандартную библиотеку, чем писать свои велосипеды.

Ответы998544998612

30 Май, 13:30 #500 #998544

>>998542
Какой язык, такая и стандартная библиотека.

30 Май, 13:39 #501 #998547

Какие есть аналоги для громоздкого switch, например, если я разбираю пришедшие сетвые пакеты и по ключу определяю, что делать с данными?

Ответы998551998556998561

30 Май, 13:51 #502 #998551

>>998547
Ключи представляют собой упорядоченные числа и по ключу вызывается функция из массива функций? И неважно сколько разных ключей, на быстродействии это уже никак не скажется.

30 Май, 13:58 #503 #998556

>>998547
ЕМНИП, даже в крестах есть хэш-таблицы и лямбды.

30 Май, 14:08 #504 #998561

>>998547
https://en.wikipedia.org/wiki/State_pattern

Ответы998578

30 Май, 14:50 #505 #998578

>>998561
Не вижу, как ему этот паттерн поможет.

30 Май, 15:14 #506 #998590

>>988927
>Подсветка илитная.
У нее название есть?

30 Май, 15:51 #507 #998612

>>998542
В STL есть алгоритмы и много довольно полезной дичи, но контейнеры имеют не совсем удобный интерфейс. Это понятно, что комитет пытается облегчить библиотеку как только можно и сделать ее эффективнее, но от этого страдает функционал и принятие мелочей занимает очень долгое время, потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.
НО:
Я до сих пор не могу понять, почему комитет еще не принял методы по изменению порядка следования байт, чтобы переводить всякую дичь без помощи htons/ntohs и т.д. Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми данными, как QDataStream, например и приходится пользоваться boost-ами или cereal, к примеру (хоспаде, благослови создателя последнего, потому что это охуенно).
Почему нет рефлексии времени компиляции, ведь это, к слову, не такая уж и непосильная задача для компилятора, который во время работы уже имеет на руках синтаксические деревья. Где sting_view или какая-нибудь подобная дичь. Почему создателям стандарта понадобилось около 20 лет, чтобы понять, что неплохо бы иметь метод std::string::data, который возвращал бы указатель на НЕКОНСТАНТНЫЕ данные.

ВСЕ ПРИНИМАЕТСЯ ОЧЕНЬ МЕДЛЕННО. Кажется, будто бы в комитете сидят ебаные хипстеры, помешанные на создании каких-то ненужных выебонов в языке, вместо того, чтобы требовать наличия хорошей библиотеки.

Ответы998625998717998719

30 Май, 16:04 #508 #998625

>>998612
>потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.
operator[]

Ответы998633

30 Май, 16:16 #509 #998633

>>998625
Он вставляет элемент, если его нет. А тут подразумевается случай, когда вставлять отсутствующий элемент ненужно.

30 Май, 16:56 #510 #998659

>>998537
>посоветовать
смотря сколько тебе лет, есть ли стабильный доход, чем до этого занимался

30 Май, 18:24 #511 #998717

>>998612
> Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми данными
http://en.cppreference.com/w/cpp/io/basic_istream/read

Ответы998908

30 Май, 18:25 #512 #998719

>>998612
> нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден
Для того, чтобы не бросать исключение из []

Ответы998726

30 Май, 18:31 #513 #998726

>>998719
Это риторический вопрос был. Со знаками препинания у меня проблемы, вот тут то я и обосрался. Но, в общем, ты понял мою идею. И даже не в эксепшене дело, хотя он мог бы и тут вывалиться в зависимости от того, поддерживает ли тип исключительно копирование (как правило, move-семантака не кидает исключений, я такого не встречал). Это просто удобно.

Ответы998815

30 Май, 21:45 #514 #998793

Ананасы, где лучше вставлять Doxygen`овскую документацию: в хидере или в *.cpp?

30 Май, 22:35 #515 #998815

>>998726
>хотя он мог бы и тут вывалиться в зависимости от того, поддерживает ли тип исключительно копирование
Зачем для создания несуществующего значения копирование?

Ответы998908

31 Май, 01:12 #516 #998888

Можно ли вызвать метод класса в отдельном потоке из другого метода этого же класса, без использования static?

Ответы998890998901998909998910999282

31 Май, 01:13 #517 #998890

>>998888
змейку небось пишешь?

Ответы998892

31 Май, 01:14 #518 #998892

>>998890
Нет.

31 Май, 01:26 #519 #998901

>>998888
Я потратил немало времени, и нашёл способ только костыль использовать. При создании треда через WinAPI точно ты ему передаёшь параметр в виде void*. Я в качестве аргумента использовал this, а функцию вообще вынес за класс.

Ответы998920

31 Май, 02:21 #520 #998908

>>998815
У контейнеров Qt есть метод .value, который возвращает значение по-умолчанию в случае отсутствия записи в контейнере. Семантика передачи значения по-умолчанию там копирующая, поэтому будет вызван копирующий конструктор или присваивание. Если бы был метод с семантикой передачи rvalue-значения по-умолчанию, тогда, при наличии перемещающего конструктора или/и присваивания, при передаче временного объекта вызывался бы этот метод.

>>998717
Сырое я могу и через c-функции написать, только стало ли удобнее сереализовать целый объект при помощи метода write. Я так не думаю. Классов для работы с исключительно бинарными данными нет.

31 Май, 02:29 #521 #998909

>>998888
Кто тебе запретит?

124 Кб, 1391x598

31 Май, 02:35 #522 #998910

>>998888
Это ты?

Ответы999036

31 Май, 03:47 #523 #998918

>>998423
Переустанови виндовс. Виндовс сама не переустановится. Переуставнови её сейчас. Переустанови её ещё раз. Поставь раком и опять переустанови.

31 Май, 03:57 #524 #998920

>>998901
Знаете, что такое лямбда-функция?! Прекрасное расширение языка. Аллах акбар!
В void он кастует, ну как-же. А потом, поди dynamic_cast-ом получаешь указатель на нужный объект.

Ответы999038999070

31 Май, 10:31 #525 #998971

https://pastebin.com/FjFEtd42
Ломается после надписи сломайся здесь. Как это вообще возможно?
Down это массив указателей на тот же тип, что и сам Tree_node_source.
Valgrind выдает в следующей строке
Conditional jump or move depends on uninitialised value(s)
Н = 1 в момент поломки. Хотя до этого н = 0 не было равно. Но во многих местах такая же конструкция с фор и все работает.
Как думаете, в чем может быть дело?

Ответы998972

31 Май, 10:33 #526 #998972

>>998971
Ой, нет, ошибка. Это размер вектора(кстати, это вектор, а не массив) = 1.

Ответы998973

31 Май, 10:33 #527 #998973

>>998972
>вектора Down
Фикс еще один

31 Май, 12:03 #528 #999036

>>998910
Нет.
Я вообще редко вопросы задаю, и обычно нахожу в гугле, а если не нахожу, то спрашиваю в /pr.

31 Май, 12:04 #529 #999038

>>998920
>Знаете, что такое лямбда-функция?!
Расскажи.

31 Май, 13:21 #530 #999070

>>998920
reinterpret_cast

31 Май, 14:00 #531 #999104

Слышал, что большие куски кода лучше выносить за рамки блока if, оставляя в нем лишь возврат в случае ошибки. типа не
if (b==a)
{
//500 строк кода
}
else return false;
а
if (b!=a)
return false;
//500 строк кода

Это как то связано с особенностями компиляции или просто делается ради повышения читаемости кода?

Ответы999158

31 Май, 15:12 #532 #999158

>>999104
Для повышения читаемости. return early pattern

31 Май, 15:34 #533 #999172

https://pastebin.com/pfEukDRn назвать Tree.h
https://pastebin.com/eZMj2bqB файл с классом, назвать User.cpp
https://pastebin.com/ie3JY8z9 main-файл, я назвал Server.cpp
Это своебразная база данных. Все происходит в классе User. На вход подается команда (на вход в смысле явно прописывается в main), парсится, а затем выполняется. База данных имеет структуру дерева иерархии. То есть есть например
Россия Правительство Путин.
Здесь записью является только путин. У каждой структуры Tree_node( вершина дерева) есть пометка IsAHum_ которая показывает запись это или точка в дереве иерархии. Вектор Down в структуре это вектор со ссылками. map Work это набор данных, который должен быть только у записей. То есть у Путина есть, а у Правительства нет.
Теперь о проблеме.
По отдельности команда SELECT и PRINT работают. SELECT каждый раз ищет в резульате предыдущего поиска (SELECTа). Изначально за результат предыдущего поиска берется все дерево. Причем поиск производится по дереву иероархии. То есть можно выбрать все записи, которые входят в правительство по запросу:
SELECT Правительство
Обходом дерева получаются ссылки на все вершины дерева предыдущего поиска, имя которых равно поисковому запросу, после чего эти ссылки помещаются в вектор Down специального экземпляра структуры Tree_node Buf_, который является свойством класса User.
То есть происходит следующее
https://pastebin.com/M71AXcH7
Программа падает, когда мы пытаемся сделать PRINT после поиска, а именно в момент обхода вершины дерева Top_, а именно его вектора со ссылками Down.
То есть если попросить напечатать содержимое Top_ до поиска, то все будет ок, такк как там просто копия всего дерева, но если выполнить селект, а уже потом попытаться вывести все, то в файле User.cpp после строки 52, программа упадет. Не могу понять в чем дело.
https://pastebin.com/iduBst2c Файл с базой. Назвать Base.txt

Ответы999510999803

31 Май, 17:54 #534 #999262

>>998249
Проблемы вообще нет, оно работает.
Проблема в сканф проявится только с большими числами.

31 Май, 18:02 #535 #999282

>>998888
Запросто, только снихронизацию не забудь сделать.

Ответы999452

31 Май, 18:04 #536 #999286

Смотрю, уже гет скоро будет. Кто решил брать?

Ответы999289

31 Кб, 317x372

31 Май, 18:05 #537 #999289

>>999286
Предлагаю нового маскота

31 Май, 22:34 #538 #999421

2ch, я не могу понять, почему в char массив помещается русская C строка (char a[] = "Строка";) при кодировке UTF8? Проверяю каждый символ в массиве, он продолжает весить 1 байт, хотя исходя из UTF8 он должен весить 2 байта, в чём дело? Для этого же вроде нужен wchar_t, разве нет?

Ответы999529999552

31 Май, 23:17 #539 #999452

>>999282
Это понятно.

Спасибо.

31 Май, 23:29 #540 #999457

В чём разница между reinterpret_cast<T>(value) и просто (T)value?

Ответы999463

31 Май, 23:49 #541 #999463

>>999457
>reinterpret_cast
Тем, что так не надо делать, например

Ответы999469

01 Июн, 00:13 #542 #999469

>>999463
Чому? Натыкался на мнение, что сишный каст ололо небезопасный и его аналогом является reinterpret_cast<T>()

Ответы999483

01 Июн, 00:48 #543 #999474

Меня тут ругают за использование realloc. А в чём собственно говоря проблема? Выделять новый кусок и туда копировать каждый раз через new/delete? - Зачем?
Что-то я побродил по сети, никакой аргументации не нашёл. Наоборот что-то про люниксы и хорошее быстродействие realloc, ну и не советуют одновременно new /malloc использовать.

Ответы999483

01 Июн, 01:23 #544 #999483

>>999469
Сишный каст - это не реинтерпрет каст, это примерно static_cast. reinterpret_cast - это смена типа без смены содержимого. Он должен использоваться только в платформозависимом коде для грязных трюков.
http://en.cppreference.com/w/cpp/language/explicit_cast
Дальше сам гугли.
>>999474
Проблема только в том, что перевыделенная память может иметь другой адрес со всеми вытекающими.

Ответы999487

01 Июн, 01:41 #545 #999487

>>999483
Как будто через new/delete адрес не может измениться. Глупости, значит.

Ответы999881

01 Июн, 07:12 #546 #999510

>>999172
Бамп вопросу, третий день сижу, не могу понять что происходит.

Ответы999547

01 Июн, 08:49 #547 #999529

>>999421
Это магия.

Ответы999543

01 Июн, 10:35 #548 #999543

>>999529
Так и знал что для двачедаунов компьютер это не более чем магическая коробка.

Ответы999548

01 Июн, 10:41 #549 #999547

>>999510
Выложи архивом, лень качать отдельно и переименовывать.

Ответы999554

01 Июн, 10:42 #550 #999548

>>999543
Если знал, то что спрашиваешь тут?

01 Июн, 10:52 #551 #999552

>>999421
Где ты тут utf8 видишь?

01 Июн, 10:58 #552 #999554

>>999547
Да, вот тар.
http://dropmefiles.com/049fT

Ответы999803

01 Июн, 13:25 #553 #999605

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

Ответы999622

01 Июн, 14:18 #554 #999622

>>999605
Обычно в теле функции, которой передается обработка, сначала вызывается оригинальная функция, а потом твои добавки в неё.

Ответы999635

01 Июн, 14:52 #555 #999635

>>999622
А, понял, все нормально значит.

01 Июн, 15:05 #556 #999642

Читаю книжку из шапки ("Принципы и практика использования C++") и по мере прочтения накапливаются вопросы, на которые книга не даёт. Я их тут буду задавать партиями или сначала дочитать и попробовать всё до последней главы?

Ответы999648

01 Июн, 15:34 #557 #999648

>>999642
Задавай

Ответы10000651000747

14 Кб, 262x363

15 Кб, 391x355

19 Кб, 370x360

01 Июн, 20:35 #558 #999776

Аноны, нужна ваша помощь. Решил я запилить игруху в консольке, типа файтинг.
Пока что только познаю ООП и у меня возникла проблема. Мой друган, который шарит в C#, рассказал мне, что в С++ можно делать переопределение функции.

Итак, у меня есть один базовый класс Player, в котором есть функция Attack() {}, а также есть два производных класса Knight и Wizard. У этих производных классов тоже есть функция Attack, в которой выводится пока что просто сообщение о том, что они таки нанесли урон. Вобщем нужно сделать так, чтобы в зависимости от созданного класса игрока (рыцарь или маг), вызывался нужный производный класс класса Player. То есть я создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.

Ответы999805999809

01 Июн, 21:34 #559 #999803

>>999554
>>999172
Анончики, ну че, не понятно что там не так?

Ответы999816

01 Июн, 21:41 #560 #999805

>>999776
http://www.cplusplus.com/doc/tutorial/polymorphism/

Ответы999808

01 Июн, 21:47 #561 #999808

>>999805
Можешь вкратце объяснить? Просто мой ингриш не настолько крут, чтобы статейки специализированные читать

Ответы999830

01 Июн, 21:48 #562 #999809

>>999776
>создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.
Ты или делаешь два разных класса наследованные от игрока с разными функциями, или если ты хочешь именно один класс с разными в зависимости от инициализации функциями, то включи в свой класс ещё одно поле-подкласс или указатель на функцию, которой и будут различаться твои player-объекты после инициализации.

Ответы999843

01 Июн, 22:01 #563 #999816

>>999803
Это пиздец, а не код.

Ответы999817

01 Июн, 22:03 #564 #999817

>>999816
Сорри, я пока только учуссь, скажи что не так, перепишу получше. Алсо есть более чистая версия без отладочных выводов.

Ответы999820

01 Июн, 22:04 #565 #999820

>>999817
Начнём с того, что ты сохраняешь в вектор адреса локальных переменных.
User::Select(Tree_node Top_node_source, string Rule)
{
...
Buf_.Down.insert(Buf_.Down.end(), &Top_node_source);
...
}

Дальше разгребать скучно.

Ответы999821

01 Июн, 22:07 #566 #999821

>>999820
Ага, ну да, ошибка, странно что прога падает именно тут, но сейчас попробую поправить.
алсо подскажи, как писать лучше?

Ответы999905

01 Июн, 22:25 #567 #999830

>>999808
Код после Virtual members.
Лучше бы ты с жабы начал. Без системы в крестах можно мозг сломать.

Ответы999843

01 Июн, 22:53 #568 #999843

>>999809
>>999830
Все, разобрался, спасибо. Ну там конечно и синтаксис с этими ебучими указателями. Ваще не представляю, как мне их понять

Ответы999847999881

01 Июн, 23:11 #569 #999847

>>999843
Ищи информацию, в интернете на русском всё есть. Не пытайся понять сам.

02 Июн, 00:20 #570 #999870

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

02 Июн, 00:48 #571 #999881

>>999487
Поздравляю, теперь тебе нужно не только уметь создавать/удалять объект, но ещё и уметь ресайзить его. И объекты бывают посложнее, чем массивы чаров.
>>999843
Тебе будет понятнее, если сказать тебея, что указатель - это то же самое, что адрес? И чло сложение числа с указателем - это указатель, сдвинутый на это число позиций относиттельно его типа? Что там понимать-то?

02 Июн, 01:36 #572 #999895

Двач, эта сука меня заебала. Хочу считать бинарный файл в char, но внезапно, ебучий ifstream отказывается читать после первого нулевого байта, несмотря на то, что я явно указываю размер который определен верно через тот же ifstream в ifstream.read(). Разумеется там есть нулевые байты, это же кусок .exe файла. Короче, как мне полностью запихать в char содержимое бинарного файла, а не до 1 нуля? Там предлагают шаманские методы через string, но звучит и пахнет как костыль.

Ответы999900

02 Июн, 02:06 #573 #999900

>>999895
Открой файл в с флагом binary, перейди в конец файла, узнай позицию, вернись в начало файла, выдели память, считай файл через read. Вроде должно работать.

02 Июн, 02:35 #574 #999905

>>999821
Что-то я устал от назойливых новых ньюфагов.

02 Июн, 13:16 #575 #1000024

>>996619 (OP)
Вопрос с++ господам.Есть задача про уравнение двух чисел джвумя заранее заданными операциями(Если это возможно). Как уравнять пару, еще более-менее понятно, но как определить неуравниваемую пару чисел?
Код здесь http://ideone.com/e9J0WG
Условие здесь:

Результатом применения операции 1 к паре натуральных чисел (a, b) является пара натуральных чисел (a+1, 2×b). Результатом применения операции 2 к паре натуральных чисел (a, b) является пара натуральных чисел (2×a, b+1).
Требуется за как можно меньшее число шагов с помощью операций 1 и 2 получить из пары (X, Y) пару равных чисел.

Результат записать как последовательность из единиц и двоек. Если "уравнять" данную пару невозможно, вывести 0.

33 Кб, 490x488

14 Кб, 501x135

02 Июн, 15:05 #576 #1000065

>>999648
1.
В книжке показали классы и сказали несколько интересных слов, я не мог не заинтересоваться и даже забил бы на них до главы про классы, но в результате экспериментов получил ненароком такое. Картинка. То есть я беру указатель на класс, выделяю под него память и явно вызываю конструктор (Хрен его знает как там это правильно сделать, написать q->my(); оно мне не позволяет, да и может быть конструкция q=my() уже сама по себе выделит память (хотя в этом случае я достиг падения программы, в отличие от способа с malloc), я пока с этим не разбирался и разберусь потом. Суть в другом.). И потом в коде обращаюсь к массиву в классе. Только вот судя по консоли у меня деструктор вызывается раньше этого обращения. Какого чёрта он там вызывается?
2.
Если в самом начале я напишу просто my q;, то всё работает корректно, деструктор вызывается после моего обращения.
Возникает вопрос, а как тогда объявить переменную-класс не вызывая конструктор вообще? По запросу "Как не вызывать неявно конструктор по умолчанию при объявлении класса?" ничего найти не могу. Вот я просто хочу объявить класс - то есть иметь переменную с нужными мне полями и вручную с ними работать внутри функции не вызывая конструктор вообще - как мне это сделать?
3.
В си структуры были. Я слышал, что в с++ теперь можно методы в структурах делать, так и оказалось. Предположил что структуры тем и отличаются, что у них конструктор не будет вызываться. Ан нет, абсолютно аналогично работает. В чём тогда различие структур и классов ныне? Тоже не могу нигде найти.

Ответы10000991000162

02 Июн, 16:04 #577 #1000099

>>1000065
Первая картинка: my() - это конструирование временного объекта. Оператор = вызывает либо move constructor (если стандарт 11+. Деструктор не вызывается) либо copy constructor (похоже на твой случай). Память освобождается, в *q остаётся неправильный указатель, ты разъебошил ногу.

Если ты хочешь присваивать объекты с указателями, тебе нужно сбацать правильный copy constructor и move constructor.

>Возникает вопрос, а как тогда объявить переменную-класс не вызывая конструктор вообще?
Ты пытаешься выстрелить себе в ногу. Если ты хочешь, чтобы при создании переменной ничего не происходило, просто объяви пустой конструктор (или оставь дефолтный). RAII, парень.

3. Структуры отличаются только тем, что в них все члены public.

Ответы1000111

02 Июн, 16:07 #578 #1000101

Олсо, дефолтные конструкторы перемещения и копирования определяются компилятором не всегда.

http://en.cppreference.com/w/cpp/language/move_constructor
http://ru.cppreference.com/w/cpp/language/move_constructor
http://en.cppreference.com/w/cpp/language/copy_constructor
http://ru.cppreference.com/w/cpp/language/copy_constructor

Ответы1000111

02 Июн, 16:36 #579 #1000111

>>1000099>>1000101
Понятно, спасибо.
>RAII
А удобно на самом деле, пусть не совсем очевидно.

02 Июн, 18:25 #580 #1000162

>>1000065
1. malloc только выделяет память указанного размера, но не вызывает конструктор, если хочешь пердолинга, то делай placement new, например: http://ideone.com/wdHEjl
А лучше всего делать стандартными средствами при помощи new и delete, а еще лучше использовать умные указатели.

2. То, как ты это назвал, это называется выделение в "статической" области памяти, то есть по-факту структура описания самого объекта размещается в стеке, если же твой класс содержит поля, которые создаются в куче, то они будут созданы в куче, как бы ты этого не хотел. При выходе из области видимости переменной, размещенной в стеке, для нее вызывается деструктор, причем в порядке, обратном их декларации. То есть, например:

>> {
>> my a;
>> my b;
>> ...
>> }

Сначала будет вызван деструктор для b, затем для a. Это вполне логично.
Если ты создал объект в куче (при помощи new, например), тогда деструктор для фактического объекта вызван не будет, вызван будет (если это вообще вызовом можно назвать, по факту, просто указатель стека сместится или данные перезатрутся в зависимости от контекста) деструктор для переменной-указателя, а не на то, что она указывает. То есть в следующем случае:

>> my *a = new a();
Ты имеешь две сущности. Первая - переменная a, которая является указателем на объект в куче. вторая - непосредственно объект a в куче. При выходе a из области видимости будет вызван деструктор именно для ПЕРЕМЕННОЙ-УКАЗАТЕЛЯ, а НЕ для ОБЪЕКТА. Поэтому, если ты не передал куда-то указатель для дальнейшего использования или не вызвал delete вручную, тогда, поздравляю, ты проебал память.

3. Различие структур между c и c++ состоит в том, что в обычном c кроме членов-данных ничего в структуру затолкать нельзя. В лучшем случае, если ты захочешь сотворить подобие какого-то класса, тебе будет создать члены-данные, являющимися указателями на соответствующие функции. Получится своеобразный виртуальный класс. На деле так делают изредка и просто прибегают к созданию заковыристых имен для функций на все случаи жизни. Алсо в цэ ты можешь при инициализации структуры указывать названия заполняемых полей явно, например:

>> struct my_struct s = { .param_a = 1, .param_b = "char str" ... };

В крестах такую хуйню не провернешь уже, потому что, как говорят старики из комитета, нахуя вам такой синтаксис, если родина дала конструкторы.
В крестах же отличие структуры от класса минимально и заключается лишь тем, что по-умолчанию в структуре все члены открытые (являются public), в то время, как в классе они по-умолчанию private. Деструктор, конструктор, если они не объявлены, генерируются автоматически, как, впрочем, и некоторые другие конструкторы и присваивания (но там есть множество исключений).
Алсо при объявлении шаблонов ты можешь использовать только ключевое слово class или typename, хотя это никакого отношения к структурам, фактически, и не имеет.

02 Июн, 18:25 #580 #1000162

>>1000065
1. malloc только выделяет память указанного размера, но не вызывает конструктор, если хочешь пердолинга, то делай placement new, например: http://ideone.com/wdHEjl
А лучше всего делать стандартными средствами при помощи new и delete, а еще лучше использовать умные указатели.

2. То, как ты это назвал, это называется выделение в "статической" области памяти, то есть по-факту структура описания самого объекта размещается в стеке, если же твой класс содержит поля, которые создаются в куче, то они будут созданы в куче, как бы ты этого не хотел. При выходе из области видимости переменной, размещенной в стеке, для нее вызывается деструктор, причем в порядке, обратном их декларации. То есть, например:

>> {
>> my a;
>> my b;
>> ...
>> }

Сначала будет вызван деструктор для b, затем для a. Это вполне логично.
Если ты создал объект в куче (при помощи new, например), тогда деструктор для фактического объекта вызван не будет, вызван будет (если это вообще вызовом можно назвать, по факту, просто указатель стека сместится или данные перезатрутся в зависимости от контекста) деструктор для переменной-указателя, а не на то, что она указывает. То есть в следующем случае:

>> my *a = new a();
Ты имеешь две сущности. Первая - переменная a, которая является указателем на объект в куче. вторая - непосредственно объект a в куче. При выходе a из области видимости будет вызван деструктор именно для ПЕРЕМЕННОЙ-УКАЗАТЕЛЯ, а НЕ для ОБЪЕКТА. Поэтому, если ты не передал куда-то указатель для дальнейшего использования или не вызвал delete вручную, тогда, поздравляю, ты проебал память.

3. Различие структур между c и c++ состоит в том, что в обычном c кроме членов-данных ничего в структуру затолкать нельзя. В лучшем случае, если ты захочешь сотворить подобие какого-то класса, тебе будет создать члены-данные, являющимися указателями на соответствующие функции. Получится своеобразный виртуальный класс. На деле так делают изредка и просто прибегают к созданию заковыристых имен для функций на все случаи жизни. Алсо в цэ ты можешь при инициализации структуры указывать названия заполняемых полей явно, например:

>> struct my_struct s = { .param_a = 1, .param_b = "char str" ... };

В крестах такую хуйню не провернешь уже, потому что, как говорят старики из комитета, нахуя вам такой синтаксис, если родина дала конструкторы.
В крестах же отличие структуры от класса минимально и заключается лишь тем, что по-умолчанию в структуре все члены открытые (являются public), в то время, как в классе они по-умолчанию private. Деструктор, конструктор, если они не объявлены, генерируются автоматически, как, впрочем, и некоторые другие конструкторы и присваивания (но там есть множество исключений).
Алсо при объявлении шаблонов ты можешь использовать только ключевое слово class или typename, хотя это никакого отношения к структурам, фактически, и не имеет.

Показать весь текст

57 Кб, 1361x543

02 Июн, 19:09 #581 #1000168

Дроч, почему каждый раз программа отрабатывает вплоть до return в main() без нареканий, а потом тут же хуйня пикрелейтед?

Ответы1000169

02 Июн, 19:12 #582 #1000169

>>1000168
всё, нашел. это я чедух, удалял указатель, для которого не выделена память.

02 Июн, 20:30 #583 #1000203

Есть ли объяснение TSP https://en.wikipedia.org/wiki/Travelling_salesman_problem для крестов по русски? Мне туго в англ.

Ответы1000205

02 Июн, 20:31 #584 #1000205

>>1000203
А не не. Уже нашел

02 Июн, 20:48 #585 #1000216

Переменная это проименованная область памяти, у меня вопрос, где хранится имя самой переменной и где хранится адрес к которому привязана переменная?

Ответы100022410002411000268

02 Июн, 21:05 #586 #1000224

>>1000216
>где хранится имя самой переменной
Нигде. После компиляции имя переменной не имеет смысла. Если язык интерпретируемый, то это уже по его усмотрению в какой-нибудь хеш-таблице, скорее всего.

02 Июн, 21:59 #587 #1000241

>>1000216
>де хранится имя самой переменной
В компиляторе.
>где хранится адрес к которому привязана переменная?
В коде программы.

02 Июн, 22:53 #588 #1000254

Какой же code::block убогий. Зачем вообще за него сел.

02 Июн, 23:27 #589 #1000268

>>1000216
>Переменная это проименованная область памяти
Это тебе училка по информатике сказала?

12 Кб, 413x131

03 Июн, 04:25 #590 #1000314

Второй вариант через ссылку - наиболее короткий способ сделать сие извращение?

Ответы1000414

03 Июн, 08:47 #591 #1000327

В универе стоит люто настроенный компилятор, который не хочет пропускать функцию stoi.<string> подключен, он просто требует, чтобы было объявление этой функции. Что нужно сделать, чтобы прога скомпилировалась.

Ответы10003531000411

03 Июн, 11:25 #592 #1000353

>>1000327
using namespace std;

Ответы10003571000380

03 Июн, 11:41 #593 #1000357

>>1000353
Как изменить максимальное значение для RAND_MAX? Мне нужно увеличить потолок, получаемый через rand().
Простой #define RAND_MAX 0xFFFFFFFF даст нужный результат?

Ответы1000367

03 Июн, 11:56 #594 #1000363

Как запилить двухмерный динамический массив?

Ответы1000370

03 Июн, 12:07 #595 #1000367

>>1000357
Ты можешь в заголовочном файле библиотеки поменять. Но никаких гарантий, что что-то поменяется или rand после этого будет работать стабильно.
Если компилятор поддерживает C++11, то попробуй это.
http://ru.cppreference.com/w/cpp/numeric/random/uniform_int_distribution

03 Июн, 12:17 #596 #1000370

>>1000363
https://stackoverflow.com/questions/1403150/how-do-you-dynamically-allocate-a-matrix

Ответы1000379

03 Июн, 12:53 #597 #1000379

>>1000370
Спасибо

03 Июн, 12:53 #598 #1000380

>>1000353
Прописано было.
мимо_автор_оригинального поста

Ответы1000388

03 Июн, 13:06 #599 #1000382

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int ptrx = NULL, ptry = NULL;
int bdxy = NULL;
//int x[100]; Ненужное
//int y[100];
//int rsg[100];
int n, i, rst, grr;
cout<<"Сколько пунктов "<<endl;
cin>> n;

ptrx= new int[n];
ptry= new int[n];

bdxy= new int*[n];
for(i=0; i<n; i++){
bdxy= new int[n];
}

for(i=1; i<=n; i++){
cin>> ptrx >> ptry;
}

for(i=0; i<=n; i++){
for(grr=1; grr<=n; grr++){
rst = abs(ptrx[grr]-ptrx)+abs(ptry[grr]-ptry);
cout<< i <<" и "<< grr <<" равно "<< rst <<endl;
bdxy[grr] = rst;
}
rst = abs(ptrx[i+1]-ptrx)+abs(ptry[i+1]-ptry);

}

cout<<endl;

for (i=0; i<n; i++){
for(int j=0; j<n; j++){;
cout<<" "<<bdxy[j];
}
cout<<endl;
}

delete []ptrx;
delete []ptry;
for(int count=0; count<2; count++){
delete []bdxy[count];
}

return 0;
}

Закрывает программу не окончив её. Это задача коммивояжёра, только там даются координаты и формула для расчета расстояние между городами по координатам.

В чем ошибка?

03 Июн, 13:06 #599 #1000382

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int ptrx = NULL, ptry = NULL;
int bdxy = NULL;
//int x[100]; Ненужное
//int y[100];
//int rsg[100];
int n, i, rst, grr;
cout<<"Сколько пунктов "<<endl;
cin>> n;

ptrx= new int[n];
ptry= new int[n];

bdxy= new int*[n];
for(i=0; i<n; i++){
bdxy= new int[n];
}

for(i=1; i<=n; i++){
cin>> ptrx >> ptry;
}

for(i=0; i<=n; i++){
for(grr=1; grr<=n; grr++){
rst = abs(ptrx[grr]-ptrx)+abs(ptry[grr]-ptry);
cout<< i <<" и "<< grr <<" равно "<< rst <<endl;
bdxy[grr] = rst;
}
rst = abs(ptrx[i+1]-ptrx)+abs(ptry[i+1]-ptry);

}

cout<<endl;

for (i=0; i<n; i++){
for(int j=0; j<n; j++){;
cout<<" "<<bdxy[j];
}
cout<<endl;
}

delete []ptrx;
delete []ptry;
for(int count=0; count<2; count++){
delete []bdxy[count];
}

return 0;
}

Закрывает программу не окончив её. Это задача коммивояжёра, только там даются координаты и формула для расчета расстояние между городами по координатам.

В чем ошибка?

Показать весь текст
Ответы10003871000388

03 Июн, 13:16 #600 #1000387

>>1000382
Этот функционал появился в версии C++11. Адекватного способа добавить это в отсталый компилятор нет.

Ответы10003881000409

03 Июн, 13:17 #601 #1000388

>>1000380 -> >>1000387

>>1000382
Залей куда-нибудь код (ideone), может кто-нибудь захочет покопаться.

Ответы1000406

03 Июн, 13:40 #602 #1000406

>>1000388
Я уже решил. Там наверно mingw ебнулся и не принимал <= в цикле, для ввода в матрицу значений.

03 Июн, 13:48 #603 #1000409

>>1000387
То есть нужно либо самому в код добавить такую функцию?

03 Июн, 13:50 #604 #1000411

>>1000327
Так, СТОП. Тебе не <string> нужен, а <cstring>

Ответы1000426

03 Июн, 13:58 #605 #1000414

>>1000314
Гугли про strict aliasing

Ответы1000747

03 Июн, 14:12 #606 #1000426

>>1000411
Подключено.

662 Кб, 393x287

03 Июн, 15:13 #607 #1000465

Как реализовать норамльный поиск?

Ответы1000486

03 Июн, 15:54 #608 #1000486

>>1000465
Реализации и алгоритмы есть в интернете. В общем случае это какая-то разновидность перебора, т.к. задача коммивояжера - NP-трудная.

CMake 03 Июн, 16:35 #609 #1000493

Программач, не могу осилить это говно. Вроде C++ тред как раз для этого подойдет.

Так вот, какие-то сабпроекты - вообще охуеть, сам синтаксис пиздец. Я думал что посмотрю на гитхабе как делают все, а хуй там, костыли какие то.

Непонятно вообще, прямые пути писать в CMakeLists для каждого файла в корне проекта, или эти add_subdirectory использовать. И как их линкать между собой.

Помоги определиться с написанием с правильного CMake для проекта такой структуры:
/Project
- CMakeLists.txt
- /res
-- project.cpp
-- project.hpp
-- resources.hpp
- /src
-- app.ico
-- project.manifest
-- resources.rc

Ответы1000542

03 Июн, 19:01 #610 #1000542

>>1000493
Что-то вроде этого, не проверял, может накосячил где
https://pastebin.com/E7MpKcp7

Ответы1001655

35 Кб, 792x418

04 Июн, 03:27 #611 #1000747

>>1000414
Ужасы то какие.
>>999648
4. Дочитал до перегрузки операторов. Вот глядя на эти оптимизации компилятора, если я перегружаю, для примера, "+", есть гарантии, что компилятор не поменяет местами операнды?
5. inline. Я могу его прикрепить в объявлении, в определении или сразу в двух местах, любая комбинация ошибок не выдаёт. В каких из четырёх вариантов этот модификатор применяется?
6. Список инициализации. В этот список можно засовывать чёрт-знает что. То есть по сути это просто более краткая запись того, что я изобразил ниже обведённое красным?

Ответы1000749

04 Июн, 04:18 #612 #1000749

>>1000747
4. Компилятор никогда не меняет местами операнды (т.е. справа налево). Компилятор лишь может поменять порядок вычисления.
5. Если объява и тело в одном файле, пофигу, куда писать. Если писать инлайн в заголовке для скомпиленой либы, наверняка будет ошибка (ты предлагаешь компилятору инлайнить то, для чего нет исходника).
6. Для POD-типов список инициализации будет именно aggregate-инициализацией (пришедшей из C, это часто in-place конструирование). Обведённое красным может быть конструированием временного объекта (грамматически это std::initializer_list (название похоже на то, про что ты спрашиваешь, но это совсем другое), из которого конструируется объект нужного типа) и копированием/перемещением оного. Вообще говоря компилятору дозволено вызвать in-place конструктор в обоих случаях, но умеют ли они анализировать частный случай ради копеечной выгоды? Вряд ли.

Очевидно, что в случае с int это похую. В общем случае списки инициализаций предпочтительнее. Тело вообще может быть пустое.

04 Июн, 04:46 #613 #1000751

4. Порядок вычисления - это если на одном уровне операндов есть вызовы функций. Порядок применения операторов точно определён (associativity).

04 Июн, 08:37 #614 #1000760

Как правильно подключать инклуды?
Видел кучу разных способов, кто-то подключает все в main.h, а сам main.h в main.cpp. Кто-то во всех .h и в main.cpp подключает main.h, а потом эти .h уже подключают в .cpp.

Ответы1000947

04 Июн, 13:19 #615 #1000815

Уважаемые с++ знатоки, вопрос задает аноним из Мухосранска.
Есть один говнокод http://ideone.com/A0jPgw. Работает правильно, но неоптимально. Как его можно оптимизировать?
Суть задачи: На вход подаются строки, а выдать мы должны либо "ОК", если строка встречается впервые, либо эту же самую строку и число(Сначала 1, потом 2, потом 3 и так далее)
Пример:
Ввод:
А
А
B
C
Вывод:
OK
A1
OK
OK
Да, я знаю, что это можно сделать без класса, но мне надо с классом

Ответы10008471000869

04 Июн, 14:11 #616 #1000847

>>1000815
Строки загоняешь в словарь. Сама строка- ключ, значение по этому ключу - количество раз сколько эта строка встречалась.

Ответы10008711000930

04 Июн, 14:46 #617 #1000869

>>1000815
Есть такой контейнер. Map называется.

Ответы10008711000895

04 Июн, 14:50 #618 #1000871

>>1000847
>>1000869
Спасибо, буду гуглить
Туда ведь можно этот класс вкорячить? Мне просто необходимо именно написать класс для хранения этой инфы

Ответы1000875

04 Июн, 14:53 #619 #1000875

>>1000871
Зачем тебе вкорячивать свой класс в контейнер общего назначения? Ты упорот?

Ответы10008781000895

04 Июн, 14:56 #620 #1000878

>>1000875
Преподы мои упороты
> Разработайте класс, для хранения информации о зарегистрированных пользователях.

Ответы100088510008991000999

04 Июн, 15:03 #621 #1000885

>>1000878
Стоит уточнить упоротость преподов. Может оказаться, что map нельзя использовать.

Ответы10008891000895

04 Июн, 15:06 #622 #1000889

>>1000885
Про контейнеры не сказано ничего, следовательно разрешены, и map в том числе, я полагаю
Вообще говоря, решение такой задачи не требует и контейнеров и вообще занимает шесть строк, но вот эти ограничения... Зачем?

Ответы1000890

04 Июн, 15:08 #623 #1000890

>>1000889
Я бы хотел увидеть эти 6 строк, но вижу только ошибку 404.

Ответы1000892100089310008951000930

23 Кб, 816x131

04 Июн, 15:10 #624 #1000892

>>1000890
Каюсь, шесть строк -- это с мапом. Но все равно, зачем сюда вкорячивать класс -- неясно

Ответы10008951000999

04 Июн, 15:14 #625 #1000893

>>1000890
А, блин, только сейчас заметил, что код уже . Вот что я напердолил с классом
http://ideone.com/8aXkqL

04 Июн, 15:17 #626 #1000895

>>1000890
>>1000892
>>1000885
>>1000875
>>1000869
Господа, а если реализовать класс с одним-единственным публичным полем -- ником и реализовать все через мап, но вместо строки используя созданный класс. Взлетит?

Ответы1000897

04 Июн, 15:25 #627 #1000897

>>1000895
А чем тебя твоя реализация не устраивает? Все методы find() делают то же самое, ты просто пользуешься уже готовой реализацией.

Ответы1000898

04 Июн, 15:28 #628 #1000898

>>1000897
Лично меня моя реализация устраивает всем. Проблема в том, что на большом тесте (98532 строк) она не укладывается в лимит по времени (лимит -- 1 секунда)

Ответы100090110009091000918

04 Июн, 15:30 #629 #1000899

>>1000878
> Преподы мои упороты
Скорее всего это ты упорот немного. Тебе нужен класс для хранения информации о зарегистрированных пользователях, а не класс для храненения имени пользователя. Тоесть тебе нужен класс с методами (к примеру): add(std::string name) и count(std::string name). Можно сделать чтобы add заодно еще и возвращал сколько раз встречается добавленное имя. Алсо add лучше назвать push_back (для большего подобия с stl), но это по желанию, смотря насколько ты себя дерзким парнем позиционируешь.

Ответы10009031000930

04 Июн, 15:32 #630 #1000901

>>1000898
Попробуй isThere модификатор inline заебашь.

Ответы1000903

04 Июн, 15:37 #631 #1000903

>>1000899
> Тебе нужен класс для хранения информации о зарегистрированных пользователях, а не класс для храненения имени пользователя.
Просвети нуба, пожалуйста, а поля ему какие нужны?
>>1000901
> inline
Ускорило, но на три сотых секунды. Надо выгадать еще 0,067 хотя бы

Ответы10009051000912

04 Июн, 15:39 #632 #1000905

>>1000903
>на три сотых секунды
Гулять как гулять! Хуячь __forceinline!

Ответы10009101000930

04 Июн, 15:43 #633 #1000909

>>1000898
Проблема твоей реализации что у тебя для подсчета количества строк просматриваются все 98532. А, к примеру, для варианта с словарем для ста тысяч строк будет просмотрено не больше 17 элементов - так как там логарифм. Твой алгоритм можно немного модифицировать отсортировав массив с строками, и используя бинарный поиск - эффективность будет как у словаря. Но остается проблема с заполнением словаря, если строки тебе не выдаются сразу пачкой - тебе прийдется пересортировывать массив после каждого добавления. Даже если использовать сортировку вставками, которая для такого случая (вставка одного элемента в же отсортированый массив) очень удобна - все равно нужно сдвигать элементы в массиве. Тоесть добавление каждой новой строки - линия. Тогда как в словарь - логарифм.

Ответы1000910

04 Июн, 15:45 #634 #1000910

>>1000905
Так оно не компилится.
Или я не туда пишу?
__forceinline int isThere (int n, int curPos, username * base){
int c = 0;
for(int i = 0; i < n; i++)
if(base[curPos].nick == base.nick)
c++;
return c;
}
>>1000909
Понял, примерно, буду гуглить

Ответы1000932

04 Июн, 15:50 #635 #1000912

>>1000903
> поля ему какие нужны
Необходимый минимум - контейнер для строк. Тот же словарь, например. Или свой велосипед. Ну а так добавить можно еще что-то, например количество запомненых строк. Единственно правильного варианта нет. Нужно отталкиваться от сценариев использования твоего класса.

Ответы10009141000930

04 Июн, 15:52 #636 #1000914

>>1000912
То есть, как минимум map<string, int> и еще один int? Понял, пойду пердолить

04 Июн, 16:03 #637 #1000918

>>1000898
Замени на std::unordered_map

Ответы10009301000992

04 Июн, 16:24 #638 #1000930

>>1000918
>>1000912
>>1000905
>>1000899
>>1000890
>>1000847

Господа, всем огромная благодарность, но послушал я вас лишь отчасти. Зашло вот это: http://ideone.com/innaMF Оцените по шкале от индуса до Линуса Торвальдса?

Ответы100093410009511000954100096310009651000999

04 Июн, 16:25 #639 #1000932

>>1000910
Что за хуйню ты напрограммировал. У тебя линейный поиск идет, в то время, как по-хорошему надо логарифмический сделать с исопльзованием std::set или std::map, например.

Ответы1000934

04 Июн, 16:27 #640 #1000934

>>1000932
Надо, но я же нуб, так что написал хуйню. Но оно же работало. Меня смущала необходимость написания именно класса, поэтому я высрал это
>>1000930

04 Июн, 16:53 #641 #1000947

>>1000760
>Как правильно подключать инклуды?
Что значит "правильно"?

Ответы1000990

04 Июн, 16:55 #642 #1000951

>>1000930
> от индуса до Линуса Торвальдса
Они друг от друга недалеко ушли. Оба не любят strict aliasing и обращаются к указателям до проверки их на NULL.

Ответы1000954

04 Июн, 17:06 #643 #1000954

>>1000951
Где ему тут проверка нужна?
>>1000930
Если в своей friend функции поменяешь значения на ссылки, то может получится ещё пару миллисекунд выиграть, но это не точно.

Ответы10009551000957

04 Июн, 17:07 #644 #1000955

>>1000954
>Где ему тут проверка нужна?
Я в общем говорю. Твой код не смотрел.

Ответы1000956

04 Июн, 17:08 #645 #1000956

>>1000955
А, жопой читаю, простите.

04 Июн, 17:11 #646 #1000957

>>1000954
> то может получится ещё пару миллисекунд выиграть
Возьму на вооружение, но все же я и так теперь управляюсь за треть секунды, мне хватит

04 Июн, 17:19 #647 #1000963

>>1000930
> username::username(string a){
> nick = a;
> }
username::username(string a) : nick(std::move(a)) {}

Ответы10009661000987

04 Июн, 17:22 #648 #1000965

>>1000930
> inline bool operator < (const username a, const username b){
> if (a.nick<b.nick)
> return 1;
> else return 0;
> }
Типичный boolshit.

inline bool operator < (const username a, const username b){ return a.nick<b.nick; }

Ответы1000966

04 Июн, 17:24 #649 #1000966

>>1000965
И как по твоему, сократит время выполнения?
>>1000963
Хотя в эффективность этого верю

Ответы10009671000987

04 Июн, 17:25 #650 #1000967

>>1000966
>Хотя в эффективность этого верю
Дело не в эффективности. Я почти уверен, что компилятор выдаст для твоего и моего варианта одинаковый код. Он не тупой и понимает, что `if (x == true) return true; else return false;` можно заменить на return x;

Ответы1000970

04 Июн, 17:29 #651 #1000970

>>1000967
Резонно

04 Июн, 17:54 #652 #1000987

>>1000963
>>1000966
В операторе >> я бы тоже использовал std::move для передачи строки в конструктор.

04 Июн, 18:00 #653 #1000990

>>1000947
Есть же наверное какие-то общие правила.

Ответы1000993

04 Июн, 18:04 #654 #1000992

>>1000918
Кстати, хорошая идея. Потому что в самом начале уже задается максимальное количество имен и можно выделить память для unordered_map-а (с учетом max_load_factor естественно).

04 Июн, 18:04 #655 #1000993

>>1000990
Думаю, нужно отталкиваться от того, что любой инклюд подставляет код в указанное место. Поэтому используй защиту от повторных инклюдов (#pragma once или комбинации #ifndef ANY_KEYWORD #define KEYWORD #endif, смотря каким компилятором пользуешься), разделяй реализацию класса и заголовочный файл класса, чтоб меньше кода подставлялось, это уменьшит время компиляции. Все статические инклюды то, где ничего не меняется, всякие <iostream>, <string>, <Windows.h> выдели в один отдельный заголовок, сделай его предкомпилированным, а всем остальным .cpp файлам прикажи использовать этот предкомпилированный заголовок, это тоже уменьшит время компиляции. Хотя всё это имеет значение на очень больших проектах, там будет ощутимо, когда компиляция занимает по 10-30 секунд.
Смотри, чтоб не было рекурсивных инклюдов, когда A.h включает B.h И B.h включает A.h

Ответы1001024

04 Июн, 18:23 #656 #1000999

Классно угораете.
>>1000878
Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?
Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.
Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.
>>1000892
Когда говорят о строках, говорят о строках читаемого кода - по статементу на строку.
>bits/stdc++
Совсем ебанутый.
>>1000930
Отлично, username - это чуть ли не один в один string. С таким же успехом мог сделать typedef string username
>string name;
>in >> name;
>a = username(name);
>return in;

in>>a.nick - нет? Слишком просто?

Ответы1001027

04 Июн, 18:26 #657 #1001002

Даже ещё лучше:
return in>>a.nick;

Ответы1001027

04 Июн, 18:55 #658 #1001024

>>1000993
Годно расписал, спасибо.

04 Июн, 19:02 #659 #1001027

>>1000999
> Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?
> Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.
> Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.
Честно скажу -- мне плевать. Мне нужно было пройти тесты и написать какой-никакой класс. Так что ну их, эти костыли, да и скорее всего, это никто и читать не будет
>>1001002
> Даже ещё лучше:
> return in>>a.nick;
А вот это классно, спасибо, возьму на вооружение

16 Кб, 897x294

10 Кб, 835x240

04 Июн, 19:18 #660 #1001033

Чё пацаны, упарываетесь, когда работаете?

04 Июн, 21:36 #661 #1001103

Можно ли каким-нибудь образом определить какая из перегруженных функций была использована или будет использована?

Ответы1001118

04 Июн, 22:06 #662 #1001118

>>1001103
Дебагером, отладочными трейсами

Ответы1001122

04 Июн, 22:11 #663 #1001122

>>1001118
Как?

Ответы1001127

04 Июн, 22:24 #664 #1001127

>>1001122
внутри перегруженной функции вывести текст вида "peregruzenaya funkciya"

Ответы1001129

04 Июн, 22:34 #665 #1001129

>>1001127
Мне нужно библиотечные функции определить, не мои.

Ответы10011321001134

04 Июн, 22:57 #666 #1001132

>>1001129
в режиме отладки посмотреть стек вызовов

Ответы1001174

04 Июн, 22:58 #667 #1001134

>>1001129
Во - гугло ссылка https://www.google.com.ua/search?q=с+++как+посмотреть+стек&oq=с+++как+посмотреть+стек&aqs=chrome..69i57.4596j0j7&client=ubuntu&sourceid=chrome&ie=UTF-8#q=с+++как+посмотреть+стек+вызовов

Ответы1001174

04 Июн, 23:43 #668 #1001174

>>1001134
>>1001132
Там нету информации о том какую библиотечную функцию я использую. Там просто показываются только мои функции.

Ответы1001232

05 Июн, 04:39 #669 #1001232

>>1001174
Когда доходишь до вызова делай принудительный вход в вызываемую функцию (Force Step Into) и смотри стек вызовов. Название вызванной функции будет в стеке вызовов.

05 Июн, 11:53 #670 #1001303

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

Ответы1001316

05 Июн, 12:20 #671 #1001316

>>1001303
В машоб-тред проследуй.

Ответы1001352

05 Июн, 13:35 #672 #1001352

>>1001316
Ты не понял. Тут алгоритмы нужны, чтобы на картинке, к примеру, 800x600 вычислить яркие цвета, отличающиеся друг от друга. Пусть это будут красные квадраты. Найти их центр масс. Далее вычислить до них расстояние через известные величины. Это задача, и никакого ML не требуется.

Ответы1001365

05 Июн, 14:23 #673 #1001365

>>1001352
Ну я тебе могу ссылок из гугла покидать на запросы "opencv color detection" и "opencv figure detection".
http://opencv-srf.blogspot.com.by/2010/09/object-detection-using-color-seperation.html
http://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/
https://stackoverflow.com/questions/11424002/how-to-detect-simple-geometric-shapes-using-opencv

05 Июн, 14:41 #674 #1001371

>>1001370 (OP)
>>1001370 (OP)
>>1001370 (OP)
>>1001370 (OP)
>>1001370 (OP)
перекот

05 Июн, 22:13 #675 #1001655

>>1000542
Т.е. >писать прямые для каждого файла в корне проекта ?
Спасибо, анон.

06 Июн, 05:26 #676 #1001797

>>998000

11. Одикостоящая цифра преобразовывается в тип класса, из за неявного преобразования. Конструктор, который принимает один аргумент типа, становится функцией преобразования из типа в аргумента в тип класса. поставь рядом с конструктором explicit один "d" пропадет.

Ответы1001802

06 Июн, 05:30 #677 #1001800

>>998000
7. Новый объект класса инициализаруется уже существующим объектом класса, чистой воды контактор копирования.
Что тебя смущает ?

Ответы1001801

06 Июн, 05:31 #678 #1001801

>>1001800
Конструктор копирования, пардон.

Самофикс.

06 Июн, 05:45 #679 #1001802

>>1001797
Точнее d не пропадет у тебя будет что то типо "нету преобразования из int в тип А". Ошибка компиляции будет.

Вопрос отдельный : Как ты так хитро вызываешь f() ? она ведь метод класса, а операция членства не задействована (c.f(3) например).

Тред утонул или удален.
Это копия, сохраненная 7 июля 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion