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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
46 Кб, 588x381
C++ тред sage #478556 В конец треда | Веб
Вопросу по синтаксису идут на хуй.
Лабы идут на хуй.
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй.
Все идут на хуй.
Хейтер сосет члены на пару со своей мамашей.

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Предыдущий: >>472173
#2 #478581
легитимный))))
#3 #478708
sage #4 #478760
как вернуть масив интов?
#5 #478766
>>478760
std::vector<int>
#6 #478771
>>478766
std::array<int, 10>
#8 #478783
>>478779
Теперь он тебя ещё спросит за статические переменные.
52 Кб, 683x564
#9 #478834
Выручайте, аноны. Я перепробовал уже просто ВСЁ, и каждый раз вместо цифр из файла подобная хуйня.

void file_enter(int M[2][4]) {
int i, j;
FILE *f;
char s[20];
cout << "\nВведите имя массива:\n";
cin >> s;
f=fopen(s,"rt");
std::cout << f;

for (i = 0; i <8; i++)
{
fscanf(f,"%d",&M);
}

cout << "\nМассив:\n";
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
printf("%3d ", M[j]);
}
cout << endl;
}
}

Разработать блок-схему алгоритма программы и программу, которая:
а) вводит с клавиатуры или читает из файла, имя которого задает программист, двумерный целочисленный массив размерностью [2  4] элементов и выводит его на экран. Данные в файле расположены произвольно;
б) многократно, в зависимости от запроса, производит расчет среднего арифметиче-ского элементов указанного столбца;
в) по окончании работы сохраняет массив в файле с именем, указанным программи-стом. Данные этого массива сохраняются в виде матрицы, размерностью [3  7] элементов с двумя пробелами между ними, а результаты расчета среднего ариф-метического элементов указанных столбцов матрицы и их номера – в другом файле.
52 Кб, 683x564
#9 #478834
Выручайте, аноны. Я перепробовал уже просто ВСЁ, и каждый раз вместо цифр из файла подобная хуйня.

void file_enter(int M[2][4]) {
int i, j;
FILE *f;
char s[20];
cout << "\nВведите имя массива:\n";
cin >> s;
f=fopen(s,"rt");
std::cout << f;

for (i = 0; i <8; i++)
{
fscanf(f,"%d",&M);
}

cout << "\nМассив:\n";
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
printf("%3d ", M[j]);
}
cout << endl;
}
}

Разработать блок-схему алгоритма программы и программу, которая:
а) вводит с клавиатуры или читает из файла, имя которого задает программист, двумерный целочисленный массив размерностью [2  4] элементов и выводит его на экран. Данные в файле расположены произвольно;
б) многократно, в зависимости от запроса, производит расчет среднего арифметиче-ского элементов указанного столбца;
в) по окончании работы сохраняет массив в файле с именем, указанным программи-стом. Данные этого массива сохраняются в виде матрицы, размерностью [3  7] элементов с двумя пробелами между ними, а результаты расчета среднего ариф-метического элементов указанных столбцов матрицы и их номера – в другом файле.
sage #10 #478843
http://ideone.com/33FkZl
почему 111 а не 123
sage #11 #478846
>>478843

>static

sage #12 #478848
>>478843
Peremennaya massiv initsializiruetsya tol'ko odin raz (pri pervom obrashenii k ney). Gugli, suka ti tupaya.
sage #13 #478852
>>478846
>>478848
ну и говно
даже массив нормально вернуть нельзя
sage #14 #478855
>>478852
Ты прав. Иди нахуй из плюсов и не возвращайся. Спасибо.
sage #15 #478860
>>478855

> Ты прав. Иди нахуй


только в кресто треде
#16 #478864
>>478860
Ну так тебе же написали выше - std::vector, std::array. Ими все норм возвращается, без ебли, без сюрпризов, хули еще надо?
sage #17 #478866
>>478864
хочу простой массив а не вектор
если бы хотел вектор - просил бы вектор
sage #18 #478870
>>478866

>std::array - это контейнер, инкапсулирующий массив фиксированного размера.


Че тебя не устраивает, долбоеб?
sage #19 #478873
sage #20 #478879
>>478873
Ну так не пиши на нем.
#22 #478885
>>478834

>for (i = 0; i <8; i++)


>{


>fscanf(f,"%d",&M);


>}


В чем смысл этого выражения?
sage #23 #478901
>>478882
спс
sage #24 #478902
почему память кончается?
#25 #478904
>>478902
Не резиновая же.
sage #26 #478906
>>478902
Потому что ты долбоеб безрукий. Недавно проверял свой сервачок крестовый, который уже полгода работает. Памяти 3 МБ с копейками скушал за это время. То есть ничего не течет. Отсюда вывод какой? Не кресты кривые, а руки кривые. На Qt кстати сервачок, что как бы намекает хейтерам засунуть член себе поглубже в глотку и не вылезать из-под шконки.
#27 #478953
>>478902
Бросай джаву, потому что.
sage #28 #478962
>>478906
говноборда твоя?
так этож нихуя не сервис
sage #29 #478963
>>478953

> в джяве нет утечек памяти

sage #30 #478972
>>478962
Нет, борде еще нет полугода.
Алсо,

>сервис


Я конечно понимаю, что СЕРВИС это нынче модное слово, но все же.
sage #31 #478985
>>478885
В том, что [i| съедает вакаба, видимо
#32 #478994
>>478963
Смотри, маня:
http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java

>>478885
В том, что местные долбёбы не могут в ни пастбин, ни в идеоне, ни в дабаскрипт-костыль.
sage #33 #478996
>>478963
Жаба - одна большая утечка памяти же.
#34 #479068
>>478834
Пиздец, выкатись из треда, инвалид.
Даже я это осилю на плюсах (мимостудент 2 курс пхпмакака)
#35 #479074
Решил попердолиться с созданием tcp server на крестах на примере чятика или мелкоборды. Вкидываю интродакшн по этой теме. Вдруг кому надо писать для игори или для другой содомии. Если что-то получится - вкину гит.

http://www.linuxhowtos.org/C_C++/socket.htm
sage #36 #479079
>>479074
А вкинь еще жж лебедева, будь добр.
#37 #479159
>>479074
Не знал об этом сайте, спасибо.
#38 #479468
Сокеты беркли в википедии имеют на странице неплохие примеры, в которых всего одна синтаксическая ошибка. Их заюзать проще всего.
#39 #479481
>>479468
Нихуя, проще использовать высокоуровневую абстракцию, но это не крестоблядь-вэй
#40 #479494
>>479481

> крестоблядь-вэй


И в чём же он заключается?
#41 #479515
>>479481
В том, что надо быть Сысоевым, чтобы напердолить более-менее сложный сервер на крестах, особенно если ты не обмазан STL и бустом для адекватной работы с данными. Листал сорсы nginx-а - проиграл с того, что какие-то простые вещи вроде парсера хттп хедеров реализованы на 50 тысяч строк байтоебского кода. Можно ведь было стырить сорцы парсера регулярных выражений из кода перла или еще откуда-то и сделать все проще раз в 50 при незначительной потере производительности.
#42 #479522
>>479494
Ебаться с байтами и процедурной API дриснёй

>>479515
Двачую
#43 #479533
>>478556
КОтаны как запилить хеллоуворд в .sys? Ну скомпилировать код как драйверный и убедится, что он работает - что система его запустила.
#44 #479544
Как конвертировать строку в ascii?
#45 #479562
>>479515
>>479522
И хуле они не пишут это всё на сишечке, раз уж отказываются от всех высокоуровневых конфет?
#46 #479565
>>479562
Пишут и на сишечке, но это сорта говна.
sage #47 #479597
Лол, сколько боли писателей факториалов. Те хоть программы рабочие пишут, хуй с ним с говнокодом. Вы же только на сосачах кукарекаете.
#48 #479636
Этот boost просто лютый пиздец какой-то. Говнокод на говнокоде. Те же program_options, например. Вроде бы и базовая функциональность, но API сделан через такую лютую жопу, что разобраться в этом без бутылки не получается.
Например, вот такая конструкция из приложенного примера:
[code lang="cpp"]
desc.add_options()("help", "produce help message")("compression", po::value<int>(), "set compression level");
[/code]
Охуенно, блять, функция возвращает функцию, которая возвращает функцию. В итоге код превращается в дикое говно из последовательных аргументов в скобках.
В общем, меня уже берут сомнения, стоит ли его вообще использовать.
#49 #479641
>>479636

> Охуенно, блять, функция возвращает функцию, которая возвращает функцию.


Байтослесарь знакомится с каррированием, спешите видеть
#50 #479642
>>479641

>каррированием


Любитель пожрать изысканных сортов говна?
#51 #479644
>>479642

> C++


> что-то там рассказывает про поедание говна


)
sage #52 #479645
>>479641
Ты же видишь как уебищно это получается в крестах. Не надо пытаться поставить атомный реактор на велосипед.
#53 #479651
>>479645
Ну да, в принципе логичнее было бы сделать что-то вроде
builder.option(...)
.option(...)
.result()
#54 #479657
>>479644
Ну порекомендуй лучший СИСТЕМНЫЙ язык с богатым набором 3-rd party библиотек под все нужды.
#55 #479664
>>479657

> C++


> СИСТЕМНЫЙ язык


Ясно.
#56 #479665
>>479657

> СИСТЕМНЫЙ язык


> C++


> 3-rd party библиотек под все нужды.


Ох, лол
sage #57 #479667
>>479664

> Еще один петушок без аргументов


> Ясно

#58 #479704
>>479651
А вот и энтерпрайз-макака закукарекала из-под хотспота.
#59 #479715
>>479665
>>479664
Покажи-ка мне хоть один нормальный ненадуманный пример использования на хаскеле WinAPI и COM.
#60 #479739
>>479715
кукареку?
#61 #479743
>>479715
Хачкель то тут при чём?
Вики, кстати, тоже считает кресты системным.
#62 #479998
>>479704
Давай дегенерат, предложи вариант лучше
sage #63 #480059
>>479998
builder.setOption(...);
//еще N опций
builder.build();
Так вот оно по-человечески должно выглядеть.
другой анон
#64 #480068
Ебаться 2 часа с бустом, чтобы узнать про собственную командною строку мелкомягкой студии. Век живи - век учись.
#65 #480085
>>480059

>мутабельное говно


Ну да, чего ещё ожидать в C++ треде.
sage #66 #480093
>>480085
Да, ты тредом ошибся, борщехлеб.
#67 #480096
>>480093
Байтослесарю предложили человеческий вариант, но нет, манька упорно продолжает жевать кал и хлебать урину
sage #68 #480098
>>480096

>пок-пок-пок байтослесарь кукарикуууу


Борщ то стынет, мама будет недовольна.
96 Кб, 800x600
#69 #480099
>>480098

>кукареку кудах борщи


Проснись манька, ты обоссалась
sage #70 #480100
>>480099
Это ты справа на фото код пишешь?
#71 #480102
>>480100
Нет, я слева, ссу на байтоопущенку
sage #72 #480103
>>480102
А, понял, это твой сон. До чего технологии дошли, сны фотографируют.
#73 #480106
>>480103

>пок-пок совсем не опустили, это не моча а апельсиновый сок

sage #74 #480112
>>480106

>пок-пок совсем не опустили, это не моча а апельсиновый сок


Проснись манька, ты обоссалась.
#75 #480114
А что, собственно, мешает иметь в С++ человеческие билдеры? Внутри они вполне могут быть изменяемыми: просто методы должны захватывать владение, а не обращаться через заимствующую ссылку.
sage #76 #480116
>>480114
Я тебе больше скажу, внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние. Но попробуй это борщехлебу объяснить, он же кроме своих мантр ничего вообразить не способен.
#77 #480119
>>480112

>пок-пок совсем не опустили

sage #78 #480123
>>480119
Как это не опустили? Очень даже тебя опустили, только ты не признаешь.
#79 #480125
>>480123

>кукареку это я тебя опустил! мам ну скажи ему!

sage #80 #480127
>>480125
Зачем маму зовешь?
#81 #480128
>>480116

> внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние


Изменение объекта внутри по сути ничем не отличается от возврата нового объекта, если методы берут владение, и соответственно, существует лишь единственная ссылка на объект. Более того, некоторые функциональные языки используют эту идею для контроля побочных эффектов.
А чем тебе, собственно, `builder.option(...).option(...).option(...).build()` не угодило?
#82 #480129
>>480127

>кудах кукареку мам ну скажи


Байтоклоун продолжает унижаться
sage #83 #480130
>>480129

>кудах кукареку мам ну скажи


Борщехлеб продолжает унижаться.
#84 #480131
>>480128

>Изменение объекта внутри по сути ничем не отличается от возврата нового объекта,


А представь теперь Маня, что тебе надо сделать из одного исходного буилдера два, добавив в каждом случае только одну опцию.
sage #86 #480133
>>480128
Дык, суть в мутабельности/иммутабельности. Борщехлебы дрочат на иммутабельность, потому что плохо понимают, что проихсодит в коде. Беднягам приходится жертвовать естественностью кода и быстродействием ради снижения количества ошибок.
А x.x.x.x.x.x() некрасиво как по мне. Тем более когда лесенка из
builder.option(...)
.option(...)
.option(...)
.build();
Хотя это вкусовщина, конечно.
sage #87 #480134
>>480132
Я не шутил.
#88 #480136
>>480133

>естественностью кода


Естественный код это портянка на ассемблере в миллион строк
sage #89 #480140
>>480136
Естественный код - такой, который отражает повседневную жизнь и ход мыслей. Люди не думают категориями команд или функций. Объекты, их свойства, действия над ними, иерархия. Потому ООП и является естественным. Для математических задач, безусловно, ФП лучше подходит, тут и спорить не о чем. Но, скажем, окошко с кнопками или там карту игрового мира с персонажами представлять в виде иерархии объектов куда проще и естественней. Не надо просто пилой забивать гвозди, а молотком пилить, и все будет ок.
#90 #480141
>>480059
И с такими хуесосами я сижу на одной доске. Не хочу писать компактно, хочу фигачить портянки из повторяющегося кода. Почему ты такая джава-макака?

>>480116

>Я тебе больше скажу, внутри эта builder.option(...).option(...).option(...).build() дрисня может изменять состояние.


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

>>480131

>А представь теперь Маня, что тебе надо сделать из одного исходного буилдера два, добавив в каждом случае только одну опцию.


Нахуя тебе два парсера для коммандной строки уебок тупой?
sage #91 #480142
>>480141
Цепочка вызовов с точкой выглядит уродливо.

>Вот это охуеть открытие.


Борщехлебу это объясни, он тут кудахчет про иммутабельность.
sage #92 #480144
>>480131
Делаешь вывов .add_options с общими параметрами, потом создаешь сколько тебе нужно копий объекта, и для каждого вызовом .add_options добавляешь опции которые различаются.
#93 #480147
>>480140
Но люди и не думают в категориях ООП. К примеру, никто не задаётся вопросом иерархией наследования у утюга. И вопрос «что с этой штукой можно делать» куда естественнее вопроса «какая у неё родословная».
sage #94 #480156
>>480147
Но утюг же воспринимается как объект с присущими ему свойствами (цвет, вес, форма) и действиями, которые может над ним совершить другой объект. me.take(iron); if (shirt.wet) me.doIron(shirt);
Типа такого.
#95 #480200
>>480156
Именно. И ООП здесь нахуй не упало.
#96 #480205
>>480156
И где тут наследование?
sage #97 #480209
>>480200

>воспринимается как объект с присущими ему свойствами


>me.take(iron)


>me.doIron(shirt)


>ООП здесь нахуй не упало


Ты странный.
>>480205
ООП != наследование. Не надо путать принципы ООП с самим ООП.
#98 #480213
Аноны, хелп.
Как задать связнный список для изображения графа не используя указателей, через два массива.
Хотелось бы увидеть пример кода.
sage #99 #480214
>>480209
Вот вам пример некоего вымышленного языка с тремя принципами ООП, но без объектов (только с примитивами):
1. Полиморфизм:
int sum(int x1, int x2);
double sum(double x1, double x2);
Правда, это ad-hoc полиморфизм, но раз в формулировке это не учтено, то не ебет.

2. Инкапсуляция:
module jopa;
int sum(int x1, in x2);
//...

import jopa;

3. Наследование:
module sraka extends jopa;
//...
double sum(double x1, double x2);

Принципы есть, объектов нет, как и ООП.

А вот вам ООП без принципов:

class Yoba {
int add(int x);
double add(double x); //compilation error (полиморфизма нет)
};

class Yoba {
int x;
private: //syntax error (все поля публичные, нет инкапсуляции)
};

class Peka extends Yoba //syntax error (наследования нет)

Объекты есть, принципы ООП отсутствуют.
sage #99 #480214
>>480209
Вот вам пример некоего вымышленного языка с тремя принципами ООП, но без объектов (только с примитивами):
1. Полиморфизм:
int sum(int x1, int x2);
double sum(double x1, double x2);
Правда, это ad-hoc полиморфизм, но раз в формулировке это не учтено, то не ебет.

2. Инкапсуляция:
module jopa;
int sum(int x1, in x2);
//...

import jopa;

3. Наследование:
module sraka extends jopa;
//...
double sum(double x1, double x2);

Принципы есть, объектов нет, как и ООП.

А вот вам ООП без принципов:

class Yoba {
int add(int x);
double add(double x); //compilation error (полиморфизма нет)
};

class Yoba {
int x;
private: //syntax error (все поля публичные, нет инкапсуляции)
};

class Peka extends Yoba //syntax error (наследования нет)

Объекты есть, принципы ООП отсутствуют.
#100 #480216
>>480209
Не вижу принципиальной разницы между take( person, iron ) и person.take( iron ).

>Не надо путать принципы ООП с самим ООП


Как это? ООП не соответствует собственным принципам? В твоем примере про утюг, должен ли я наследовать электрический утюг от угольного? Раньше я пользовался угольным, и не хочу сильно менять код.
sage #101 #480217
>>480213

>список


>не используя указателей


Кастуй указатели к int и храни как int. Не забудь при этом воткнуть в попу дилдак с пупырышками и встать под 43.5 градуса к горизонту.
sage #102 #480218
>>480216
Во-первых, смотри пример выше по поводу ООП без принципов и принципов без ООП.
Во-вторых, я лично думаю как "объект Я берет объект УТЮГ", а не "вызывается действие взять со МНОЙ и УТЮГОМ".
44 Кб, 540x400
sage #103 #480220
>>480213
Вот тебе изображение графа. Можешь считать его в один объект с помощью любой доступной библиотеки. Никаких указателей ты не увидишь при этом, скорее всего.
sage #104 #480221
>>480216
Алсо,

>наследовать электрический утюг от угольного


Вот это точно неправильно. В лучшем случае они оба наследуются от абстрактного утюга, но набор действий и свойств у них будет существенно отличаться, например, чтоб юзать угольный, надо накалить угли, а электрический для использования надо воткнуть в розетку. Тем не менее, общие свойства и методы у них остаются, как и "дочерние объекты" - есть вес, температура, действие "разглаживание одежды", дочерние объекты "ручка", "подошва" (или как там днище у них называется).
#105 #480222
>>480221
И при чем тут тогда ООП? В императивном программировании я тоже думаю в терминах операций над данными, причем и инкапсуляция там есть и полиморфизм в виде указателей над функциями. Единственно, чего нет - это наследование. Вот я и спрашиваю, что такого дает наследование?
sage #106 #480230
>>480222
При том, что у тебя есть объекты.

>Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов). Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта.


Заметь, ни слова про принципы тут нет. И про наследование в том числе.
#107 #480242
>>480230

>некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов)


Под это определение подходит вообще все что угодно. Структуры в сишечке, получается - тоже объекты.
#108 #480244
>>480213
Используй индексы элементов вместо указателей.
sage #109 #480249
>>480242

>Структуры в сишечке, получается - тоже объекты.


Так и есть, вообще-то. ООП в Си было еще до того, как ты родился. C++ просто сахарку туда добавил.
#110 #480256
>>480249

>Так и есть, вообще-то


Скорее наоборот - ООП просто не существует. Это чисто умозрительная вещь без формального определения, ведь объектами можно назвать все что угодно, соответственно любое программирование будет "объектно-ориентированным".
50 Кб, 640x446
sage #111 #480283
Вот этот >>480256 в целом прав. Хотя, конечно, с синтаксисом того же хачкиля труднее выражать концепцию объектов со свойствами и методами, но наверное можно, если очень постараться.
#112 #480320
Уже джва года угораю по крестам. Написал прогу.
http://ideone.com/CpZaEe

Суть такова:
Класс парсит текстовый файл вида
Точка: Инфа 1
Точка: Инфа 2
Точка: Инфа ...
Точка: Инфа n
доставая инфу, находящуюся после лексемы "Точка: ".

Каков шанс, что меня возьмут на работу кодером. И если возьмут, то на какую должность и оклад? Ответы желательно обосновывать.
#113 #480327
>>480320
Лолблять. Это уровень лабы первого курса.
Так что если и возьмут куда, то только полным стажером.
Олсо учти, что комментарии на русском часто считаются зашкваром (от конторы зависит). Названия же переменных и методов вроде "Chislo" - 100% зашквар.
#114 #480330
>>480327

>Названия же переменных и методов вроде "Chislo"


Почему?
#115 #480331
>>480327
Да и от стажеров обчно как можно больше требуют. Те же Qt/Boost, например.
#116 #480332
>>480330
Большинство компаний рассчитаны на международное сотрудничество и твой код могут отправлять доделывать индусам, китайцам, австралийцам и т.п.
#117 #480333
>>480327
Как же комментарии читать, если они не на русском?
#118 #480334
>>480332

>твой код могут отправлять доделывать индусам, китайцам, австралийцам и т.п.


А я тогда нахуя нужен?
sage #119 #480335
>>480330
Потому что.
Если ты знаешь английсикй - то и называй все на нем, просто для единообразия и лучшей читаемости (нормальный английский читается куда лучше транслита же).
Если не знаешь - ну что ж, программировать можно и без знания английского, но это ОЧЕНЬ большой минус. Если не на 1С писать собрался.
#120 #480336
>>480140

>Люди не думают категориями команд или функций


Ну да, они думают про байты, портянки <си<плюс<плюс<говна>>>>, и сегфолты
#121 #480337
>>480141

>Нахуя тебе два парсера для коммандной строки уебок тупой? НИНУЖНА КУКАРЕКУ НИНУЖНА


Ясно

>>480144

>создаешь сколько тебе нужно копий объекта


То есть надо ещё пердолиться с ручным копированием, хотя оно должно быть по умолчанию.
sage #122 #480356
>>480337

>Ясно


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

>>480337

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


Какое еще ручное копирование? Ты знаешь что такое оператор копирования? Ты можешь создать копию options_description? В чем вообще может быть пробема создать копию объекта?
sage #123 #480359
>>480336
О, маня, ты снова с нами? Вырвал фразу из контекста, молодец.
>>480320
Обоссал. Таким даунам даже гостевухи нельзя давать писать.
#124 #480376
>>480156
Мань, в с++ классы - это просто структуры, которым описали, как нужно быть классом (долеплять this к 1му аргументу и проверять чтобы типы совпадале при конпеляции) и фсё! Больше ничего нет. Код, сгенерированный в итоге - это машинный понос, поток команд и байтов, которые ничего не значат, но посколько до компеляции у всего этого говна была структура она слабо-вяло как-то умудряется работать. Но! Для этого нужно, чтобы невыхождение за пределы этой мниной, теперь уже, структуры соблюдалось по математическому доказанию. А это невозможно, ну хотя бы потому, что по дефолту я могу *( 0) = "hui"; и меня никто от этого не остановит. С++ реально оочень заёбистый язык. Он оочень ебёт мозги, вот я знаю профессора, так он так же думает.
#125 #480377
Кароче сап аноны. Решил написать проектик с красивым интерфейсом. Порекомендуйте что-нибудь в качестве либ или фримворка для кросплатформенного гуя, чтобы можно было выводить красиво шрифтик, ну и там рисовать кнопочки, всё такое (но сразу скажу по-настоящему требуется только отрисовка текст + картинки и больше особо ничего)
sage #126 #480384
>>480376
Я тоже на 1 курсе не все в крестах понимал. Это нормально, не переживай.
sage #127 #480386
>>480377
HTML+CSS+JS.
#128 #480387
>>480377
Qt, прости господи.
#129 #480394
>>480376

> Код, сгенерированный в итоге - это машинный понос, поток команд и байтов


Что-то проиграл с этого. Хачкель, наверное, магией выполняется.
sage #130 #480401
>>480394
Он компилируется в профессора, который решает диффуры на бумажке со скоростью света. Профессор при этом завернут в оную бумажку как в монаду, чтобы избежать побочных эффектов.
#131 #480430
>>480359

>Обоссал. Таким даунам даже гостевухи нельзя давать писать.


Поясни, что не так?
#132 #480435
>>480377
C++ Builder XE8 - FireMonkey.
FireMonkey (FMX) — GUI-библиотека, использующая возможности графического процессора. Является кроссплатформенной: поддерживаются Windows, Mac OS, Apple iOS и Android.
sage #133 #480447
>>480430
Табы вместо пробелов, транслит в названиях переменных, ничего не говорящие названия переменных (типа S1), комменты на русском, комменты там, где они на хуй не нужны, использован билдер, нет пробелов между операторами и операндами. Дальше даже читать не могу, глаза вытекают. За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.
#134 #480451
>>480384
Но у меня большой опыт работы с крестами, потому и говорю - говно он.
>>480394
Нет метаинфы, нет никаких проверок, вообще ничего. Когда-то это было круто, но сейчас у редкой машины найдёшь меньше 1 гб оперативы, поэтому юзлесс говно без задач. Ах да с++ - самый уязвимый язык, чуть что он переполняет всю хуйню и пиздец: роп, кладбище, пидор.
sage #135 #480459
>>480451

>большой опыт работы с крестами


Сколько лет? Какие проекты?
#136 #480460
крестаны, подскажите 1с-гуманитарию
есть dll - com-копонента написанная на с++ и скомпилированная в начале 2000х, при попытке подключения на свежую 1с-платформу говорит что интерфейс не поддерживается

есть описание правильного интерфейса, который сейчас актуален

можно ли написать обертку вокруг этой dll, и запихнуть это все в новую dll, зарегить как com-объект и юзать?
#137 #480471
>>480447

>Табы вместо пробелов


Они лучше видны.

>транслит в названиях переменных


Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.

>ничего не говорящие названия переменных (типа S1)


Там комментарий стоит.

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


На японском их штоле писать?

>комменты там, где они на хуй не нужны


От коменттов хуже не будет.

>использован билдер


Он тебе чем не угодил?

>нет пробелов между операторами и операндами


Есть, просто не везде. Где текста немного их можно и не ставить.

>Дальше даже читать не могу, глаза вытекают.


Твои проблемы. У нормальных людей всё читается.

>За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.


Охуеть аргумент.
#137 #480471
>>480447

>Табы вместо пробелов


Они лучше видны.

>транслит в названиях переменных


Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.

>ничего не говорящие названия переменных (типа S1)


Там комментарий стоит.

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


На японском их штоле писать?

>комменты там, где они на хуй не нужны


От коменттов хуже не будет.

>использован билдер


Он тебе чем не угодил?

>нет пробелов между операторами и операндами


Есть, просто не везде. Где текста немного их можно и не ставить.

>Дальше даже читать не могу, глаза вытекают.


Твои проблемы. У нормальных людей всё читается.

>За такой код в любой фирме будут пиздить палками, пока не научишься писать нормально, а вероятнее сразу выгонят.


Охуеть аргумент.
sage #138 #480488
>>480471

>Они лучше видны.


Мы вам перезвоним.

>Нет, блять, лучше уж всякие lpsz и т.п. ебучая хуита.


http://c2.com/cgi/wiki?GoodVariableNames

>Там комментарий стоит.


Это уродское решение, каждый раз искать этот комментарий, чтобы посмотреть, что делает переменная. См. предыдущий пункт.

>На японском их штоле писать?


Белые люди пишут на английском. Даже в самых обоссанных пидорашьих конторах.

>От коменттов хуже не будет.


Будет. Это показывает твою некомпетентность и неспособность отличить, где нужен комментарий, а где нет. Перезвоним, короче.

>Он тебе чем не угодил?


Тем, что это говно нигде не используется, кроме усть-задрищенских шараг, застрявших в 80-х.

>Есть, просто не везде. Где текста немного их можно и не ставить.


Можно вообще все в одну строчку писать для экономии места. Нам ведь главное место сэкономить на жестком диске (блять, пишу и ржу на всю комнату), а не читаемый код написать.

>Твои проблемы. У нормальных людей всё читается.


Ясно-понятно. Даже не пытайся куда-то устраиваться на работу, обоссут так, что до старости будет вонять.

>Охуеть аргумент.


Но это на самом деле так. Твоя шарага не имеет ничего общего с реальным миром, проснись.
#139 #480544
>>480471
Боб Мартин «Чистый код».
За всю вот эту хуйню, что ты городишь, он тебе нормально пояснит. Пока не прочитаешь — будешь сидеть без работы (мы вам перезвоним).
Могу порекомендовать еще Александреску C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
#140 #480612
>>480256

> Скорее наоборот - ООП просто не существует. Это чисто умозрительная вещь без формального определения, ведь объектами можно назвать все что угодно, соответственно любое программирование будет "объектно-ориентированным".


У понятия ООП был когда-то смысл, да умер.
http://loup-vaillant.fr/articles/deaths-of-oop
#141 #480614
>>480320
Все очень плохо.
1. Русский вместо языка.
2. Ни о чем не говорящие названия переменных.
3. Ручное управление памятью, delete вот это все.
4. Тесты к этому в принципе не прикрутишь.
5. И, главное: нихуя не понятно, что делает этот код. Вижу набор буковок, не вижу алгоритм. Код должен читаться, как текст на английском, а у тебя какая-то обфускация.

Кароч, читай Боба Мартина "Agile principles patterns and practices" и серию "C++ in depth".
#142 #480627
>>480614
>>480359
>>480327
А сами то вы, ребята, где работаете и главное за сколько? Свободные копья могут не отвечать, я сам всё пойму лол
#143 #480630
>>480612

>У понятия ООП был когда-то смысл, да умер


Странно, что оно вообще взлетело. Ведь ООП в классическом варианте с наследованием предполагает построение универсальной иерархической модели данных программы. А как нам подсказывает реляционное исчисление, такая модель в принципе существовать не может. Это еще сам Страуструп признал на одной из ранних конференций по базам данных - ООП с реляционной моделью не дружит. При этом у реляционной модели есть математический базис, а у ООП - нет. Но тогда из этого вывод никто не сделал, вот и мучаются до сих пор.
sage #144 #480640
>>480630

>мучаются до сих пор


Ага, не то что безработные борщехлебы.
#145 #480641
>>480471
Кароч писать надо нормально (либо прогоняй код через аккуратно-кодо-пробело-табо-расставитель лол перед сдачей, ахуенный хак базарю, переименовать переменные тоже можно в осмысленные, а не просто в быстро печатаемые)
Код и так ебанёшься штука.
>>480488
Сам то ты где работаешь? И за сколько.
#146 #480642
>>480640
Понятно, что чем хуже спроектирована система, тем больше у всех проблем, больше работы, больше рабочих мест, выше занятость, лучше для экономики. Но это не путь прогресса. Олсо ФП - далеко не серебряная пуля, и отказываться от мутабельности вообще - не самая лучшая идея, я считаю.
#147 #480643
>>480216

> Не вижу принципиальной разницы между take( person, iron ) и person.take( iron )


Код однохуйствененн лол, с точки зрения конечного скомпилированного.
>>480218
Маня! Мань. Но анон выше всё написал ужасно правильно, на вход функции классов получают 1м аргументом, ВНИМАНИЕ, this. Представь себе. Откуда ты думаешь он там? Конпелятор неявно добавляет туда этот нехитрый указатель.
#148 #480644
>>480630
Двачую вот этого. Каждый раз при попытке сделать, чтоб было удобно и хорошо приходишь к тому, что приаеры удачного разделения на подклассы хорошо раотают только в книжке, в реальности каждый раз что-то да мешает идеально распилить объекты как тебе надо.
#149 #480645
>>480630

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


Ну почему же мучаются. В языки (не в С++) завели интерфейсы, типажи, примеси, так что наследование — не единственный вариант полиморфизма.
#150 #480650
>>480645

>В языки завели и продолжают завозить


Это я имел в ввиду под "мучаться".

>наследование — не единственный вариант полиморфизма


Это уже во времена создания джавы было понятно, поэтому там полиморфизм описывается через интерфейсы.
#151 #480654
>>480645

>В языки (не в С++) завели интерфейсы, типажи, примеси


В С++ это все и так есть. С виртуальным наследованием и CRTP можно делать любые подобные штуки.
sage #152 #480655
>>480643
Блять, ты тупой совсем? Мы говорим о коде, сука, о том, что человек пишет, а не о компиляторе. Компилятор в итоге все в нолики и единички превращает, даже твой хачкиль или на чем ты там пишешь.
#153 #480662
>>480320
Эй, байтушня, сравни
[code lang="scala"]import scala.io.Source

object Main extends App {
\tdef parse(source: Source) = {
\t\tval regex = "^Точка: (.*)$".r
\t\tsource.getLines.collect {
\t\t\tcase regex(data) ⇒
\t\t\t\tdata
\t\t}
\t}
\t
\tval source = Source.fromFile("123.txt")
\tparse(source).foreach(println)
}[/code]
#155 #480669
>>480662
Что сравнивать то? Содержание функции fromFile с её вызовом? Да, при вызове будет меньше кода, ты прав.
#156 #480670
Доброго времени суток плюсаны. Есть среди вас добрые аноны которые могут помочь в С++? Писать ничего не прошу объяснить какие то общие вопросы ответы на которые не смог нагуглить или нагуглил но без посторонней помощи не смогу понять. Постучите в still_runner или напишите свой. Спасибо добрый и отзывчивый анон!
#157 #480672
>>480669
Нечитабельную портянку с человеческим кодом
#158 #480674
>>480672
А ты разверни fromFile. Мб там побольше кода будет чем в портянке.
#159 #480675
>>480674
Чмоша, ifstream, AnsiString уже развернул?
sage #160 #480676
[code lang="cpp"]
#include <QtCore>

int main(int argc, char argv)
{
QStringList sourceLines = QString("Точка: 123\r\nТочка: \r\nТочка: yoba").split("\r\n");
QRegExp rx("^Точка: (.*)$");
foreach (const QString &line, lines) {
if (rx.indexIn(line) >= 0)
qDebug() << rx.cap(1);
}
return 0;
}
[/code]
sage #161 #480678
>>480676
Бля, чет скрипт глюканул.
http://pastebin.com/ishaFx1W
#162 #480679
>>480676
Хорошо тред успел обновить, а то то же самое писать начал, уж больно жабопердолик наглый, затроллил меня.
#163 #480680
>>480675
Ну я то их использовал из-за скудоумия своего. А ты то дохуя погромист, мог бы и без них обойтись? И да, в задаче было именно из файла, а не из строки, да ещё к тому же которую ты сам так невзначай тут придумал, лол.

>>480676
Тебя это тоже касается.

Дельцы такие, ппц. Вы все условия задачи соблюдите, кода то и поприбавится. И да, 30% кода там для отладки, просто не удалил когда постил.
#164 #480681
>>480680

>А ты то дохуя погромист, мог бы и без них обойтись?


>А ты то дохуя погромист, мог бы и без операционной системы обойтись?


>А ты то дохуя погромист, мог бы и без компьютера обойтись?


Нет, мартышка, понимаешь, если ты пишешь портянки байтоговна, когда это делается одним вызовом стандартной библиотеки, то ты не программист а петух.
sage #165 #480683
>>480680

>эти оправдания байтослесаря


Найс. Вот тебе с файлом:
http://pastebin.com/t4Bui9mJ
#166 #480684
>>480683

>.readAll().split("\r\n")


Атятя а если файл 4 Гб?
#167 #480685
>>480683
Ну спасибо антош, пойду преподу покажу.
:3
#169 #480693
>>480685
Надеюсь, препод попросит тебя пояснить за регулярки, и ты обосрешься.
sage #170 #480700
>>480685
Второй раз не прокатит, придется придумывать новые способы развода треда на лабы. А писать код ты так и не научишься.
#171 #480702
>>480693
>>480700
А я вас затралил что студент. На самом деле я просто бидлокодер.
:3
255 Кб, 600x1081
#172 #480703
#173 #480709
>>480702
Маским?
sage #175 #480719
>>480712
Пидора ответ. Что характерно, я в пиздежь про лабу не поверил. Здешние шаражники до такого хитрого плана бы не додумались.
480688-кун
#176 #480736
>>480655
А я тебе говорю о том, что код - полная хуйня, единственная его задача это превращатся в машинные комманды и быть при этом достаточно удобочитаемым и юзабельным для человека. С++ очень хуёво читается и поэтому он говно.
#177 #480762
Поясните аутисту:
Есть prog.h, prog.cpp, some_class.h, some_slass.cpp.
В some class используются структуры из prog.h, как их правильно подключить?
Как правильно подключить some_class к prog?
#178 #480769
>>480762
Обычным инклудом или использовать forward declaration.
Прозреваю, что ты забыл защиту от повторного включения.
#179 #480770
>>480769
Нет, я юзаю #pragma once для хедеров. Можешь чуть подробнее расписать?
Сейчас prog.h инклудится в prog.cpp и some_class.h, но резолвится не все.
#180 #480774
>>480770
Выкинь сырцы куда-нибудь? Хуй знает чего у тебя там.
#181 #480777
>>480774
Извини, я обосрался с флагом -nostartfiles.
Все теперь работает, спасибо.
#182 #480828
Потсаны, как можно выполнить в программе функции, которые пользователь печатает в файл или в строку? Что-то типа карманного компилятора.
#183 #480830
>>480828
Ну хуй знает, попробуй:
http://en.wikipedia.org/wiki/Ch_%28computer_programming%29
А нафига оно тебе? Не проще какой-нибудь скриптовый язык для этого использовать?
#184 #480831
>>480830
Сорт оф движок, а в рекурсивный алгоритм я не могу.
#185 #480833
>>480831
Какой ещё рекурсивный алгоритм? Для движка можно взять какой-нибудь Lua.
#186 #480834
>>480833
Чот я тупанул.
#187 #480907
Сап. Есть математическое выражение в виде строки, нужно построить по нему график. Гугление даёт только калькулятор со скобками, дающий значение, нужно же превратить это в формулу, с поддержкой геометрических функций. Что можно с этим сделать?
#189 #480909
>>480908
Я пытаюсь найти свой путь, Стивен мне тут не поможет.
#190 #480916
>>480907

> Гугление даёт только калькулятор со скобками


Ну, осталось добавить туда переменные и функции. Переменная реализуется простой заменой - встретив переменную пушиш в стек ее значение. С функциями сложнее, хотя особо сложного нет, просто оператор по типу тех что есть, но у тебя там скорее только инфиксные с двумя аргументами, тогда как функция - префиксный с различным количеством аргументов, нужно серьезно допиливать алгоритм.
#191 #480919
>>480907
Посмотри в сторону готовых библиотек для символьных вычислений:
http://www.ginac.de/
http://issc.uj.ac.za/symbolic/symbolic.html
http://viennamath.sourceforge.net/
http://muparser.beltoforion.de/
#192 #480943
>>480662
>>480666
>>480676
>>480678
Перепись регуляркопидоров итт
#193 #480971
Стилистический вопрос по С.
Я загружаю функции из dll. Говнокод ли объявлять глобально указатели на них?
Как вообще это красиво оформлять в проектах?
#194 #481132
[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);

template<typename T>
class A
{
template<typename U, typename... R>
friend A<U> func(R&&... args);

...
};
[/CODE]

Можно так. А теперь я хочу, чтобы для класса другом была та функция, у которой первый тип совпадает с типом класса, что-то типа такого:

[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);

template<typename T>
class A
{
template<typename... R>
friend A<T> func<T, R...>(R&&... args);

...
};
[/CODE]

Чо делать?
#194 #481132
[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);

template<typename T>
class A
{
template<typename U, typename... R>
friend A<U> func(R&&... args);

...
};
[/CODE]

Можно так. А теперь я хочу, чтобы для класса другом была та функция, у которой первый тип совпадает с типом класса, что-то типа такого:

[CODE]
template<typename T, typename... R>
A<T> func(R&&... args);

template<typename T>
class A
{
template<typename... R>
friend A<T> func<T, R...>(R&&... args);

...
};
[/CODE]

Чо делать?
#195 #481147
>>481132
Менять архитектуру.
В крестах нельзя задавать частичную специализацию для функций.
#196 #481152
>>480971
Ну хуй знает, я бы запилил что-нибудь типа:

#ifdef YOBA_LIB_MACRO
#define MY_FUNC_PTR_1 ...
#define MY_FUNC_PTR_2 ...
#endif
#197 #481156
>>481147
Тут нет никакой частичной специализации, просто задается ограничение на права пользования. Я не перестаю верить, что решение есть. Тем более, какие потенциальные дырки ты видишь в такой архитектуре? Допустим моя функция задает какое-то альтернативное страшное правило для конструирования объекта.
#198 #481166
>>481156

> какие потенциальные дырки ты видишь в такой архитектуре?


Главная дырка – нарушение инкапсуляции.

> нет никакой частичной специализации


> ограничение на права пользования


Которую можно было бы запилить частичной специализацией.

> не перестаю верить, что решение есть


Можно попробовать запилить какую-нибудь перегрузку, но изъёбов меньше не станет.

> функция задает правило для конструирования объекта


Может быть ей нужно быть статическим методом?
#199 #481168
>>481132
Это в прошлом треде заливал код со страшной фабрикой?
#200 #481169
>>481168

> Это ты


быстрофикс
#201 #481173
>>481166
friend'ы - нарушение инкапсуляции? Чего?

>Частичная специализация позволяет частично настроить код шаблона для определенных типов


Здесь преследуются совершенно иные цели.
На самом деле пилится make_shared. Да, надо сделать статический метод и обернуть его в make_shared, отличная идея, спасибо.
#202 #481175
>>481168
Хотя нет, идея не очень, я не хочу, чтобы эти кишки наружу торчали.
>>481168
Не, не я.
#203 #481183
>>481173

> friend'ы - нарушение инкапсуляции? Чего?


А как тогда назвать конструкцию, которая позволяет обращаться к закрытым членам класса и при этом сама не является частью класса?

> На самом деле пилится make_shared


> задается ограничение на права пользования


Что за ограничения в make_shared?
#204 #481188
>>481183
То есть, я правильно понял, что friend'ы по-твоему - деприкатед? Это же сущая дичь.
Да я ж говорю, чтобы make_shared типа A ненароком не залез в shared_ptr типа B, в первом куске кода такое возможно, я пока не думал, кем нужно быть, чтобы такое сделать, но там на это явного запрета в коде нет, а я хочу, чтобы был, просто чтобы был. Ладно, чего-то лучше самому подумать.
#205 #481189
>>481173
Хотя тут тоже используется friend-функция allocate_shared, которая вызывает private конструктор, которому передаётся тег, который говорит, что конструктор вызывается из make_shared охуеть, блять:
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/shared_ptr.h
#206 #481192
>>481189
Вот это поворот, до того чтобы заглянуть в исходники стл я не додумался, ну, наверное, вопрос решен.
#207 #481194
>>481188

> friend'ы по-твоему - деприкатед? Это же сущая дичь.


Ну хуй знает, довольно специфичная вещь, хотя libstdc++ во всю их использует.
#208 #481197
>>481189
Они настолько же deprecated, насколько прямой доступ к памяти с голыми укзателями небезопасны. То есть с одной стороны вроде так и есть, а с другой - зачастую ими сделать что надо тупо проще и проблем не вызовет никаких (если разумно делать).
#209 #481198
#210 #481201
>>481189
Да тут всё по калу сделано, как в первом варианте, значит это норма.
>>481197
Не, ну ясное дело, что лепить их надо в меру и по возможности сужая их круг видимости до того, что им действительно нужно. В самом деле, порой сделать 10 классов-хелперов, запутать все наследованием или ещё какими костылями для модифицируемости кода может быть гораздо хуже, чем такая хрень, ладно, пустой разговор в общем.

Всем спасибо.
#211 #481280
>>481197
А всё потому, что в крестах нет package-local видимости.
#212 #481295
>>481183

>А как тогда назвать конструкцию, которая позволяет обращаться к закрытым членам класса и при этом сама не является частью класса?


Костыль при отсутствии нормальной модульности. Инкапсуляция - это не ограничение к доступу полей класса, а вообще произвольное ограничение видимости. В С++ модулей нет, и нет возможности управлять видимостью на уровне модулей, поэтому в язык и добавили friend.
#213 #481300
>>481183

> и при этом сама не является частью класса


Она объявляется внутри класса, значит является частью класса.
#214 #481514
>>481300
В тех же исходниках libstdc++ weak_ptr является friend-ом у shared_ptr. Значит ли это, что weak_ptr является частью shared_ptr? Или это утверждение распространяется только на функции? Если friend функция является частью класса, то почему я не могу обратиться к ней как к методу?

>>481295

> нет возможности управлять видимостью на уровне модулей, поэтому в язык и добавили friend.


Не очень понимаю, как это связано?
#215 #481649
>>481514

>Не очень понимаю, как это связано?


В С++ нет возможности сказать: эти классы принадлежат к одному модулю, и имеют приватный доступ друг к другу.
#216 #481655
>>481514

> Значит ли это, что weak_ptr является частью shared_ptr?


Синтаксически да. Точно такого же результата можно было добиться объявив weak_ptr вложеным классом в shared_ptr, сделав его при этом публичным. Но это не слишком удобно в плане композиии кода, поэтому их объявили как отдельные сущности, связав вместе одной строчкой. Другое дело что никакого как бы смысла в том что weak_ptr является частью shared_ptr нет, по своей сути он не является его частью, просто такой синтаксический трюк чтобы упростить код.
Работа со строками и файлами Son1Q #217 #481720
Нужно написать программу, которая считает кол-во строк в файле, если строка начинается на определенный символ и заканчивается им.
#218 #481725
>>481720
В шапке же сказано, что дауны с лабами идут на хуй, долбоёб.
sage #219 #481734
>>481720
Ну так что же ты не пишешь, раз НУЖНО?
sage #220 #481745
>>481720
[code lang="cpp"]
const char Symbol = 'X';
QStringList lines = BDirTools::readTextFile("/path/to/file", "UTF-8").split(QRegExp("\r?\n+"), QString::SkipEmptyParts);
QtConcurrent::filter(lines, [](const QString &s){return s.startsWith(Symbol) && s.endwSith(Symbol);}).wait();
qDebug() << lines.size();
[/code]
sage #221 #481746
>>481745

>s.endsWith


почин
sage #222 #481748
>>481745

>.waitForFinished();


Конечно же.
#223 #481918
>>481720
[code lang="scala"]Source.fromFile("allah.txt")
.getLines
.filter(line => line.head == '#' && line.last == '#')
.size
[/code]
#224 #481925
>>481720
338. Войска, назначаемые для отдания воинских почестей при погребении, составляют почетный эскорт.

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

339. Организация похорон военнослужащих, погибших (умерших) при прохождении военной службы, возлагается на их прямых начальников, а остальных лиц, при погребении которых назначается почетный эскорт, — на начальника гарнизона (городского или районного военного комиссара).

340. Почетный эскорт назначается в следующем составе:

при погребении солдат (матросов), сержантов (старшин) и прапорщиков (мичманов) — отделение, взвод или соответствующее им подразделение;

при погребении офицеров, а также военнослужащих и граждан, удостоенных звания Героя Советского Союза, Героя Российской Федерации, награжденных орденом Славы трех степеней, — взвод, рота или соответствующее им подразделение.

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

Почетный эскорт, назначаемый в составе от взвода и больше, должен быть со Знаменем без чехла и с траурной лентой.

341. Кроме почетного эскорта на погребение назначаются:

оркестр;

почетный караул к гробу;

* солдаты или матросы для опускания гроба в могилу (8 — 10 человек) без оружия под командой сержанта (старшины).

Для перевозки гроба с телом покойного выделяется автомобиль или лафет орудия.

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

Каждый орден прикрепляется к отдельной подушечке. Медали могут прикрепляться по нескольку на одной подушечке.

На крышке гроба прикрепляется головной убор, а для военнослужащих Военно-Морского Флота (кроме военнослужащих срочной службы) и кортик умершего.

342. Почетный эскорт и наряд на погребение военнослужащего, умершего в своей воинской части, назначаются командиром этой части. О времени и месте выноса и погребения тела покойного сообщается военному коменданту гарнизона.

В случае смерти военнослужащего вне места его постоянной службы почетный эскорт и наряд на погребение назначаются начальником гарнизона по месту смерти военнослужащего.
#224 #481925
>>481720
338. Войска, назначаемые для отдания воинских почестей при погребении, составляют почетный эскорт.

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

339. Организация похорон военнослужащих, погибших (умерших) при прохождении военной службы, возлагается на их прямых начальников, а остальных лиц, при погребении которых назначается почетный эскорт, — на начальника гарнизона (городского или районного военного комиссара).

340. Почетный эскорт назначается в следующем составе:

при погребении солдат (матросов), сержантов (старшин) и прапорщиков (мичманов) — отделение, взвод или соответствующее им подразделение;

при погребении офицеров, а также военнослужащих и граждан, удостоенных звания Героя Советского Союза, Героя Российской Федерации, награжденных орденом Славы трех степеней, — взвод, рота или соответствующее им подразделение.

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

Почетный эскорт, назначаемый в составе от взвода и больше, должен быть со Знаменем без чехла и с траурной лентой.

341. Кроме почетного эскорта на погребение назначаются:

оркестр;

почетный караул к гробу;

* солдаты или матросы для опускания гроба в могилу (8 — 10 человек) без оружия под командой сержанта (старшины).

Для перевозки гроба с телом покойного выделяется автомобиль или лафет орудия.

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

Каждый орден прикрепляется к отдельной подушечке. Медали могут прикрепляться по нескольку на одной подушечке.

На крышке гроба прикрепляется головной убор, а для военнослужащих Военно-Морского Флота (кроме военнослужащих срочной службы) и кортик умершего.

342. Почетный эскорт и наряд на погребение военнослужащего, умершего в своей воинской части, назначаются командиром этой части. О времени и месте выноса и погребения тела покойного сообщается военному коменданту гарнизона.

В случае смерти военнослужащего вне места его постоянной службы почетный эскорт и наряд на погребение назначаются начальником гарнизона по месту смерти военнослужащего.
#225 #481933
Вечер добрый, анон.
Т.к. самый низкий язык на доске - С, то задам вопрос сюда.
Думаю, что многие сталкивались.

Вопрос такой, почему если закомментить invoke MessageBoxA, то код работает?

Если не комментить, то в стеке перед выходом остаётся какая-то еденица, хотя мессадж бокс, как и почти остальное винапи пишет ответ в eax?
У меня еденица нигде не записывается. Стек раскручиваю правильно. На каждый пуш, есть поп.

FASM

http://pastebin.com/bRUsyeTP
#226 #481940
>>481933
Вопрос снят.
Обосрался с размерами регистров.
Должно быть pop eax.

А то он со стека по 2 байта снимал.
В то время как push 7, например, добавляет в стек 4 байта.

Соррян, затупил.
В пизду уроки на 16 битных системах
34 Кб, 885x604
13 Кб, 548x448
Помощь с лабой Студент-лох #227 #481950
Нужна помощь!!!
Задание в унике (иначе отчислен):
Сдвинуть биты в каждом байте циклически вправо на
случайное число N из диапазона 0..7
Пример:
0xDEADBEEF
0xB76BAFFB
(N = 2)
Как мне объясняли толковые люди нужно:
1) зарандомить число от 0-7
аля
srand(time(NULL));
unsigned int shift = rand() & 7;
2) ввести число и сдвинуть его побитово на вправо на 7
3) далее нужно sizeof инта * на какое-то число и применить операцию или (вроде побитовое или)
В общем есть идеи по коду, советы, подсказки?
На пиках рабочий код, но мне нужно его сократить.
(убрать указатели, использовать хотя бы 1 функцию или желательно все сделать в main'е. В общем сделать очень простой и читаемый код.)
sage #228 #482011
>>481950

>иначе отчислен


Слава Аллаху, одним дегенератом меньше.
#229 #482033
>>481950

> На пиках рабочий код, но мне нужно его сократить.


Так что же ты не делаешь, раз нужно? За работу, маня
#230 #482062
Какого хуя Visual Studio десятого года не может в циклы? Почему он их пропускает при отладке, как это чинить?
#231 #482063
>>482062

>десятого года


>да ещё и оптимизацию не отключил

sage #232 #482066
>>482062

> Билдит в релиз


> Жалуется на оптимизацию

#233 #482068
>>482063
Да я просто в больнице лежу, ничего кроме ноутбука нет, а он старше моей кошки и в чем-либо более новом виснет наглухо.
#234 #482334
Антоны, такой вопрос. Как перегрузить операцию вызова функции так, чтобы вместо записи массива в виде massiv[xyu][pizda] можно было бы записывать альтернативную форму: massiv[xyu,pizda] ?
#236 #482407
>>482345
Не совсем понимат. Можешь по-хардкору объяснить ? Как для битурда
sage #237 #482418
>>482407
Хорошо, поясняю: пошел на хуй, даун.
#238 #482421
>>482418
Чому ты такой злой ? Тебя в /b/ обидели ?
#239 #482444
>>482334
massiv(x,y) не подойдёт?
1277 Кб, 3264x858
#240 #482455
>>482444
Надо именно с квадратными скобками
[a] -> [a ,b ]. Собственно, релейтед.
Антош, помоги, будь бобр.
#241 #482468
>>482455
Шёл бы ты нахуй со своей лабой
#242 #482474
>>482455
Кек

> лаба1


> сделайте невозможное

#243 #482489
>>482468
Ты всё ещё обижен ?

>>482474
Лаол. Представляю, что будет на втором курсе.
Алсо, это ещё и с WinApi надо запилить. Нахуя оно тут - не понятно, но НАДО.
#244 #482493
>>482489

> Алсо, это ещё и с WinApi надо запилить. Нахуя оно тут - не понятно, но НАДО.


Съёбывай с этой шараги
sage #245 #482497
>>482421
Если кто и обижен, то ты мозгами от природы. К вашей школопомойке, именуемой /b/, я и на километр не подойду.
#246 #482511
>>482493
Я же ПРИКЛАДНИК. Должен всё уметь, ага.

>>482455
Бамп вопросу.
#247 #482513
>>482497

>К вашей школопомойке я и на километр не подойду


>Сидит на дваче


Fail.
sage #248 #482531
>>482513
Только в этом треде.
#249 #482562
>>482511

> Бамп вопросу.


Там же очевидная очепятка, альтернативная форма должна выглядеть как chessBoard(row, collumn) в задании явно написано что нужно перегрузить operator() а не operator[]
64 Кб, 696x310
#250 #482715
Может кто скинуть пример программы, где на пустой форме рисуется линия? Visual studio 2010.
Три часа уже не могу нагуглить(
пикрандом
#251 #482728
>>482715
pustajaForma.narisovatLiniju();
#252 #482786
>>482715

> WinAPI


Бросай это дело. Я пытался осилить этот мелкомягкий говнокод, но тщетно. Надо быть настолько же альтернативно одаренным, как и его создатели, чтобы понять каким образом оно работает. Как альтернативу могу порекомендовать Qt.
#253 #482793
>>482786
Неосилятор, WinAPI объектно-ориентированная библиотека, все там понятно. Но Qt двачую за кроссплатформенность.
#254 #482817
>>482715

> Братишка, я тебе оконынй фреймворк принес


НАХУЙ ТЫ MFC ПРИНЕС, СОВСЕМ МУДАК ШТОЛЕ?!
На WinAPI будет так: http://pastebin.com/vvgpjDJn
#255 #482822
>>482817
Соответвенно, в MFC убери dc.TextOut(...) и добавь dc.MoveToEx(...) / dc.MoveTo(...), затем dc.LineTo(...), где объект dc используется вместо первого параметра hDC. Вот здесь есть пример с линями: http://www.firststeps.ru/mfc/steps/r.php?10
sage #256 #482832
>>482793

>объектно-ориентированная


>процедурная дрисня


Ну-ну.
sage #257 #482839
>>482817
А теперь сравни:
[code lang="cpp"]
#include <QtWidgets>

int main(int argc, char argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
scene.addLine(0.0, 300.0, 800.0, 300.0);
QGraphicsView view(&scene);
view.setFixedSize(800, 600);
view.show();
return app.exec();
}
[/code]
#258 #482844
>>482839
Преимущество еще и в том, что QGraphicsScene работает через аппаратное ускорение (DX или OGL в зависимости от системы/сборки), а вот GDI - хуй его знает, он может и через процессор все считать.
sage #259 #482852
>>482844
Да хуй с ним, с ускорением, но с количества кода для лабы я проиграл. Одно создание окна почи как весь код на Qt:
[code lang="cpp"]
hWnd = CreateWindowExW(0,
szMainWindow, szAppTitle,
WS_OVERLAPPEDWINDOW,
GetSystemMetrics(SM_CXSCREEN) / 2 - WIDTH / 2,
GetSystemMetrics(SM_CYSCREEN) / 2 - HEIGHT / 2,
WIDTH, HEIGHT,
NULL, NULL, hInst, NULL);
[/code]
sage #260 #482854
>>482852
И, кстати, что-то не увидел ни одного объекта, только структуры и процедурная портянка.
#261 #482858
>>482854
Да хуй с ней, с процедурной портянкой. Даже GTK+ выглядит приятней и понятней, чем это спермоговно.
#262 #482859
>>482786
>>482786
Я не виноват - это лаба такая, с использованием GDI сделать задание.
sage #263 #482861
>>482859
Объясни преподу, что это можно сделать проще и красивее. Если он не конченый старпер, то поймет.
#264 #482862
>>482859
Полезная лаба, кстати, привыкнешь к говну сейчас – проще будет работать с говном дальше.
#265 #482875
>>482861
>>482861
Препод баба, которая совершенно ничего не смыслит в программировании. К слову она кандидат психологических наук
#266 #482877
>>482862
>>482862
Но я хочу стать веб макакой, меня это мало интересует(
sage #267 #482879
>>482875
Специально дает лабы на винапи, чтобы ты потом лечиться к ней пошел.
#268 #482880
Как работает логическое и (&&) в крестах? Если первое условие не выполняется, значит дальше проверка не идет?
Вот например условие (a && b && c).
Проверяется выражение 'а'. Если оно равно false, то будет ли проверяться значение b?
#269 #482886
>>482880
нет. операнды вычисляются слева-направо. это значит, что даже параметры функции не будут вычислены, по не дойдет очередь до них.
|| точно также рабоатет. после true не вычисляется.
#270 #482903
>>482877
Тем более, привыкай к говну сейчас, потом пыху вилкой чистить будет легче.
sage #271 #482908
>>482880
по 15му стандарту КРЕСТОКОМПИЛЯТОР должен эвристически вычислить наиболее оптимальную последовательность вычисления бульских значений
например гцц собирает статистику нажатия на клавиш
ведь человеку свойственно набирать false-выражения несколько медленей
вся эта информация логируется и помогает КРЕСТОКОМПИЛЯТОРУ производить самые лучшие программы в мире
#272 #482913
>>482908
Что-то подобное и раньше было, нет?
sage #273 #482918
>>482903
Да ладно, бэкэнд можно хоть на тех же крестах пилить, хоть на хачкеле, наверное даже не баше можно. Другое дело что HTML/CSS/JS, это да.
sage #274 #482921
>>482918

> 2015


> бэкэнд на крестах

sage #275 #482942
>>482921
Почему бы и нет? На жабе же пишут.
sage #276 #482953
>>482942

> 2015


> бэкэнд на жабе

#277 #482963
>>482921
>>482953
Когда нет аргументов, но вякнуть хочется:

> зеленый текст


[optional] лол/проиграл/ясно
#278 #482967
>>482908
Ну пиздец теперь
34 Кб, 250x250
sage #279 #482973
#280 #484025
Пишу cout<<fixed<<1234.56789; выводит 1234.567890
Пишу cout<<1234.56789; выводит 1234.57
Как вывести 1234.56789?
sage #281 #484027
>>484025
printf "1234.56789"
#282 #484030
>>484025
cout<<1234;<<"."<<56789;
#284 #484080
Эти способы не работают если нужно вывести переменную. Нужен максимально простой и универсальный способ.
>>484027
Работает для float но не для double
>>484030
Неизвестно в каком месть точка.
>>484033
Неизвестно количество цифр в числе.
#285 #484107
Как делать завершение работы программы без вызова инструкторов?
#286 #484108
>>484107

>инструкторов


*деструкторов
#287 #484120
>>484107
exit(0)
#288 #484122
>>484120

>В таком случае, все используемые программой потоки закрываются, и временные файлы удаляются, и, наконец, управление возвращается ОС или другой программе.


На закрытие потоков и удаление файлов тоже время тратится. Есть способ чтобы моментально завершалась программа? А как переопределить закрытие потоков и удаление файлов чтобы он время после выполнения этих операций выводил? Для деструкторов было легко.
sage #289 #484139
>>484122

>Есть способ чтобы моментально завершалась программа?


Запросто:
[code lang="cpp"]
(char )0 = 0;
[/code]
#290 #484145
>>484139
А не вызывая ошибку?
ULTRA MEGA NANO OPTIMIZATION #291 #484167
Сап, плюсач, есть один float
Какой код будете быстрее?
[code lang="cpp"]
auto t = _float / 8;
[/code]
VS
[code lang="cpp"]
auto t = static_cast< unsigned int > (_float) >> 3;
[/code]
sage #292 #484170
>>484145
[code lang="cpp"]
#include <stdio.h>
#include <unistd.h>

char buff[10];
sprintf(buff, "%i", getpid());
std::string cmd = std::string("kill ") + buff;
system(cmd.data());
[/code]
#293 #484176
>>484167
где-то в статиках: float Inv8 = 1.0f / 8.0f;

auto t = _float * Inv8;
37 Кб, 588x600
Перекатился из Talks Алёна #294 #484230
оспода, прошу без хэйта.
Собираюсь уволиться с работы , чтобы наконец нормально вкатиться в pr.
Но Дело в том, что у меня с постановкой задач для самого себя возникают проблемы. Почитаю книги, напишу пару прог, а дальше что-то делать мотивации не сильно хватает (в общих чертах)
В общем, ищу Ментора)

Который задаст вектор и чуть поможет советами в плане : на что обратить внимание, а на что нет.
Как то так.
спасибо)

P.S ^ C++ - язык
#295 #484234
>>484230
Немного не туда ты пришёл, тут в большинстве студенты. Может быть, qt-пидор тебе поможет, хотя он тоже, вроде бы, в этом году выпускается. А так задавай свои ответы.
#296 #484305
Программачик, подскажи. Я такой читаю файл с помощью while ( file.read( bitword, 4 ) ). Выходит, что если в файле число байт не кратно 4, то последние байты не выводятся. Как красиво с этим разобраться?

Хочется читать именно по 4 байта, потому что цель -- посчитать 32-битную чексумму.
#297 #484307
Алсо, скажи, почему вот такая конструкция:

char bitword[4] = { 0 };
if ( file >> bitword )
{
std::cout << bitword << " ";
}

выводит целиком первое слово файла, если переменная заполняется всего разок и размер у нее 4 байта?
#298 #484315
>>484307
Ты что заполняешь-то ёпт? Ты же строку заполняешь.
#299 #484316
>>484315
Правда. Но строку ограниченной длины, все-таки. А первое слово выводится, даже если оно длиннее 4 байт.
sage #300 #484322
>>484234
Сам ты пидор.
>>484307
У тебя там вообще выход за пределы массива. Гугли про массивы и указатели. Подсказка: cout ничего не знает о размере bitword, для него это просто указатель на char.
sage #301 #484323
>>484322
Не cout, а file, конечно же.
#302 #484324
Вот оно как. И cin, стало быть, тоже не знает.
Тогда все понятно. Спасибо!
#303 #484396
>>484230
Какая область интересует?
Могу немного подсказать.
пиши на indanoize@inbox.im (jabber/mail
#304 #484405
>>484396
Спасибо за ответ.
С работы приду : напишу.
#306 #484480
Винапяны, может, кто знает.

Сейчас влез в чужой проект и мне надо оценить, насколько просто и возможно изменить архитектуру иконочек.

CreateDIBitmap() винапишная может как-нибудь предоставлять Transparency?
Полную? (чтобы на картинке были невидимые области)
Частичную? (чтобы картинка была видна, но просвечивала)
sage #307 #484497
#308 #484516
[code]char bitword[4] = { 0 };
if ( file >> bitword )
{
std::cout << bitword << " ";
}[/code]

тест
#309 #484521
>>484516
[code]
char bitword[4] = { 0 };
if ( file >> bitword )
{
std::cout << bitword << " ";
}
[/code]
#310 #484524
нихуя ваш костыль нерабоатет
#311 #484525
>>484524
прсто ты ебанько
#312 #484531
>>484525
ссанул наротан питуху
давай рабочий пример
#313 #484543
>>484307
[code lang="java"]
InputStream stream = new FileInputStream("1.txt");
byte[] buffer = new byte[];
stream.read(buffer);
[/code]
#314 #484544
>>484543

> byte[] buffer = new byte[4];

37 Кб, 532x497
sage #315 #484636
>>484524
Хули ты пиздишь. Работает не хуже чем твоя мамаша ртом.
63 Кб, 803x836
#316 #484766
>>484531
Всосал, аутист?
#317 #484767
Используется ли в реальной практике winAPI или стоит сразу идти в Qt?
#318 #484769
В классе есть 2 конструтора m(T1), m(T2). В случае NULL и nullptr должен вызываться m(T2*), как этого достичь? Пока единственная мысль: завести какой-нибудь пустой класс и передавать его фиктивным параметром. Ещё, если это поможет, один из них private, для чисто внутреннего использования, однако ошибки компиляции всё равно лезут.
#319 #484771
>>484769
[CODE]m(T1), m(T2)[/CODE]
#320 #484783
>>484767
Да, в мире огромное количество легаси кода, использующего винапи. Возможно, что тебе когда-нибудь придётся покопаться в этом дерьме.
#321 #484850
Посоветуйте пожалуйста книжку с основами, чтобы хватило пердолить в unreal engine. Может отдельные главы или типа того.
#322 #484878
>>484850
За 21 день хочешь освоить?
#323 #484891
>>484769
Для случая с nullptr добавляешь еще один коструктор
m(std::nullptr_t nullp) : m((T2*)nullptr) {}
Я с NULL наверное нихуя не сделать, касти его к указателю на T2 или к nullptr когда передаешь в конструктор. Ну или #define NULL nullptr но таким лучше не заниматься.
#324 #484895
Анон, скажи мне, это говнокод?
[code lang="cpp"]#include <ctime>
#include <random>

using namespace std;

class NameGen{
private:
int rnd_sml, rnd_cap;
char arr[6];
const char* alphab[4] ={
{"AEIOUY"},
{"BCDFGHJKLMNPQRSTVWXZ"},
{"aeiouy"},
{"bcdfghjklmnpqrstvwxz"}
};

public:
string genName()
{
for(int i=0; i< rand() % 6 + 2; ++i){
rnd_sml = rand() % 2 + 2;
rnd_cap = rand() % 2;
arr = alphab[(i==0) ? rnd_cap : rnd_sml]
[(i==0) ? ((rnd_cap==0) ? rand() % 6 : rand() % 20) : ((rnd_sml==2) ? rand() % 6 : rand() % 20)];
}
return arr;
}
}

int main()
{
srand(time(0));

//Тут вызов genName();

return 0;
}[/code]
#324 #484895
Анон, скажи мне, это говнокод?
[code lang="cpp"]#include <ctime>
#include <random>

using namespace std;

class NameGen{
private:
int rnd_sml, rnd_cap;
char arr[6];
const char* alphab[4] ={
{"AEIOUY"},
{"BCDFGHJKLMNPQRSTVWXZ"},
{"aeiouy"},
{"bcdfghjklmnpqrstvwxz"}
};

public:
string genName()
{
for(int i=0; i< rand() % 6 + 2; ++i){
rnd_sml = rand() % 2 + 2;
rnd_cap = rand() % 2;
arr = alphab[(i==0) ? rnd_cap : rnd_sml]
[(i==0) ? ((rnd_cap==0) ? rand() % 6 : rand() % 20) : ((rnd_sml==2) ? rand() % 6 : rand() % 20)];
}
return arr;
}
}

int main()
{
srand(time(0));

//Тут вызов genName();

return 0;
}[/code]
#325 #484931
>>484878
За сколько получится. Нужна просто отправная точка, чтобы и не учить много лишнего и подводных камней не сильно бояться.
#326 #484946
>>484891
Да, проблема только с NULL - кастить не выход, я пишу это говно для пользователя, которого не ебет. Я сделал проще, тот что в интерфейсе оставил указателем, а то что нужно было в кишка сделал ссылкой, появилась пара лишних звездочек и амперсандов, но по-моему это нормальное решение, учитывая что по логике тот что в кишках никогда и не должен работать с NULL/nullptr.
85 Кб, 300x436
#327 #484949
>>484931
В 14 лет я спросил у бати: "Что такое программирование?", и он принес мне приклейтед. Как оказалось позже, это было больше актом философского откровения, нежели ответом на мой вопрос. Читай, нормально.
#328 #484960
>>484946
Хотя для NULL можно еще такое сделать
m(int nullp) : m((m*)NULL) {}
Но это не сильно переносимо, та и выглядит стремно. NULL лучше вообще не использовать.
#329 #484964
>>484949
Так-так-так... Четвертое издание вышло в 2013 году. Причем не факт, что твой батя купил эту книгу сразу после ее появления в продаже. И тогда тебе было 14. Сейчас 2015 год. А два года назад тебе было 14.

>приклейтед


>это было больше актом философского откровения


>Читай, нормально.

sage #330 #484993
79 Кб, 700x988
#331 #485033
Во, классную книжку нашёл.
#332 #485064
>>484949
Уебал бы с вертухи тем кто всякие БИБЛИИ С++ сразу советует с чуть ли не полной спецификацией языка по которым можно хоть компилятор писать. Я из-за вас раз 10 уже дропал это говно.
#333 #485068
>>482822
Господи, каким же тупым себя чувствую(
Вот создаю я в 10-ой студии виндовс форм аппликатион. Далее, чтобы юзать все эти MoveTo() да LineTo() нужно знать девайс контекст формы. Собственно как его получить?
Я пытался писать GetDC(Form1), но студия пишет, что не может преобразовать тип HWND к HDC.
С примерами с сайта firststeps тоже не могу разобраться
29 Кб, 445x562
#334 #485084
>>484949
Прочитал всё. Непонятная и задания скучные. Начал читать пикрелейтед и книга идеальная для новичка. Но только со своим гуям заебал. Нахуя он этой графике столько посвятил если она даже в стандарт не входит? Теперь посоветуйте книгу по 11ому стандарту на русском.
#335 #485096
>>484931
Бери Лафоре ООП С++. Учился по ней программированию с нуля.
#336 #485098
>>484895

> магические константы


> куча вложенных тернарных операторов


> rnd_sml, rnd_cap


Да.
#337 #485100
>>485098

> магические константы


где?
#338 #485101
>>485096
Это которая 2004 года? too old
#339 #485102
>>485100

> char arr[6]


> const char* alphab[4]


> rand() % 2


> rand() % 6


> rand() % 20

#340 #485105
>>485102
char arr[6] - сгенерированное рандомное имя. дальше же идет присваивание arr = alphab.... , а потом return arr.

const char* alphab[4] - там дальше идет инициализация буквами из алфавита.

а насчет рандомных чисес даже не знаю. наверное, стоит все-таки изменить.
#341 #485121
#342 #485130
есть вопрос опытным ребятам.
я учу Си и Плюсы в свободное от работы время (пишу на других языках), все продвигается медленно, но я и не расчитывал что получится быстро. Написал я короче простенькое приложение, которое асинхронно ходит на криптобиржу и анализирует что там происходит. Хочу выкатить в продакшн (для тренировки)
собственно говоря вопрос - мы на работе для таких вещей используем chef, который сам деплоит енв и само приложение.

Какие решения для автоматизации деплоймента используете вы, какие best practices?
(на данный момент я планирую написать кукбук, который будет дергать scons для установки на енв)
3868 Кб, Webm
#343 #485141
Анончик, помоги мне, есть код (VS2013):

template <class TYPE>
TYPE cmp(TYPE a, TYPE b)
{
\treturn a-b;
}

template <class TYPE>
void sort(TYPE(*mcmp)(TYPE,TYPE),int X3)
{
TYPE a,b;
//......
mcmp(a,b);
//......
}

Вопрос: как мне вызвать функцию sort из мэйна (предположим с типом int)?
#345 #485690
В тред призываются деды-пердеды, которые когда-то писали с помощью MFC на Winapi.
[code lang="cpp"]
void TUIObj :: DrawPixelmap( CDC &dc, TPixelMap &pm, Long t, Long b, Long l, Long r, Long v, Long h)
{
\tASSERT(dc != NULL);

\tif ((t > b) || (l > r)) return;

\tif( pm.GetBitmap( dc ) )
\t{
\t\tCBitmap *old_bmp;
\t\tCDC memdc;

\t\tmemdc.CreateCompatibleDC( &dc );
\t\timg_bmp = CBitmap::FromHandle( pm.Bitmap() );

\t\tBLENDFUNCTION bf;
\t\tbf.BlendOp = AC_SRC_OVER;
\t\tbf.BlendFlags = 0;
\t\tbf.AlphaFormat = AC_SRC_ALPHA;
\t\tbf.SourceConstantAlpha = 0xFF;

\t\told_bmp = memdc.SelectObject( img_bmp );
\t\tdc.AlphaBlend(h, v, (r-l+1), (b-t+1), &memdc, l, t, (r-l+1), (b-t+1), bf);
\t\tmemdc.SelectObject( old_bmp );
\t\tmemdc.DeleteDC();
\t}
}
[/code]

pm.Bitmap() - HBITMAP с хедером BITMAPV5HEADER и цветовой маской 0xAARRGGBB.

В результате конечный цвет как-то ебануто инвертится. С чем это может быть связано?
#345 #485690
В тред призываются деды-пердеды, которые когда-то писали с помощью MFC на Winapi.
[code lang="cpp"]
void TUIObj :: DrawPixelmap( CDC &dc, TPixelMap &pm, Long t, Long b, Long l, Long r, Long v, Long h)
{
\tASSERT(dc != NULL);

\tif ((t > b) || (l > r)) return;

\tif( pm.GetBitmap( dc ) )
\t{
\t\tCBitmap *old_bmp;
\t\tCDC memdc;

\t\tmemdc.CreateCompatibleDC( &dc );
\t\timg_bmp = CBitmap::FromHandle( pm.Bitmap() );

\t\tBLENDFUNCTION bf;
\t\tbf.BlendOp = AC_SRC_OVER;
\t\tbf.BlendFlags = 0;
\t\tbf.AlphaFormat = AC_SRC_ALPHA;
\t\tbf.SourceConstantAlpha = 0xFF;

\t\told_bmp = memdc.SelectObject( img_bmp );
\t\tdc.AlphaBlend(h, v, (r-l+1), (b-t+1), &memdc, l, t, (r-l+1), (b-t+1), bf);
\t\tmemdc.SelectObject( old_bmp );
\t\tmemdc.DeleteDC();
\t}
}
[/code]

pm.Bitmap() - HBITMAP с хедером BITMAPV5HEADER и цветовой маской 0xAARRGGBB.

В результате конечный цвет как-то ебануто инвертится. С чем это может быть связано?
#346 #485748
>>485690
Попробуй AABBGGRR, в .bmp цвета хранятся в обратном порядке.
#347 #486034
Опять я со своими линиями пришел. Таки дело сдвинулось с мертвой точки, но теперь непонятно вот что:
есть событие формы load:

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
Graphics^ g = Graphics::FromHwnd(this->Handle);\t
Pen^ blackPen=gcnew Pen(Color::Black,3.0f);
g->DrawLine(blackPen,10,10,100,100);
}
это код должен рисовать жирную линию на форме, но этого не происходит. В совю очередь, если его скопировать в код button_click, то линия рисуется. В чем проблема?
#348 #486038
>>486034

> Form1_Load


> Form1



А по делу - это не в Load должно вставляться. Не помню, за что отвечает точно Load, т.к. давно не ебался с графикой, но точно не за рисование.
Нужен event типа LoadFinished или Paint или Draw, что-то такое. Поищи, короч.
#349 #486056
>>486038
Действительно! Вот так нужно было:
Form1_Paint
Благодарю
#350 #486148
>>484895

>Анон, скажи мне, это говнокод?



да, даже очень, http://en.cppreference.com/w/cpp/string/byte/toupper
и я нихуя не понял, зачем ты разделил гласные и согласные, у тебя это нигде не используется
#351 #486155
[code lang="C++"]
ifstream in("input.txt");
in.getline( in, inNumber, ' ');
[/code]

Выдает ошибку no matching function for call to 'std::basic_ifstream<char>::getline(std::ifstream&, std::string&, char)'

Почему? Вот же
istream& getline (istream& is, string& str, char delim)
Где я обосрался?
#352 #486158
>>486155
Я долбоеб, сам нашел.
#353 #486172
Ознакомился с С/С++ и появилось несколько вопросов по работе с памятью.

Если Предположим я создаю массив с мопощью malloc или new не важно. В результате имею указатель на него. Что будет если я поиграюсь с ним с помощью ++ и --, а затем вызову free или delete то удалиться только элемент массива или весь массив?
А при вызове delete []?
А если я опереторома -- и ++ верну указатель на исходное место и опять вызову free или delete[]?

Второй вопрос. Если я определяю четыре инта расположенных в рамдомных частях кода. Место в куче закончилось. Освобождаю инты и хочу объявить структуру как раз размером а четыре инта. Займёт ли структура их места с учётом того что они в совершенно разных частях памяти и уж точно идут не по порядку.
Происходит ли фрагментация памяти и не накапливаются ли свободные кусочки памяти которые нельзя использовать поскольку туда ничего не влазит и получается косвенная утечка памяти?

сори за подчерк пишу с калькулятора
#354 #486177
>>486172
1. передавать в delete[]/free нужно только тот указатель, что вернул new[]/malloc соответственно (иначе будет UB); удалится весь массив

2.

>Займёт ли структура их места с учётом того что они в совершенно разных частях памяти и уж точно идут не по порядку.


структура из 4х интов --- это кусок памяти размером 16 (либо 32) байта, так что нет. да и вообще, нельзя ожидать что очередной запрос памяти в куче вернет освобожденный перед этим указатель

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


да

>пишу с калькулятора


экзамен?
#355 #486182
>>484964
Но мне 13, Холмс, в вашем рассуждении, должно быть, затесалась ошибка...
#356 #486193
>>486177
Нет, лень пекарню включать.

По поводу последнего. На счет фрагментации памяти. С этим как-нибудь борются не считая использования язаков со сборшиком мусора?
#357 #486203
>>486193
Товарищ педераст, ваш выбор - раст.
#358 #486209
>>486193
Аллокаторами пытаются бороться.
#359 #486410
Как возвращать двумерный массив из функции?
[code lang="cpp"]
//header.h
class SS{
private: char a[CONSTANTA1][CONSTANTA2];
public: char[][] hh();
}

//header.cpp
char[][] SS::hh(){
return a;
}

/ОШИБКА в header.h :expected unqualified-id before ‘[’ token/

[/code]
sage #360 #486428
>>486410
g: c++ arrays and pointets
sage #361 #486429
>>486428

>pointers

#362 #486431
>>486410
[code lang="cpp"]
class SS {
private:
boost::multi_array<char, 2> a;
public:
SS() {
a(boost::extents[CONSTANT1][CONSTANT2])
}
boost::multi_array<char, 2> hh() {
return a;
}
};
[/code]
#363 #486456
>>486431
[code lang="cpp"]
SS() : a(boost::extents[CONSTANT1][CONSTANT2]) {
}
[/code]
slow fix
#364 #486689
>>486431
То есть возможность вернуть массив из функции не встроена в язык и в стандартной библиотеке отсутствует? Или с бустом легче?
#365 #486691
>>486689
Массивы – указатели, многомерные массивы – многомерные указатели. Буст – параша.
#366 #486692
>>486691

>no. an array is an array. A pointer to the start of the array is a pointer. It just happens that the compiler has some syntactic sugar that does the translation for you in some situations. array and &array are interchangeable in a lot of cases.

sage #367 #486698
>>486689

>возможность вернуть массив из функции не встроена в язык и в стандартной библиотеке отсутствует


Да. Можно вернуть только указатель, равно как и передать. int a[] в качестве параметра - синтаксический сахар, фактически это значит int *a.
#368 #486731
>>486689
Массивов в С как таковых нету, нет такой сущности в языке. То что обычно называется массивом это сахар над арифметикой указателей, выражение типа foo[bar] разворачивается перед компиляцией в *(foo + bar)
https://ideone.com/S2wEC5
Поэтому возвращать массивы нельзя - нельзя возратить то чего нет. Есть указатели - их можно возвращать. В С++ есть массивы в виде std::array и std::vector - их спокойно можно возвращать.
#369 #486734
Посоны, есть хост-программа. Она скомпилированна Visual Studio 2010. Я собираюсь скомпилировать к ней опен-сорс плагин (буду это делать тоже с помощью Visual Studio 2010). Плагин использует библиотеку, которая пока ничем не скомпилирована.

Вопрос: обязательно ли компилировать библиотеку, которую юзает плагин той же версией студии? Или можно более новой?
#370 #486743
>>486410
>>486731
Ок, спасибо.

>>486731

>foo[bar] разворачивается перед компиляцией в *(foo + bar)


А во что разворачивается foo[bar1][bar2]?
#371 #486757
>>486743

> foo[bar][baz]


٭)٭(foo + bar) + baz)
#372 #486821
>>486698
Лол. Пять минут в С++ и уже знаю про конструкторы и деструкторы. В том числе про конструктор копирования.
Пруф, еще и саганул.
#373 #486822
Вообще ненавижу вас пидорасов. Сука мрази. Каждый раз, чтобы скомпилировать 150кб какого-нибудь говна, нужно предварительно собрать 8Гб всякого дерьма, которое вы понацепляли зависимостями. Горите в аду. В 95 году за такое убивали.
#374 #486830
>>486822
Наркоман чтоли?\
#375 #486838
>>486830
Буст, qt, многие другие. Впрочем, есть и другая крайность — каббалистический ад хаскеля.
#376 #486840
>>486830
Наркоманы, это вы. Написали пару строк кода, заинклудили Boost, Qt и еще горы подобного. Вам-то удобно, хуякс-хуякс. А как пользователи это будут собирать вас уже не интересует. "УМВР".
#377 #486846
>>486840
Qt сейчас каждая 2я программа тянет, пора бы уже его иметь.
#378 #486861
>>486846
Дело в том, что я не программист. И компилирую что-то раз в год. У меня никогда не бывает рабочего энваромента со всей этой тряхомудией. Каждый раз одно и тоже. Скачайте все самые новые версии библиотек (ой, у вас есть скомпилированная версия 5.8.12, но нужна только 5.8.14 -- собери из исходников, раб). Проебись пару дней с отлавливаем ошибок cmake, потом еще пару дней прогугли вы ошибки компиляции. В итоге: "ура, у вас готов плагинчик, которые умеет двигать x в y". Это, конечно, никак нельзя было сделать без boost и всего остального.
#379 #486866
Привет, программач! У меня возникла мысль написать мобильное приложение для прослушивания и создания midi-музыки (аналог Guitar Pro) на Qt. Поэтому возникло несколько вопросов:

— какую библиотеку для работы с midi ты можешь посоветовать?
— имеет ли смысл изучать QML для этого или можно работать просто на Qt?
— насколько подобная прога может помочь в устройстве на работу?
#380 #486868
>>486861
Почему я качаю последнюю версию из репов и не ебу себе мозг? Или ты у нас мамкин гентушник?
3 Кб, 298x77
#381 #486869
Вот смотрите, программисты, сколько уже весит папка с dependency дерьмом. Думаю она распухнет раза в три, прежде чем я успешно скомпилирую то, что мне нужно. Вы считаете, что так и должно быть?

Излил свой бугурт и съебываю отсюда
#382 #486871
>>486869
А ты считаешь, что мы тут ядерный реактор из говна и палок должны собирать? Тебе, блджад, всё кросспалтформенное, быстрое и попен-сорцное подавай.
sage #383 #486876
>>486691

>многомерные массивы – многомерные указатели


Да ты не ебнулся ли часом? Заебешься разыменовывать 10-мерный массив чтобы добраться до значения. Массив любой размерности это один указатель с арифметикой для размерностей. a[x][y] это ((a + Mx) + y) для любого статически определенного двумерного массива.
sage #384 #486879
>>486876
[code lang="cpp"]a[x][y] == ((a + Mx) + y)[/code] для массива a[M][N]
fix во славу макабы
#385 #486965
>>478556
как объекту через метод получить доступ к данным другого объекта? не спал уже более 16 часов туплю ппц, выручай анон
#386 #487004
>>486965
friend?
#387 #487006
>>487004
yep :3
#388 #487152
>>486871
Напомни, сколько весит джава?
sage #389 #487186
>>487152
Напомни, какой блевотный гуй получается на жабе и какое уебищное апи для его создания?
77 Кб, 629x620
#390 #487194
>>487186
Ну и какой же?
#391 #487215
>>487152
В 9000 раз меньше, чем жрёт оперативки.
sage #392 #487225
>>487194
Блевотный не нативный.
332 Кб, 1024x768
#393 #487229
>>487225
Вот тебе нативный. Как говорится почувствуйте разницу.
#394 #487234
>>487229
Ну и хули ты сюда этот прошлый век притащил?
#395 #487236
>>487234
Всё верно

> гуи


> нативный гуи


> прошлый век

#396 #487239
>>487236
Почему ты так считаешь? Нативный гуй не обязательно должен быть уродливым.
#397 #487241
>>487229
Божественно!
#398 #487246
>>487239
У большинства норм программ он не нативный. Взять хотя бы твой браузер, или среду разработки.
А вообще гуи не нужен, когда есть веб. Пишешь бекенд и пользуйся хоть с мобильника.
sage #399 #487250
>>487246
Все с тобой ясно.
#400 #487256
>>487250
Гуляй, порватка
#401 #487257
>>487250
Чего тебе ясно?

>>487246
Но это же фронтэнд пилить ещё надо. А если брать какой-нибудь qt или gtk, то можно просто налепить простыню кода. Работать будет, а если постараться то ещё и красиво.
#402 #487258
>>487257

> Но это же фронтэнд пилить ещё надо.


Декларативная страница всяко лучше, чем простыня кода.
sage #403 #487312
Проигрываю с веб-макак. Для декларативного гуи белые люди используют qml, а не язык разметки цветного текста с кучей инородных костылей, который один хуй тормозит даже на мощных конфигах.
#404 #487329
>>487312

> белые люди


> qml


Проиграл
#405 #487342
>>487329
Предпочитаешь JavaFX или WPF? Qml, кстати, выглядит приятнее, чем вся эта XML-подобная дрисня.
#406 #487354
>>487342
Та же херня, только сбоку. Суть WPF в мощных автоматических дата-биндингах, а xml <-> json переводится нахаляву же но вообще, да xml выглядит сильно хуже
#407 #487446
>>487004
объекты одного класса
sage #408 #487469
>>487446
Статические переменные.
#409 #487625
What's the binary value of '\0' ? What is the difference between '0'
and '\0'?
#410 #487629
>>487625
The quick answer is that the character '0' is represented in binary data by the ASCII number 48. That means, when you want the character '0', the file actually has these bits in it: 00110000. Similarly, the printable character '1' has a decimal value of 49, and is represented by the byte 00110001. ('A' is 65, and is represented as 01000001, while 'a' is 97, and is represented as 01100001.)

If you want the null terminator at the end of the string, '\0', that actually has a 0 decimal value, and so would be a byte of all zeroes: 00000000. This is truly a 0 value. To the compiler, there is no difference between
#411 #487655
Как перевести на руский "linearithmic" ?
#412 #487678
>>487655
A linearithmic function is a function of the form n · log n (i.e., a product of a linear and a logarithmic term). An algorithm is said to run in linearithmic time if T(n) = O(n log n).[7] Thus, a linearithmic term grows faster than a linear term but slower than any polynomial in n with exponent strictly greater than 1.

Очевидно, йобаалгоритм с алгоритмической сложностью O(n · log n) Тащи фразу, переведём.
#413 #487736
have linearithmic acces time
#414 #487747
>>487736
Имеет время доступа O(n · log n)
#416 #487757
Ну если следовать способу образования английского слова должно быть что-то типа "линерифмический", но лучше как анон >>487747 делать.
128 Кб, 464x450
#417 #487765
#418 #487836
Array of arrays Двумерный массив и array of pointers to arrays - это разные вещи? Тогда как работает array of arrays?
Что возвращает следующий код?
[code lang="cpp"]
char D::genD()
{
for (int y = 0; y<D_HEIGHT; y++){
for (int x = 0; x<D_WIDTH; x++){
d[y][x] = NOTHING;
}
}
return
d;
}
[/code]
sage #419 #487846
>>487836
Ничего не возвращает, d не объявлена.
#420 #487909
>>487846
[code lang="cpp"]char d[D_HEIGHT][D_WIDTH];[/code]
sage #421 #487929
>>487909
d[0][0] он тебе вернет.
#422 #487952
>>487257

>Чего тебе ясно?


Веб-макака в C++ треде качает права. Ну что ж, вполне современно.
#423 #487964
Есть два класса. У одного есть чисто виртуальная функция
[code lang="cpp"]
virtual Component *clone (...) const;
//
auto components_clone = std::make_shared< Component > (component.second->clone (owners_clone));
[/code]
Почему код не работает (компилятор ругается на абстрактность Component)
Однако, если я меняю
[code lang="cpp"]
virtual std::shared_ptr< Component > clone (...) const;
[/code]
то все компилится без проблем.
Почему так?
юзаю спермокомпилер
#424 #487967
>>487929
тогда почему следующий код не работает?
[code lang="cpp"]
D cls;
char dd = cls.genD();
cout << dd[0][2];
//Ошибка
cout << dd[0];
//Никакой ошибки
[/code]
Хотя, уже все равно.
Поменял
[code lang="cpp"]
char d[HEIGHT][WIDTH];
[/code]

на

[code lang="cpp"]
char
d = new char[HEIGHT];
for (int i = 0; i < HEIGHT; i++)
d = new char[WIDTH];
[/code]

и все заработало. Только вот теперь вопрос: двумерный массив и указатель на массив из указателей на массивы - это разные вещи ?
#425 #487968
>>487964
Хуйню сделал, нахуя в make_shared передавал указатель на созданный объект?
Пиздец, блять
#426 #487972
>>487967
Тех массивов, которые ты притащил в С++ из паскаля, тут нету.
Есть указатели на 1 элемент или на несколько элементов, а как их интерпретировать - решать тебе
#427 #487984
>>487972

>Тех массивов, которые ты притащил в С++ из паскаля, тут нету.


ебать ты тупорылый
320 Кб, 3072x1728
#428 #487985
Посоны, сижу на паре, препод-пидор не хочет ставить мне 5 и дал мне эту ебучую функцию ( 14 задание). Что мне надо сделать? А если кто-то, кто знает, напишет код -- могу скинуть деньги на мобильный счёт (для укро-анонов).
#429 #487988
>>487985
Дебил, блять.
sage #430 #487989
>>487967
Не работает потому, что компилятор в душе не ебет что твой массив двумерный, когда ты выносишь указатель за пределы области, в которой он был определен. Используй контейнеры и не еби себе мозги. boost тебе дал multi_array для твоих нужд. Дабы ты понимал, в C++ возвращение голого указателя является моветоном.
3407 Кб, 500x276
sage #431 #487991
>>487985

> 14 задание


> на пике только 12 и 13

#432 #487993
342 Кб, 1728x3072
#433 #487999
>>487985

>>487991
С телефона писал. Сорян.
#434 #488000
>>487988
Почему дебил? Я действительно хз как это делать. Одногруппники тож дауны не шарят.
#435 #488078
>>486757
>>486731

>Массивов в С как таковых нету, нет такой сущности в языке


>∗(∗foo + bar) + baz)


вон из профессии нахуй, быстра блядь

откуда вообще блядь пошло что массивов не существует??? да, они decay до указателя, но это отдельная сущность

int x[a]; --- x[j] ==== ∗(x + b∗i + j)

сука блядь, развелось похапистов не отличающих массив от int∗∗
#436 #488087
>>488078

>int x[a]; --- x[j] ==== ∗(x + b∗i + j)


int x[size1][size2]; --- x[index1][index2] ==== ∗(x + size2∗index1 + index2)

макаба сосет хуи
#437 #488128
>>488078

>откуда вообще блядь пошло что массивов не существует??? да, они decay до указателя, но это отдельная сущность


Если массив это отдельная сущность, то как ты объяснишь строку 8 в https://ideone.com/S2wEC5 ?
#438 #488138
>>488087

> x + size2∗index1 + index2


Интересная точка зрения. А как эта формула работает если двумерный массив не прямоугольный, а с разными длинами строк?
#439 #488144
>>488128

>как ты объяснишь строку


сишным стандартом:
http://stackoverflow.com/questions/5073350/accessing-arrays-by-indexarray-in-c-and-c

>>488138

>а с разными длинами строк


а ну быстра сделал мне !двумерный массив! с разным длинами строк
не массив указателей на строки, а именно массив с разными длинами строки
и сразу покажи его sizeof (и ассемблерный код если ваще знаешь что это такое)
32 Кб, 400x290
#440 #488262
Анон, я прочитал на хабре статью про библиотеку boost, где в частности сказано:
"Хотя вы можете легко писать код, используя нативные циклы, есть несколько причин, почему вы можете захотеть писать их таким способом. Первая — кодирование становится чуточку проще. Вторая — джуниоры(или даже сеньоры, которые, как вы думаете, никогда не должны быть повышены) с меньшей вероятностью сделают всё ту же старую ошибку, написав что-то вроде "for (i=0; i<=length;i++)", а потом ещё будут спрашивать вас, почему этот код иногда работает, а иногда падает внутри функций, из которых был вызван."

Объясните мне, чем плох такой цикл?

http://habrahabr.ru/post/173639/
#441 #488263
>>488262
мб int i=0 должно быть написано? мммм
#442 #488265
>>488262
на хабре написано хуйово либо вообще хуйня какая-то (ошибка "меньше-либо-равно" вместо "меньше" --- это слишком примитивно и тупо)

суть foreach --- это пройтись по всем элементам контейнера и выполнить операцию
разница с "for (size_t i=0; i<length; ++i)":
1. length может быть неконстантной операцией (например для связных списков)
2. "foreach (Object& obj, container)" сильно короче чем "for (size_t i = 0; i < container.length(); ++i) { Object& obj = container;"

короче говоря, это не for плох, это foreach лучше
алсо, для C++11 есть for (Object& obj : container) --- гуглить range-based-for
#443 #488271
>>487967
Array of arrays - это статический одномерный массив с синтаксической обёрткой в виде array[huy][pizda]. Все элементы расположены в статической памяти и последовательны, поэтому нужный вычисляется с помощью array[x][y] == ((array + huyx) + y). Между функциями можно кидать с помощью testFunction(&array[0][0], huy, pizda).

Array of pointers to arrays - это динамический массив вида
*array в котором каждая строка - это отдельный массив, который располагается в разных частях кучи. В функции отсылается с помощью testFunction(array, huy, pizda). А там уже доступ к отдельному элементу просто по array[x][y].
#444 #488273
>>488271
разметка проебалась

>array[x][y] == ЗВЁЗДОЧКА((array + huy ЗВЁЗДОЧКА x) + y)


> динамический массив вида ДВЕ_ЗВЁЗДОЧКИarray

#445 #488286
>>488271
А что лучше использовать?
sage #446 #488303
>>488286
Лучше использовать контейнеры.
#447 #488329
Как можно распарсить строку, состоящую из слова и каких-нибудь цифр, на слово и эти самые цифры? Цифр может быть от нуля до 100, например.
#448 #488331
>>488329
Слов тоже может быть несколько
#449 #488339
>>488329
Пример приведи с исходной строкой и результатом.
#450 #488342
>>488339
MySphere CreateSphere(0,3,6,5) - парсится на MySphere, CreateSphere, и числа 0, 3, 6 ,5
#451 #488370
>>488329
Тебе нужен лексический анализатор (лексер). Есть готовые (Flex, lex). Если задача простая и ты уверен что она не будет потом расширятся то можно свой навелосипедить.
sage #452 #488380
>>488370
Разве лексер не лексемы анализирует? Ему yacc (bison) нужен чтобы на лексемы разбить сначала.
#453 #488388
>>488380
Лексер разбивает входной поток на токены. Смотря что именно ему нужно, если просто токенов не достаточно то может и yacc понадобится, но для yacc тот же лексер нужен сначала.
#454 #488422
Will this program generate a memory leak? Why?

char * p= new char[256];
delete p;
#455 #488424
>>488422
Yes that is a memory leak.
You must use delete [] for arrays instead of simple delete.
#456 #488439
подскажете каким образом выделяется память в случаях

struct Bloc
{
float a,b;
unsigned char c;
int d;
};

vector< Bloc> vec = new vector< Bloc>();
vector< Bloc> vec;
#457 #488448
Котоны, как узнать размер char, имея только указатель на него?
sizeof(char) выдаёт размер самого указателя, а sizeof(*char) размер первого элемента из массива соответственно.
Но как, блядь, мне получить ебаный размер ВСЕГО МАССИВА?
#458 #488454
>>488448
Никак.
#459 #488462
>>488422
It's UB.
#460 #488464
>>488439

> каким образом


Что ты имеешь ввиду?
#461 #488470
>>488464
Куча/стек?
sage #462 #488479
>>488470
[code lang="cpp"]
std::vector<Block> vec; // Контейнер в стеке, элементы в куче
std::vector<Block>* vec = new std::vector<Block>; // Контейнер в куче, элементы в куче. Так пишут только долбоебы, btw
[/code]
#463 #488498
>>488479
Спс
#464 #488547
Котаны, как передать в функцию новый элемент?
p_create(string(s, k, s.size()));
Хочу сделать что-то типа такого, но не получается. Видел такую письку в чьем-то коде
#465 #488550
>>488547
Какой новый? Чего ты хочешь вообще?
#466 #488556
>>488550
Не хочу создавать новый объект, хочу создать и сразу передать его
#467 #488561
>>488556
гугли perfect forwarding и все эти emplace_back
#468 #488564
>>488561
спс
#469 #488574
>>488454
Ну охуеть вообще, придётся ещё и длинну аргументом пердолить...
#470 #488576
>>488574
std::vector / std::array
#472 #488691
>>488674
говно-си
цепепе-господа используют std::string, если речь идет о строках

кстати говоря, давайте уж обсудим immutable строки. основное преимущество — возможность делать их shareable и быстрые substring операции

inb4: про проблемы COW написано тут: http://www.gotw.ca/publications/optimizations.htm
#473 #488700
>>488691
Что там обсуждать? Было бы годно. Было бы нехуёво в таком случае иметь две версии, как это сделано в Scala с некоторыми коллекциями.
Быстрый substring за счёт суффиксных массивов/автоматов?
#474 #488711
>>488700

>Быстрый substring за счёт суффиксных массивов/автоматов?


не, я имел ввиду не поиск, а генерацию поддиапазона:
http://pastebin.com/jFc7fHRC
за счет aliasing constructor ( http://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr )
46 Кб, 325x450
#475 #488774
Как можно перехватывать нажатия клавиш в Win-консоли (к примеру нажатия стрелок на клавиатуре)?
sage #476 #488812
>>488774
Погуглил за тебя, сученок, можешь не благодарить.
http://stackoverflow.com/questions/10394292/how-to-intercept-keystrokes-to-windows-command-prompt
#477 #488815
>>488812
Люблю тебя, ты делаешь мою жизнь веселее.
#478 #488831
Какой метод инициализации предпочтительнее?

class Point {
double x = 0;
double y = 0;

public:
Point() { }
};

class Point {
double x;
double y;

public:
Point() : x(0), y(0)
{ }
};

class Point {
double x;
double y;

public:
Point() {
x = 0;
y = 0;
}
};
#478 #488831
Какой метод инициализации предпочтительнее?

class Point {
double x = 0;
double y = 0;

public:
Point() { }
};

class Point {
double x;
double y;

public:
Point() : x(0), y(0)
{ }
};

class Point {
double x;
double y;

public:
Point() {
x = 0;
y = 0;
}
};
sage #479 #488836
>>488831
Первый не возможен, третий не инициализация, а присвоение. Так что второй — твой единственный выбор.
#480 #488855
Есть программа поиска файлов, которая в заданном месте обходит дерево каталогов с помощью функций FindFirstFile, FindNextFile. Проблема заключается в том, что на диске "C:" есть всякие спец-каталоги, типа System Volume Information, Recovery и т.п., к которым НЕТ ДОСТУПА, отсюда два вопроса:
1. как определить что каталог является именно спец-каталогом?
2. можно ли получить к ним доступ?
sage #481 #488863
>>488855
У винды с этим есть проблемы с излишне сложными механизмами.
И за тебя погуглил тоже.
http://blog.aaronballman.com/2011/08/how-to-check-access-rights/
sage #482 #488868
>>488855
Ну и дабы получить доступ к тому, что только администратор может видеть тебе нужен элеватор.
http://www.codeproject.com/Articles/320748/Haephrati-Elevating-during-runtime
sage #483 #488882
>>488855
А чтобы получить доступ к System Volume Information тебе скорее всего понадобится запустить процесс от имени системы
http://stackoverflow.com/questions/19187548/how-do-i-write-a-windows-8-software-to-run-with-system-privileges
#484 #488900
Так сколько-таки объектов в том треде? Разобрались? Не могу уловить правильный ответ в сраче.
https://2ch.hk/pr/res/470285.html
#485 #488942
>>488831
>>488836
первый — это c++11
#486 #488943
>>488863
>>488868
>>488882
Спасибо вам, анончики!
#487 #488944
>>488836
C++11 разрешает.
http://ideone.com/9o9qoq
#488 #488963
>>488900
На первый вопрос правильный ответ "один объект, называется cat", но оп-хуй вывел свою терминологию, по которой создаваемый таким образом объект не имеет названия, а названия есть только у статически создаваемых объектов. Вообще определенный смысл в таком подходе есть, но указатели на объекты часто упоминаются как "имена объектов", и давать такой вопрос на собеседовании хуево. Все упирается в терминологию, которая четко нигде не прописана, и никто за ней не следит.
sage #489 #488987
>>488942
>>488944
Каждый день узнавать что-то новое.

Тогда в том случае больше подходит первый вариант. Предполагаю что это было сделано для инициализации членов, которые могут быть не проинициализированы в конструкторе, вроде изначального стейта объекта, указанного явно.
130 Кб, 807x625
#490 #489034
Анон, помоги раку. Я разбираюсь с потоками ввода-вывода и не могу понять одну вещь.
в ios есть следующий код:

inline ios_base& __CLRCALL_OR_CDECL hex(ios_base& _Iosbase)
{\t// set basefield to hex
_Iosbase.setf(ios_base::hex, ios_base::basefield);
return (_Iosbase);
}
когда мы пишем hex(cout), то все понятно, но почему работает код cout<<hex, ведь у функции есть обязательный параметр?
sage #491 #489051
>>489034
потому что у стрима есть оператор<<, который эти функции принимает. А уже в ней стрим применяет эту функцию к себе.
69 Кб, 604x550
#492 #489173
>>489051
А можно пример, как реализовать подобную функциональность для своего класса.
sage #493 #489187
#494 #489267
>>489187
Добра тебе.
#495 #489312
>>489187
Извини, что я тебя достаю, но у меня еще вопрос: как перегрузить манипуляторы потока, принимающие значения, к примеру такие как setw?
cout<<setw(10)<<"Pomogi Anon!!!";
#496 #489332
>>489312
Открываешь исходники, например https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/iomanip-source.html смотришь что это вообще за параша, перезагружаешь с нужным типом
http://ideone.com/j1RWct
#497 #489398
Почему, блядь, в новый стандарт добавили всякого бесполезного хлама из boost, а shared_mutex не добавили? Какого хуя, я теперь должен пихать три мьютекса вместо двух для корректной работы разделяемого доступа по чтению, пиздец просто. Охуевшие суки, твари. Засуньте своей мамаше в пизду свой синтаксический сахар, мрази. Все эти auto, блядь, range-based-for, ага. Да нахуя мне это говно, я вас спрашиваю, ленивые ебланы. Конечно, блядь, я должен теперь подключать ебаный буст, или хуярить ЕЩЕ БОЛЬШЕ МЬЮТЕКСОВ О ГОСПОДИ ИХ СЛИШКОМ МАЛО КОД НЕДОСТАТОЧНО НИЗКОУРОВНЕВЫЙ НАВЕРНЕМ ЕЩЕ АТОМАРНЫХ ФЛАГОВ ВОТ ТЕПЕРЬ ЗАЕБИСЬ. Запилите уже нормальных фич в библиотеку, будьте же людьми.
#498 #489412
>>489398

>новый стандарт


>C++11


охуел?

>shared_mutex не добавили


добавили: https://isocpp.org/blog/2013/04/n3659-shared-locking

>я должен теперь подключать ебаный буст


НУ ПИЗДЕЦ ОХУЕТЬ БЛЯДЬ ТРАГЕДИЯ!!!1111одинодин
#499 #489413
>>489412

>я должен теперь подключать ебаный буст


> НУ ПИЗДЕЦ ОХУЕТЬ БЛЯДЬ ТРАГЕДИЯ!!!


Двачую, это говно настолько прижилось, что легаси с boost::shared_ptr мы будем видеть ещё и через десять лет.
#500 #489456
ОП, пили перекат, пока дауны с лабами не набежали.
#501 #489458
>>488963
Блять, решил почитать, что там за объекты. Читал несколько минут, пытаясь понять, в чем подвох. Подвох в том, что ОП-хуй подумал, что придумал вопрос с подвохом. Гавно какое-то.
#502 #489464
>>489458
Просто ОП того треда – хуй, который валит все свои проблемы на джунов, которых сам и взял. Даже вопрос не может адекватно сформулировать, блять, а чего ждёт от молодёжи ещё.
sage #503 #489482
>>489456
Завтра запилю.
Аноним #505 #493350
>>478834
фл ин юн не рили?
Тред утонул или удален.
Это копия, сохраненная 24 июня 2015 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски