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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #441716
>>441690
Перепишите с использованием хвостовой рекурсии.
#3 #441727
>>441725
http://ideone.com/xSDeAx
Ну очевидно же:
Если переменная скорости по оси 0: возвращает новую координату положения по одно оси (которая не 0) с учетом скорости и шага.
Если переменная скорости по оси не 0: возвращает новую координату с учетом угла , скорости и шага.
#4 #441728
>>441716
Разве в крестах есть TCO?
#5 #441733
>>441727
Прочитал свой-же пост и оптимизировал.
http://ideone.com/xSDeAx
#6 #441735
>>441733
Посмотрел еще раз и поня, хуйню написал.
#7 #441753
Помогите долбоебу.
Как в двухмерном динамическом массиве найти максимумы строк?
#8 #441758
>>441727
Нет-нет, ты меня не понял. Я знаю что означает этот код. Но для чего он предназначен? Что такое b?
В идеале у тебя в классе typeof(b) должна быть член-функция animate(int step), которая делает все это говно. и ты просто вызываешь
b.animate(timeStep); // ясный и понятный читателю код, причем b само оперирует своими членами
А то, что у тебя - это открытая реализация, суть говнокод.
#9 #441761
>>441753
для каждой строки {
максимум это минимальное возможное значение
пока не конец строки {
если текущий элемент больше максимума, то максимум это текущий элемент
}
вывести максимум
}
#10 #441763
>>441753
А в чём проблема?

http://ideone.com/VbWqJ1
sage #11 #441765
>>441753
map maximum
#12 #441767
>>441758
b - 2Д объект с координатами, вектором направления и скоростью. Считай, что этот код - внутренности animate
#13 #441769
>>441767
хорошо бы полный код увидеть. Если это внутренности animate, то все норм (я правда так и не понял как это ты так охуенно учитываешь угол просто выполняя деление)
#14 #441772
>>441769

>>я правда так и не понял как это ты так охуенно учитываешь угол просто выполняя деление


Все тригонометрические функции углов - это же ОТНОШЕНИЯ, лалка.
#15 #441776
>>441772
Хуя ты выебнулся, сечешь фишку-то.
так все-таки, нахуя тебе тангенс и арктангенс в данном конкретном случае, ЛАЛКА
#16 #441777
>>441776

>арктангенс


котангенс конечно
#17 #441778
>>441777
>>441776
Чтобы рассчитать финальные координаты точки (катеты), зная скорость (гипотенузу) и направление азимут? (этот самый тангенс). Собственно сам код не верен, это я только, что понял, но идея такова.
#18 #442131
Это опять я. Куда эти фигурные скобки поставить? Или так норм (мне как-то не очень)?
http://ideone.com/KpiBCB
#19 #442146
vector<int> v = {1,2,3,5,8,13};
for (int x : v) {...}
Есть ли у такой записи преимущества/недостатки по сравнению с обычным for(int i=0; i<v.size(); ++i)?
А по сравнению с итераторами?
#20 #442152
>>442146

>чем foreach лучше for?


Это 2 разных цикла.
#21 #442153
>>442152
Поясни, в чем отличия.
sage #22 #442158
>>442131
Мамаше своей запихай в сральню.
>>442153
Синтаксический сахар над for-ом с итераторами и присвоением переменной x значения итератора. Небольшой оверхед, но с оптимизацией его не будет.
#23 #442161
>>442153
По идее, x = v. Алсо, я бы предпочёл писать

>vector<int> v = {1,2,3,5,8,13};


>for(unsigned int n = v.size(), i=0; i < n; ++i) {}

sage #24 #442162
>>442158
А чтоб оверхеда не было, читай вот: http://en.cppreference.com/w/cpp/language/range-for
#25 #442163
>>442161
Ну сука ёбаная разметка, сожрала i в квадратных скобках. Пошёл в /d бампать тред о возврате [code].
sage #26 #442164
>>442161
Пиздец ты говноед. Обоссал. Из-за таких как нас и не любят.
#27 #442174
>>442158

>Мамаше своей запихай в сральню.


>>442164

>Из-за таких как нас и не любят.



Да, именно из за него.
#28 #442185
>>442161
Хуйня. Итерировать контейнеры лучше через
foreach(auto& element : container)
#29 #442188
>>442164
Обоснуй.
sage #30 #442200
>>442188
Твой код трудно читаем.
Вместо запихивания размера вектора в дополнительную переменную, мог бы просто сравнивать сразу с ним. Конпелятор такое оптимизирует.
#31 #442202
Аноны, как избавиться от чисел, аля 4.2e+037 в выводе?
#33 #442245
>>442204
У меня на выводе из переменной числа такие.
Погуглил, не нашел как переменную засунуть в функцию эту
sage #34 #442258
>>442245
Как ты ее выводишь то, блять? Код давай или иди на хуй. Как же вы заебали.
#35 #442282
Сап, не знал куда обратиться к вам или жестянщикам, думаю вам ближе. родилось желание и купил себе ардуино, хочу разобраться что да как, но я так понял там С-подобная урезка используется, может сможете помочь годными гайдами для нулевиков и желательно на русском. Сам программировал только в базовом курсе делфи, поэтому понятие крайне общее обо всем
sage #36 #442286
>>442282
Катись к хуям со своей парашей. Английский он в школе не учил, а дуину у мамки выпросил и туда же. Чепуш блять. Бери примеры из IDE и мануалы с оффсайта и разбирайся. И английский учи. Либо копай картошку как все неграмотное было и не выебывайся.
#37 #442294
>>442146
foreach - это сахар для итератора. С учетом того, что итератор у вектора тупо указатель на элемент, то разницы не будет абсолютно никакой.
#38 #442297
>>442161
Правильно size_t, а не unsigned int. Плюс нечитаемо.
sage #39 #442309
>>442294
Смотря как x объявлена. Если ссылкой, то да, не будет, а если просто переменной, то она будет копироваться, и ее изменение не отразится на изменении соответствующего элемента контейнера.
#40 #442325
>>442297
Не столь важно, главное ансигнед.
sage #41 #442329
>>442325
Вообще-то важно, иначе теряется смысл в unsigned. Если там будет тип более емкий, чем то, что ты объявил, то точно так же будет оверфлоу, как и в случае с signed.
#42 #442360
>>442329
2^64 - 1 элементов

А ты шутник.
sage #43 #442367
>>442360
Хуйню ты городишь. Достаточно, чтобы количество перевалило за 2^32, это уже превысит вместимость unsigned int.
19 Кб, 484x343
#44 #442377
Учу с++ по книге S.Devis с++ для чайников. Так в книге утверждается что в этой проге http://ideone.com/Nd8hs9 вывод терминала будет :
We're in Student::calcTuition
We're in Student::calcTuition
У меня же получается :
We're in Student::calcTuition
We're in GraduateStudent::calcTuition
Это книга слишком старая? Или есть такие компиляторы понимающие полиморфизм по-своему?
sage #45 #442380
>>442377

>Это книга слишком старая?


Она не только старая, это вообще параша из параш. Либо дохлого страуса читай, либо прату. Прата предпочтительней для новичка, страус слишком сложен будет.
#46 #442382
>>442367
2^32 = 4 1032^3

Массив размером 4 гигабайта
размер типа. Часто такое встречается?
#47 #442383
>>442382
ДА СУКА БЛЯДЬ ЁБАНЫЕ ЗВЁЗДОЧКИ
#48 #442386
>>442380
У страуса книга с гусями есть для ньюфагов.
sage #49 #442389
>>442382
А часто встречается массив размером 2^31 (размер unsigned int без учета всех этих -1)? Так что смысла писать unsigned никакого. А если уж выебываться, то до конца.
#50 #442390
>>442325
size_t используется для индексации std::vector (QVector, например, использует int), плюс size_t равен размеру машинного слова, значит компилятор все равно преобразует переменную к этому размеру.
sage #51 #442391
>>442389

>unsigned int


signed конечно же.
#52 #442393
>>442389 >>442391
Выёбываюсь исключительно чтобы компилятор не визжал, что знаковый тип с беззнаковым сравнивается.
#53 #442419
>>441728
Пишут, что в gcc есть, в msvc тоже. Правда, надо включать какие-то опции. А вообще, с чего бы ей не быть?
#54 #442438
>>441763
Не работает, бро.
Иногда выдает 4 элемента, иногда выдает совсем не те элементы.
#55 #442499
>>442438
он там хуйни какой-то нагородил. Вот решение:
http://ideone.com/qlBE9b
#56 #442602
Паканы, посоветуйте книгу на РУЗЬКОМ С++, для чайника, который вроде как немного смыслит в C.
#57 #442603
>>442602
Шилд, Прат, Лафоре.выбирай на вкус
#58 #442618
Такс такс такс в этом семестре у меня начались лабы по чистому си. А это значит придётся забыть мои сиауты и булианы ну и конечно же байтоёбство придётся вспомнить.. Но это всё пыль. Главное то что преподователь требует то что он называет "френдли юзер интерфейс". Это наверное означает что придется придусматривать всяческую еботню вроде ввода с экспонентой и предусматривать всяческую пыль вроде ввода символов там где требуются ц.числ.
И так как сделать по высшему разряду задание типа "в двумерном массиве записать сумму столбцов втакуюто строку а сумму строк в такойто столбец"
sage #59 #442625
>>442618
Сажи студентодауну, не умеющему по-человечески объяснить условия. Жри свою пыль, сука.
sage #60 #442626
>>442618
Ясно.
#61 #442633
>>442625
>>442626
Ну вы чего в самом деле ? Просто часть перед поездкой на метро написал и часть после. Вот и получилось немногг непонятно.
Но прочитать перед отправкой стоило, да.
sage #62 #442634
>>442633
Читать твои высеры в стиле /b/ ? Напиши нормально и не выебывайся. Условия задания, метод ввода данных, метод вывода данных.
#63 #442639
>>442634
Ты недопонял меня что неудивительно. Перечитал сам ахуел. Мне не нужно чтобы за меня кто то решал мои лабы. Мне нужно чтобы кто то с опытом сказал как сделать их максимально качественно.
Так или иначе вот задание.
" Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 "
Про методы i/o ничего не сказано. Значит будем делать из файла и клавиатуры.
sage #64 #442651
>>442639
Условия вижу, а задание нет. Че сделать то надо?
#65 #442654
>>442651
Копипастить на смарте неочень.

Задан двумерный массив вещественных чисел размерностью (M+1)x(N+1). В строку m+1 записать суммы элементов по столбцам, в столбец n+1 записать суммы элементов по строкам, а в элемент Am+1,n+1 записать сумму всех элементов массива. Результат вывести на экран.
#66 #442662
Как узнать, что итератор куда-то указывает? Указатель можно просто сравнить с NULL или nullptr, а итератор?
#67 #442663
>>442662
сравни с end()
sage #68 #442666
>>442654
А в чем сложность то?
#69 #442667
>>442654
Непонятно что ты при этом хочешь узнать. Нет единственно верного православного стандарта качества для подобных микропроектов. Просто запиши в нужный столбец сумму строк и в нужную строку сумму столбцов, посчитав ее через циклы for. Потом посчитай сумму всех элементов в последнем строке и столбце и запиши ее в нужный элемент. Можешь даже рандомные числа делать. Пользователь задает из консоли размерности массива, ты генерируешь числа, считаешь нужные столбцы и выводишь все это на экран матрицей.
#70 #442687
>>442666
>>442667
Ребят, я не настолько даун. Сам костяк лабы я естественно сделал. Мне бы узнать чтобы сделать ещё.
Вот пример как сделал простейшу лабу один из хороших студентов

"Напечатать все простые числа, не превосходящие заданное число"
По мимо самой лабы. Был сделан ввод и вывод из файла, экрана, ввод виде эксп., каким то образом предусматривался ввод сумашедших чисел выходящих за приделы int, к всему этому программа занимала около 2мб. Если про сборщик я ещё знаю то про буферезированный вывод я услышал впервые при защите этой лабораторной работы.
Вот это я понимаю выполнение обычной лабы на высшем уровне.
Так-то мне интресно узнать что можно ещё можно влепить туда.
#71 #442692
>>442687

>ввод и вывод из файла


Ввод одного числа из файла? Зачем?

>выходящих за приделы int


Но входящих в unsigned long long?

>программа занимала около 2мб


В оперативной памяти или на диске? Если на диске, то это дохуя. А если в оперативке, то это либо пиздеж, либо просто грамотная настройка компилятора

>ввод виде эксп


Подсчет простых чисел предполагает ввод действительного числа? Зачем?
double value; scanf("%lf",&value);
#72 #442711
>>442692

> Ввод одного числа из файла? Зачем?


Ввода не было из файла. Случайно сказанул.

> Но входящих в unsigned long long?


Какоето ограничение присутствовало, да. Но точную цифру не скажу.

> >программа занимала около 2мб


> В оперативной памяти или на диске? Если на диске, то это дохуя. А если в оперативке, то это либо пиздеж, либо просто грамотная настройка компилятора


В оперативке. При миллионе. Это дал его "алгоритм оптимизации. ". Его сущность я не знаю.

> >ввод виде эксп


> Подсчет простых чисел предполагает ввод действительного числа? Зачем?


> double value; scanf("%lf",&value);


Предполагает ввод любого числа. Он даже scanf не использовал. getch и читал посимвольно. Вот и получается в любом виде предусматривается.
#73 #442715
>>442711
В общем все ясно, он просто какой-то упоротый любитель низкого уровня. Все это не нужно. Тебе с головой хватит стандартного scanf, только референс почитай, он может очень хорошо читать любой ввод.
#74 #442728
>>442715
Ясно. Спаичбо.
А про буфферизированный вывод можешь что-нибудь рассказать? В гугле как-то плохо описано.
#75 #442768
>>442728
FILE предоставляет тебе буферизованый ввод-вывод. Гугли референсы. Есть поддержка стандартных stdin и stdout.
#76 #442775
>>442768
Хмм.
Возможно я не так выразился.
Имелось ввиду вывод данных по мере их обработки. 100эл. нашло 100 показало и так до конца.
#77 #442778
>>442775
А тут-то в чем проблема? И зачем это нужно вообще, кроме дешевых понтов?
#78 #442783
>>442775
>>442778
Конкретно в твоем случае с массивами я вижу это так: ты читаешь размерности массивов из потока ввода, создаешь один массив - для суммы столбцов и одну переменную - для суммы строк. Далее ты читаешь по одному элементу из потока ввода, выводишь его в поток вывода и увеличиваешь переменную и соответствующий элемент массива сумм столбцов на этот элемент. Когда строка кончается ты выводишь сумму этой строки в поток вывода и обнуляешь ее. Когда заканчиваются столбцы, ты выводишь массив с суммами столбцов, параллельно считая его сумму и выводишь ее в самом конце. Таким образом у тебя в памяти хранится только 1 массив размером со строку. Вот такая вот оптимизация получается.
#79 #442790
>>442778
Ну типо если введёшь большое число то обработка естественно займёт некоторое время. Пользователю может показаться что программа зависла. А так он видит постоянно еёв работе и всё отлично.
Ну а проблема в реализации естественно
#80 #442820
>>442790
Да не, я к тому, что почему нельзя просто каждое число выводить?
#81 #442892
>>442820
Ну сначала задание выполнить надо а потом уже готовое вывести. И это типо долго
sage #82 #442902
>>442892
А выводить 100 значений до завершения это типа можно? Что, блять, за бред? Ты совсем ебанутый какой-то, не пиши сюда больше.
#83 #442974
>>442902
Вывод по мере выполнения и вывод после полного завершения. Разницу чувствуешь ? какой то ты тупенький. всё разжевывать надо
sage #84 #442993
>>442775
>>442790
>>442974
Ты сам себе противоречишь, ТУПЕНЬКИЙ. А может быть ты не понимаешь основных принципов работы программ. Тогда тебе здесь делать точно нечего.
#85 #443010
>>442993
Ясно.
sage #86 #443022
>>443010
Пошел на хуй, чепуш, он тебе дело говорит. Учись иди, а не на сосачах кукарекай. Макака взрастил поколение дегенератов, блять.
#87 #443026
Возможно ли с помощью функции CreateThread создать поток с 2-мя параметрами.
Моя проблема в том, что один параметр уже занят под mutex, а мне надо передать ещё один, содержащий handle другого потока. (Мне нужно вызвать функцию ResumeThread изнутри потока, что бы пробудить другой.)
#88 #443027
>>443026
Передавай указатель на структуру.
68 Кб, 634x687
#89 #443031
#90 #443043
>>443022
А совместить можно?
#91 #443111
>>443026
>>443027
Тогда новая проблема возникает.
Хотя я туплю, наверное.

Так я получаю указатель:

\tDoubleParam D;
\tstruct D pD;

Указатель запихиваю в функцию CreateThread(...,&pD,...)

С ходу visual studio ошибок не обнаруживает, но при сборке выдаёт (в строке с функцией CreatThread):
cannot convert argument 3 from 'DWORD (__stdcall
)(DoubleParam)' to 'LPTHREAD_START_ROUTINE'

Третий аргумент - это как раз тот самый &pD.
#92 #443112
>>443111

>>\tDoubleParam D;


>>\tstruct D pD;



Обосрался с разметкой

DoubleParam D;

struct D * pD;
#93 #443114
>>443111
Точнее третий параметр - это handle самого потока, а в четвёртый как раз пытаюсь запихнуть указатель.
#94 #443124
>>443111

>cannot convert argument 3 from 'DWORD (__stdcall )(DoubleParam)' to 'LPTHREAD_START_ROUTINE'



Ну так ёба, третий параметр это LPTHREAD_START_ROUTINE lpStartAddress, указатель на ThreadProc. О чём тебе и сообщается в тексте ошибки. В MSDN пройди, будь так любезен.
#95 #443131
>>443124
>>443114

>>Точнее третий параметр - это handle самого потока, а в четвёртый как раз пытаюсь запихнуть указатель.

#96 #443137
>>443131
Да, я прочитал эту хуйню. И я прекрасно понимаю текст ошибки. Давай этот шматок кода в ideone или картинкой.
#97 #443149
>>443137
Всё разобрался. Всё из-за того, что в определении потока(DWORD WINAPI Bee(void D) ) вместо void D всякую хуйню писал.
#98 #443151
>>443149
опять * пропали
sage #99 #443209
>>443043
Не получится. Ты будешь бежать сюда за любым тупейшим вопросом, который за минуту решается при помощи мозга или гугла. Если сильно повезет, то какой-нибудь омежка-долбоеб сделает все за тебя, но вероятнее просто поешь сажи. Знаний так и не прибавится.
#100 #443214
>>443209
Хуйню несёшь. Я же говорил что работу уже сделал. Просто спросил про личные стандарты качества у pr. А ты записал уже в долбаёбы-ниосиляторы. В общем не знаю что с тобой не так и зачем так агрится.
sage #101 #443261
>>443214
Нет никаких "стандартов качества" в этом плане. Как самому не стыдно, так и делай. Находи баланс между красотой кода и ленью.
#102 #443359
>>443261
Но есть вещи о которых я пока просто напросто не знаю. Как про тот же буф. вывод. А вообще пока хочу задрать эту планку как можно выше. Чтобы потом та самая середина давалась мне легко.
1103 Кб, 680x680
#103 #443414
объясните мне разницу между

>"хуй"


и

>'хуй'


в каком случае используются одиночные, а в каком двойные кавычки?
#104 #443417
>>443414
Одиночный только для символа. Строчки в двойных
#105 #443423
>>443414
char* xyz = "хуй";
char x = 'х';
char y = 'у';
char z = 'й';
sage #106 #443424
>>443359
Про буферизованный вывод читай в гугле или книжках. Лучше в гугле. Легче тебе середина не дастся, всегда будет лень. Умение != желание.
#107 #443463
Помогите понять Move Semantics. Есть код и он какого-то хуя вызывает бесконечную рекурсию move_constructor и swap. В гайдах все так и делается вроде, идиома copy-and-swap (например здесь http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom)
#109 #443472
>>443464
Все, разобрался. Нельзя вызывать std::swap внутри move_constructor, ибо он всегда вызывает этот самый конструктор. Код поправил тоже.
#110 #443513
>>443464
Нафига ты swap для класса вызываешь? Надо для полей вызывать.
#111 #443517
Сап, аноны.
Нужно задать квадратную матрицу, чтобы элементы на гл. диагонали были равны 1, ниже 0, выше - сумме индексов.
Как сделать, чтобы индексы считались с 1, а не с 0 без костылей?
http://pastebin.com/fXtTCDb5
sage #112 #443521
>>443513
Да, уже переделал.
#113 #443551
>>443517
Но... Нахуя? Еще один ебанутый погромист растет.
#115 #443581
>>443580
Это важно, если у тебя сырые указатели.
#116 #443589
>>443581
Опс, в глаза продолбился, у него всё правильно ( т.н. unifying assignmemnt)
#117 #443614
>>443551
Лаба в ВУЗике жеж
#118 #443615
>>443614
Какая, блять, лаба в вузике? Зачем тебе индексы смещать?
#119 #443673
>>443517
Допустим тебе нужна матрица 5 на 5.
Создаёшь двумерный массив 6 на 6. На элементы с нулевыми индексами внимание не обращаешь.
#120 #443675
Существует ли функция для винды, для того чтобы "пробудить" одним процессом другой? Нагуглилась лишь функция для linux (wakeup(имя процесса)).
#121 #443679
>>443675
Если он оконный, то отправь ему сообщения, в т.ч. по DDE.
#122 #443704
>>439914
Еще раз спасибо за помощь. Про тебя я не забыл, анон. Препода напряг, думает. Как будет новая инфа - отпишусь.
1618 Кб, 2448x2448
#123 #443724
Тян, пруфов не будет. В шараге курс С++, помогите написать программу, вычисляющую, попадет ли точка в закрашенную область. Желательно с объянением, как в if расписать все условия.
Фигура #2.
:3
#124 #443725
>>443724
Только после эротической фотосессии с супами, няша :3
#125 #443727
>>443725
А можно без пикч, плиз 3:<
Мне срочно надо закрыть эту работу (плачу)
#126 #443730
bump
#127 #443740
>>443724
Попроси одногрупника Сычева.
#128 #443741
>>443740 Программистам с двача я доверяю больше, чем своей быдло-группе.
#129 #443745
>>443724
Распиливаешь фигуру на три прямоугольника. Потом PtInRect для каждого.
уебывай, тупая вниманиеблядь
#130 #443747
>>443745 блять, ты гений. Это то я уже сделала. Проблема в другом. Я не знаю, как в if правильно условие написать, что там х>=чего-то там и у>=чего-то там. Я перепробовала кучу вариантом, он всегда выдает, что точка не попадает в область.
830 Кб, 150x122
#131 #443748
>>443747

>блять, ты гений.


>Это то я уже сделала


>Я не знаю, как в if правильно условие написать


>Я перепробовала кучу вариантом


А ты смешная
#132 #443750
>>443748 и не говори.
#133 #443751
>>443724
//If vertex inside polygon
bool IfVertexInsidePolygon(const Vertex& vertex, const Polygon& polygon) {
int i, j, nvert = polygon.getSize();
bool c = false;

for(i = 0, j = nvert - 1; i < nvert; j = i++) {
if (((polygon.GetY() >= vertex.GetY()) != (polygon[j].GetY() >= vertex.GetY()))
&& (vertex.GetX() <= (polygon[j].GetX() - polygon[j].GetX())
* (vertex.GetY() - polygon.GetY())
/ (polygon[j].GetY() - polygon.GetY())
+ polygon.GetX())) {

c = !c;

}
}

return c;
}
#134 #443755
>>443615
Сумме индексов матрицы, индексы в матрицах начинаются не с 0 ведь, а с 1. А в плюсах массив начинается с 0, а значит и индексы равны 0.
#135 #443761
>>443755
А прибавить 2 не судьба?
#136 #443764
>>443724
Билять, а разве эти фигуры не формулами задаются? Там же не строгое соответствие по клеточкам?
#137 #443765
>>443724
http://www.cyberforum.ru/pascalabc/thread1267239.html тащемта всё более чем просто
#138 #443824
>>441690
Парни, я написал код, собственно, функция, переводящая число в 2-ю систему исчисления, работает коряво. (Задание для ньюфагов, так что массивы и вообще всякие штуки, сложнее 2+2 нельзя юзать)

Верней, все 3-х значные числа она переводит правильно, а, например, число 5000 не переводит - вообще не работает. Четырёхзначные числа вообще переводит неверно или не переводит. Вопрос, почему?
Просчитал всё на бумаге, алгоритм тот же. Пошагово проверил, в первом цикле void print_in_binary(int x) на определенном этапе в значение num записывается число с двойками и четверками (Хотя такого не может быть, лол), может, просто необходимо использовать другие типы переменных? Но, вроде как, int вмещает огромные натуральные числа.
#139 #443825
#140 #443833
Правильно ли я понимаю, что скомпилированные float-переменные в 64-битном исполняемом файле станут даблами?
#142 #443839
>>443833
Нет. Схуяли? float в любом исполняемом файле будет 32 бита.
#143 #443846
>>443838
Так а в чем трабл был? В типе num?
#144 #443855
>>443846
В том, что ты пытаешься записать бинарное представление в одну переменную. Естественно ее переполняет.
#145 #443876
Как в си проверить число на натуральность ?
#147 #443899
>>443890
если больше нуля и остаток от деления не нуль
>>443890

>#include <math.h>


лишнее
#148 #443901
>>443899
соврал, вернее

>остаток от деления без остатка (%) на единицу нуль

#149 #443902
Вот такой вопрос по pthread.
Если сокету установлен флаг O_NONBLOCK, будут ли работать connect функция как cancel point?
#150 #443903
>>443899

>лишнее


Ну-ка кинь мне ide-шку без нее и посмотрим у кого и что лишнее. Сучка.
#151 #443904
>>443902

>будет


fastfix
#152 #443907
>>443903
Не кипятись :3
Я к тому что можно решить без лишних инклудов.
#153 #443908
>>443907
Пруфы где? ide-шку кидай.
#154 #443920
>>443899
Спасибо огромное.
Но почему когда я пытаюсь сделать это функцией
int NaturalCheck(float N)
{
\tfloat integral = 0.0f;
\tfloat fractional = 0.0f;
\tfloat num = N;

\tfractional = modf(num, &integral);

\tif ((num >= 0) && (fractional == 0.0))
\t{
\t\treturn 1
\t}
\telse
\t{
\t\treturn -1;
\t}
\t
}
принимаемое значение мутирует. Например в 7.006e-045#DEN при вводе 5.01
#155 #443929
>>443920
Потому что modf принимает double.
#156 #443933
>>443929
Думал уже об этом.
Всё равно мутирует.
#157 #443934
>>443920
Где чего мутирует?
http://ideone.com/6SHIVB
#158 #443936
>>443934
В более простой форме записать сможешь?
#159 #443940
>>443936
Что? Куда уж проще-то?
#160 #443941
>>443934
Нашёл где ошибка но не могу понять её суть.
Ошибка при передачи значения.
Если написать
printf("%d\n", NaturalCheck(5.01));
все будет отлично
но если задать с клавиатуры
printf("%d\n", NaturalCheck(N));
Мутирует.
Причём если объявить
double N=5.01
Мутирует
Так бывает вообще ?
#162 #443944
>>443833
Проверь.

#include <stdio.h>

int main() {
printf("The 'int' data type is\t\t %d bytes\n", sizeof(int));
printf("The 'unsigned int' data type is\t %d bytes\n", sizeof(unsigned int));
printf("The 'short int' data type is\t %d bytes\n", sizeof(short int));
printf("The 'long int' data type is\t %d bytes\n", sizeof(long int));
printf("The 'long long int' data type is %d bytes\n", sizeof(long long int));
printf("The 'float' data type is\t %d bytes\n", sizeof(float));
printf("The 'char' data type is\t\t %d bytes\n", sizeof(char));
}
325 Кб, 1435x937
sage #163 #443945
Вброшу ка еще раз свое поделие в новый тхреад.

https://ololoepepe.me/board

https://github.com/ololoepepe/ololord

С последнего вброса допилил несколько бесполезных фич (перечислены в новостях). Например, подгрузка постов и постинг нескольких картинок (только в /h/).
#164 #443959
>>443943
Ага.Ага.
Всё понял где.
Спасибо человеческое.
#165 #443997
Есть какая-нибудь книга по стандартной библиотеке в С++11\14?
желательно на английском
#166 #444001
>>443940
Стандартными средствами реализовать проверку типа реально?
41 Кб, 1218x342
sage #167 #444004
>>443945
Признавайтесь, хуесосы, кто из вас такой внимательный читатель?
#168 #444024
>>444004
Ну я тип тралльнул нимношк разбань пабратски а?
на самом деле сходи нахуй. Я беларус мне всё можно. У меня айпи динамический ахзохзох
#169 #444025
>>443959
Вот покороче.
http://ideone.com/kLFG4e
#170 #444033
Тип double присуутствует в си?
#171 #444049
Почему после ввода символа в тип который предусматривает число переменная не доступна для повторного ввода ?
Есть некоторая проверка на правильность ввода из определённого численного диапазона. Если проверка проваливается ввод предлагается заново. Но если при вводе ввести символ scanf уже никак не воспринимается. Происходит зацикливание. Обнуление переменной также не помогает.
#172 #444054
>>444049
Мы тут проконсультировались со штатным телепатом, у тебя ошибка в пятнадцатой строке.
60 Кб, 450x540
#173 #444056
Хелп /pr/. Нужно написать
/ howManyBits - Возвращает наименьшее число битов, необходимое для представления x
в дополнительном коде (two's complement)
Примеры: howManyBits(12) = 5
howManyBits(298) = 10
howManyBits(-5) = 4
howManyBits(0) = 1
howManyBits(-1) = 1
howManyBits(0x80000000) = 32
Разрешённые операции: ! ~ & ^ | + << >>
Максимальное количество операций: 90
*/
Так вот. Никаких if и while. Только битоебля, только хардкор. Есть идея свести задачу к более простой. Можно оставить только один старший бит, а остальные занулить. Как можно узнать на каком месте стоит единственный ненулевой бит без полного перебора.
Так же как ее решать для отрицательных х? Вроде бы howManyBits(x)= howManyBits(~x+2) верно для x<0.
Картинка для привлечения внимания.
#174 #444057
>>444056
бля, разметку прострал
sage #175 #444100
>>444024
Не пойду. Разбанится само через сутки, заодно и проверю, разбанится ли.
sage #177 #444128
#178 #444129
>>444128
сути не меняет
#180 #444141
>>444136
Ну и введи символ "с" например вместо числа.
Будет всё тоже зацикливание без возможности повторного ввода.
#182 #444155
>>444143
Ну при неправильном вводе сам scanf() вернёт 0 но я ведь не об этом.
Мне интересно почему при вводе символа в переменную типа double она уже не доступна для повторного ввода.
#183 #444186
>>444155
Да кто тебе такое сказал? Просто символ остается в потоке. Его надо нормально прочитать оттуда.
#184 #444216
>>444186
Да и не нужено мне символ читать.
Я добиваюсь того чтобы при неправильном вводе выбило ошибку и далее следовало предложение повтора ввода.
Например ожидается ввод чисел с 1 до 3. Если ты введёшь 5 проверка выбьет ошибку и предложит повторить ввод. Но если ты внезапно ввёл символ scanf() вернёт 0 как ошибку но повторный ввод необходимого значения уже невозможен. Как добится этого самого повторного ввода если scanf пропускается ?
#185 #444297
>>444216
stackoverflow подсказывает что вот так
http://ideone.com/EwRgQ4
Ты бы гуглить научился штоле. Надоел уже с банальными вопросами.
#186 #444312
>>444297
Ну на самом деле я додумался предварительно fflush(stdin) сделать, но так всё же лучше. Спасибо.
416 Кб, 1600x1195
#187 #444371
Как проверить число на натуральность в одну строчку кода? (на любом языке)
Привести пример используя компилируемый и интерпретируемый языки.
#188 #444373
>>444371
Строчка кода - понятие растяжимое.
#189 #444374
>>444371
Ты нас собеседовать что-ли пришел?
#190 #444375
>>444373
с минимумом операторов и вызовов функций
#191 #444379
>>444374
Нет, скорее вы меня. лол.
#192 #444387
>>444371
Тебе уже говорили.
Если число больше либо равно нулю и дробная часть равна нулю, то число натуральное.
Воспринимай эту одну строчку как псевдокод на любом языке.
#193 #444400
>>444387
А как проверить в одну строчку на любом языке является ли произвольное число простым?
#194 #444406
>>444400
Да ты совсем ебнутый, я смотрю. Пошел нахуй с борды.
#195 #444409
>>444406
Че, сложно подсказать новичку? Или стыдно, что сам не знаешь.
#196 #444413
>>444409
!(any(simple_less_than(x), divides(x)))
#197 #444416
>>444413
Это на каком языке?
#198 #444424
>>444416
На любом
#199 #444426
>>444413
На C++ не компилируется. Дело в том, что я с недавнего времени работаю исключительно в Linux. Создаю файл prostoe.txt, копирую туда твою строчку !(any(simple_less_than(x), divides(x))), сохраняю, в окне DOS пишу gcc prostoe.txt и мне дос какие-то ошибки выдает. Не компилируется. gcc - это правильно 100%, мне так знающие люди сказали использовать. Кодировка может неправильная.
#200 #444429
>>444426
не ведитесь на мамкиного траллингатора
#201 #444431
>>444429
Меня предупреждали, что в сообществе С++ мне не будут помогать. Что вы все злые и угрюмые.
#202 #444438
>>444426
Просто в твоем языке либо нету функций any, simple_less_than, и divides, либо они называются по-другому
Придется тебе написать их самому.
#203 #444470
>>444438
Значит теперь мне надо написать не только расчет простого числа, но и эти функции в одну строчку на любом языке? Какой же сложный этот С++. А в этих функциях будут тоже функции? Подскажите сразу в общем случае - как мне написать любую функцию в одну строчку на любом языке, и я уже пойду отсюда.
#204 #444473
>>444470

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


Обычно используют точку с запятой. И тогда можно писать все операторы в одну строчку.
#205 #444475
>>444473
!(any(simple_less_than(x), divides(x))) ; any simple_less_than divides

Все равно в досе одни ошибки.
#206 #444476
Да вы ебанулись ему отвечать.
#207 #444477
>>444475
Покажи какие.
#208 #444479
>>444477
Вот, пожалуйста.

c:\>gcc prostoe.txt
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:prostoe.txt
: file format not recognized; treating as linker script
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:prostoe.txt
:1: syntax error
collect2.exe: error: ld returned 1 exit status

c:\>

Только у меня в линуксе.
#209 #444480
>>444479
Обнови драва на видяху.
#210 #444481
>>444479
Я хочу у себя попробовать в линуксе, но немогу найти диск c: как ты его открыл, демон?
#211 #444482
>>444481
Поставь директх 12
#212 #444483
>>444480
Вы меня тут за идиота держите? Я opengl только через неделю начну изучать. Я знаю, что сейчас мне не нужны дрова на видюху. Я просто английского не знаю, а так бы уже давно скомпилировал.
#213 #444484
>>444481
Ты линукс то поставь в винду сначала. Для windows мне сказали линукс это с сайта mingw.
#214 #444486
>>444483
Там просто библиотеки из дров видЯхи лижат.
Попробуй ещё вишмастер поставить тож врое ничо taq
#215 #444487
>>444483
Давай скриншот, ничего не понятно, что у тебя за проблема.
#216 #444489
>>444484
Я поставил линукс отсюдава https://www.gentoo.org/ , но не в винду, а в отдельный винчестер, как мне теперь быть?
43 Кб, 1732x882
#217 #444492
>>444487
Вот. Сделал все как сказали.
#218 #444496
>>444492
Наверное это потому что у тебя линукс не настроенный, у тебя в нем буквы белые, а в правильном должны быть зеленые.
Проверь настройки линукса.
#219 #444500
>>444496
Так проблема в том, что в языке любых функций нет, или в линуксе? Одни говорят, что программисты только в линуксе работают, другие теперь говорят, что он не настроенный. Я вот чувствовал, что линукс не настроенный на самом деле. Функции, получается, надо убрать из файла?
#220 #444501
>>444500
сначала нужно настроить линукс
#221 #444503
>>444501
Какой же сложный этот С++. Как мне настроить линукс? Может подскажешь как мне вообще без линукса это сделать. Только обязательно в одну строчку. Язык - любой.
#222 #444504
>>444503

> Как мне настроить линукс?


Вот хорошая статьи http://habrahabr.ru/hub/linux/

> вообще без линукса это сделать. Только обязательно в одну строчку. Язык - любой.


Можно поставить Wolfram Mathematica там есть http://reference.wolfram.com/language/ref/PrimeQ.html
#223 #444509
>>444503

> Какой же сложный этот С++.


учи джаву она проще и платят больше
#224 #444510
>>444504
Но у меня же linux под windows (если быть совсем точным, то я с ним в досе работаю, как видно на скриншоте), разве можно его настраивать как обычный?

И я уже устал ставить всякое. Ты уверен, что в Wolfram Mathematica я смогу написать любую функцию в одну строчку на С++? Там тоже gcc? Как компилировать? Если ты уверен, что там точно так же, как на любом языке можно сделать, то я конечно же поставлю.
#225 #444511
>>444510

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


Инфа 100%, слово ананаса, брат жив.
#226 #444514
>>444509
Сначала С++ в совершенстве хочу освоить. Потом все остальные языки (но на следующей неделе opengl начну, поэтому возможно python пропущу). Я же прошу подсказать любую функцию, чтобы на любом языке можно было сделать.
110 Кб, 669x338
#227 #444515
Аноны, нужен совет. В качестве курсача, нужно написать проект на С++. Особенность - это должен быть консольный проект, но достаточно сложный. Как вариант - консольная игра. Естественно все крутится вокруг одной и той же хуйни типа - морской бой, крестики нолики ну и прочий подобный, однотипный шлак. А я хочу сделать какой нибудь оригинальный проект, но что то нихуя даже на ум не приходит.

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

Алсо пикстронгли рилейтед
#228 #444516
>>444492
Проиграл.

>>444515
Напиши консольный шутан. Без псевод 3д. Ну что-то типа контры https://ru.wikipedia.org/wiki/Contra.
#229 #444517
>>444516
Мне что то кажется, что для этого маловато места будет в консоли, не? Да и настолько пиздатое я вряд ли смогу. Но возможно действительно сделать что то подобное. Еще предложения?
#230 #444520
>>444517
Ну так-то консольку ж ресайзить можно. Пущай будет требованием сделать консоль определенного размера, чтобы было играбельно. Да и как контра в плане концепта. Пущай мобы и игрок будут размером в один символ. Собственно на скриншоте у тебя вполне играбельный пример даже с дефолтной консолью.

Вообще еще гоночки можно сделать. Или арканоида.
#231 #444524
>>444520
О, еще бомбермена вспомнил.
#232 #444525
>>444520
я вот только не совсем понимаю как карта прорисовывается

>>444524
о, а это действительно заебца идея
#233 #444527
>>444525
Ну смотри, тут два способа.
Первый - ты используешь системный терминал. В таком случае очищаешь консоль полностью и рисуешь заново. В таком случае у тебя вывод будет "моргать", т.к дабл буфера тут естественно нет.
Второй - ты создаешь обычное окно и рендеришь в нем текст сам с закосом типа консоль. Так обычно и делают, собственно. В таком случае ты уже будешь работать с обычными фреймами. Тут у тебя и дабл буфер есть, и рисовать можно более пеструю хуйню. В этом случае можно либо просто на окне рисовать (GDI+, в Qt QPainter и еще всякая хуйня, загуглишь), или непосредственно с GPU будешь работать (OGL, DX). Для твоей задачи обычного рисования на окне с головой хватит.
#234 #444528
>>444527
Понял,спасибо за ответы.
#235 #444708
>>444312
В продолжение темы:
Как обнаружить посторонние элементы при вводе в тип double например ?
Поясню: при обычном вводе символов asdf scanf() возвращает 0. Это понятно. Но при вводе сначало числа а потом символов никаких некорректных вводов не обнаруживается 1sdf. Как обнаружить посторонние символы при вводе со scanf() ?
#236 #444724
>>444515
Посмотри еще ncurses - библиотека для работы с консолью. В консоли можно интресные вещи делать, можешь посмотреть sanctuaryRPG. Можешь попробывать текстовую адвенчуру сделать (гугли inteactive fiction) - там лексический парсер, подобная хуйня. Можно написать движок для более простых текстовых квестов, типа как в космических рейнджерах - это достаточно просто, при этом нужны определенные архитектурные решения (формат файла с игрой, возможность прикрутить ASCII графон и т.п.) - на курсовую может потянуть, помоему.
#237 #444757
Является ли такой код валидным?

http://ideone.com/l2GkBc

Меня смущает reinterpret_cast и полиморфные объекты. Всегда ли они смогут опознать какую функцию необходимо вызывать, если reinterpret_cast делать для объекта-обертки над полиморфными объектами?
#238 #444784
>>444757
опасно манипулируешь объектами. Но в целом, код валидный. всякие std/boost::function так и делают.

В чем задача? Здесь я вижу извернутую реализацию вызова по интерфейсу.
#239 #444801
>>444784
Да есть либа одна на Си. Пилю высокоуровневую обертку, нужны коллбэки (представлены интерфейсами в обертке). В библиотеке они принимают на вход void* и возвращают его юзеру при вызове коллбэка. В общем-то все так и есть, как в приведенном коде.
#240 #444808
>>444801
P.S: saveAInst и issueInst делюаются в сишной либе, я их для примера так реализовал. Конечно они не используют new, delete и глобальную переменную.
#241 #444823
>>444808
std/boost::function не подойдут?
#242 #444828
>>444823
Если честно: не знаю. Мне почему-то кажется, что дать пользователю интерфейс будет лучше. Надо будет подумать.
#243 #444862
>>444708

>Как обнаружить посторонние символы при вводе со scanf() ?


Никак, scanf - это убогое некроговно из 70-х, используй strtod.
#244 #445006
В крестах допускается одинаково обзывать локальные переменные?
#245 #445022
>>445006
да, если они во вложенных скоупах. в одном нет, разумеется.
470 Кб, 1280x1024
двачую вопрос, реестр в C++ #246 #445056
Как в C++ добавить тукущую прогу в автозагрузку?
12 Кб, 653x200
двачую вопрос, C++ Source Engine #247 #445059
Как для Source Engine запилить серверный плагин? Если не лень скиньте готовый проект со всеми патчами
#248 #445060
Начал изучать C по книге Брайан Керниган, Деннис Ритчи. И в самом начале уже столкнулся с херней. Есть функции getchar и putchar. Предлагается такой пример
[code]#include <stdio.h>
/ копирование ввода на вывод; 1-я версия /
main()
{
int с;
с = getchar();
while (с != EOF) {
putchar (c);
с = getchar();
}
}
[/code]
Выполняю его и ничего не происходит, думаю ладно может так и надо, так как в потоке вроде как и нечему копировать-выводить, однако дальше предлагают два упражнения:

Упражнение 1.6. Убедитесь в том, что выражение getchar() != EOF получает значение 0 или 1 .
Упражнение 1.7. Напишите программу, печатающую значение EOF.
А как я напишу, если даже не узнаю, работает код или нет?
#249 #445064
>>445060
K&R C устарел лет 20 назад.
Читай что-нибудь из Beginner секции
http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list
#250 #445065
>>445060

>Выполняю его и ничего не происходит


Что ты имеешь ввиду?
sage #251 #445069
>>445056
Нужно обновить драйвер видеокарты.
>>445059
А тебе надо переустановить DirectX процессора.
>>445060
Переустанови Windows, заработает.
#252 #445412
>>445069
Спасибо, помогло.
#253 #445413

>Кроме того, вспомните, что многие шаблоны используют другие шаблоны, и таким образом, компилятор должен выполнять каскадную перекомпиляцию таких шаблонов (и их единиц трансляции), и этот рекурсивный процесс продолжается до тех пор, попока не будут выполнены все каскадные инстанцирования (реакция нормального пропрограммиста в такой ситуации: "Какое счастье, что я не занимаюсь реализацией подподдержки экспорта в компиляторе!").



Мейерс конечно повеселей но Шаттер тоже норм.
#254 #445501
>>445413

>Там, где не можешь, — не должен и хотеть...

#255 #445548
while (dst++ = src++) ;
Поясните, в чем прикол? И как вообще работает исполненение программы в условии?
#256 #445550
>>445548
1. взяли dst и src
2. присвоили dst = src
3. сравнили dst с null
4. заинкрементили значения

там точно присваивание? может ==?
#257 #445552
Сап, уменя в функции есть 4 переменных, которые нужно вывести в программу. Как это сделать?
#258 #445556
>>445550
Точно. Написано, что для копирование строк.
#259 #445559
>>445552
Структура/объект
#260 #445562
>>445548
Оператор '=' возвращает rvalue, тоесть выражение 'a = b' равно b. В цикле инкрементируются указатели, значения из src сохраняются в dst, пока не встретися 0 и цикл не прервется. По соглашению 0 находится в конце массивов char представляющих строки.
#261 #445563
>>445559
Можешь на примере показать?
Пытался делать
return(a1,a2,a3,a4)
Но в программе она ссать хотела какую я переменную хочу вывести
#263 #445577
>>445564
А без использования struct возможно это сделать?
#264 #445583
>>445577
Можно массив возвратить, или через параметры (указатели передавать).
#265 #445593
>>442438
Да, ошибся от усталости.

http://ideone.com/Bwf6rF

Вот правильное решение. Что-то я не сразу твой ответ заметил, бывает.
#266 #445717
Есть ли хоть какой-нибудь способ вернуться на предыдущую строку в консоли ?
#267 #445797
>>445577
Используйте pair или кортежи например, или вообще в vecror хуярь
#268 #445806
Есть окошко, которое открывается по нажатии на кнопку, и перед открытием окна мне нужно сконкатенировать строки из массива структур, примерно так:

stringstream htmls;
htmls << L"<html><body>";

if(msgCount == 0)
{
htmls << L"<p>Сообщений нет.</p>";
}
else
{
for(int i = 0; i < msgCount; i++)
{
htmls << L"<div><h1>" << msgs.title << L"</h1><p>" << msgs.body << L"</p></div>";
}
}

htmls << L"</body></html>";
htmlWindow->SetPage(htmls.str());
Но блин, при увеличении массива на плюс одну структурку в нем, прога вылетает в сегфолт с сообщением:
Program received signal SIGSEGV, Segmentation fault.
In std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&) () ()
Уже третий день мозг ебу, что за хрень?
#269 #445807
>>445806
Тоесть если в массиве 5 структур, но окошко ни разу не открывалось - все отрабатывает нормально и окошко закрывается. Добавляю структуру в массив, открываю окно = SEGFAULT. Начальное число структур в массиве не играет абсолютно никакой роли, вылетает только при попытке отработать увеличенный массив относительно того, который обрабатывался в первый раз.
Сорян, не могу в объяснения
#270 #445819
>>445807
Код на pastebin или ideone.
#271 #445820
>>445807
Ставь брекпоинты и ищи конкретную строку (вызов функции) на которой падает. Если сегфолт то ты с памятью проебался, индекс не тот или нулевой указатель разименовываешь. Например, когда ты добавляешь структуру она на самом деле не добавляется (или добавляется на на то место куда надо) и когда ты читаешь последний елемент - там ноль. Это надо тестить, проверь все индексы, все указатели, попытайся уточнить строку или блок кода на котором сегфолт.
#272 #445826
>>445820
Спасибо! Нашел обишку.

Подскажите, как добавлять в уже существующий массив в динамической памяти элементы? Например

int Array1 = [5, 6, 9]
int
Array2 = [2, 3]
// Array1 = [5, 6, 9, 2, 3]
#273 #445827
>>445826

> Спасибо! Нашел ошибку.


> int(звездочка) Array...


самофикс
#274 #445830
>>445826
используй std::vector и не трахай себе мозг
#275 #445831
>>445830
Это почти всю прогу надо переписывать =(

> там не int(звездочка), a Message(звездочка). sruct Message = {}

#276 #445837
>>445831
Драйвера на видюху переустановил и не надо будет.
#277 #445841
>>445831
вот и перепиши. пишешь на плюсах - используй возможности плюсов, а не си-стайл.
Если только у тебя там не перфоманс-критикал код. хотя и в этом случае вектор можно использовать
#278 #445913
>>445826
Да бляха, вы издеваетесь? Какого хуя вы пытаетесь что-то сделать, даже не попытавшись почитать книгу или еще чего-нить? Вы думаете, что вас тут языку учить будут? Надеюсь тебе никто не покажет, как это сделать.
#279 #445918
>>445826
Дрова на видяху обновил?
#281 #446061
>>446060
Кратко отражает суть треда.
#282 #446179
Вопрос к чулочнику, который написал борду на с++.
Можешь описать в двух словах, как оно работает? За что отвечает цпп, за что другие вещи (и какие тоже поясни)?
#284 #446211
>>446204
а ну-ка в пизду эту кодлу петухов тем более что всё равно не нашёл интересующей инфы там
На пальцах поясни, как всё работает. Я в крестах из сетевого только с сокетами вручную работал, не из приятных экспириенс. Я так понял, что всё сетевое взаимодействие берёт на себя CppCMS, т.е. он биндит твой сокет на прослушку сокетов клиентов и всё прочее в этом стиле. Ну и положим, что мой браузер присылает тебе запрос. Хули дальше происходит?
Какой-то javascript, охуеть вообще. Он где работает? На стороне клиента или у тебя? Нихуя не понятно короче.
#285 #446217
>>446211
Да ты пиздец нубас
Проследуй в пхп тренд
Напиши имиджборду
Тогда будешь понимать
И приходи
Вообще, было бы неплохо, чтобы кто-то написал текст о веб-программировании, как что происходит
Но всем в падлу
Джаваскрипт почти всегда исполняется на клиенте
Сервер-сайд язык (в данном случае цпп) генерит странички. Вставляет в шаблоны данные из базы данных, например.
Потом веб-сервер их отдает.
А джаваскрипт все это свистит и пердит и шлёт ajax запросы к серверу для динамической подгрузки условных данных из условной базы данных.
sage #286 #446300
>>446217
Этот все правильно написал, как-то так оно и есть, если коротко.
>>446211
А ты иди домашку делать, не дорос еще, судя по долбоебским вопросам.
#287 #446317
>>446300
ну и иди нахуй тогда, пидр
смотри не захлебнись от своей илитарности
sage #288 #446328
>>446317
При чем тут илитарность, маня? Не вижу просто смысла помогать тупому школьнику, который еще даже гуглить не научился.
#289 #446395
Читаю Лафоре про конструкторы/деструкторы.
http://ideone.com/ncGvZP

Столкнулся во с такой строчкой:
circle(int x, int y, int r, color fc, fstyle fs):
xCo(x), yCo(y), radius(r), fillcolor(fc), fillstyle(fs)
{ }

не могу никак понять, нахуя нужны все переменные в скобках после circle, и нахуя их присваивать инициализируемым полям.
sage #290 #446404
>>446395
В учебнике это объяснено? Если да, то ты мудак, раз не понял. Если нет, то мудак автор, и такой учебник нужно скорее выкинуть/удалить.
#291 #446407
>>446395
ой я дурачок. вопрос решён.
>>446404
соси хуй, злобный тупорылый уёбок. этот учебник у вас первым в рекомендуемом списке стоит.
нахуя ты вообще в лужу пёрнул, коли по делу нечего было сказать?
#292 #446462
>>446407
не обращай внимания на чулочника, ему постоянно в заднице что-то мешает
sage #293 #446490
>>446407
Так я по делу и сказал. Алсо, у кого это "у вас"? Я к этому отношения не имею.
>>446462
Лел, мелкобуквенное хеллоуворлдное чмо вылезло. Петуха забыли спросить.jpg
#294 #446516
>>446490
на клыка тебе спустил, маня. Доебался до мелких букв, охуеть. Попустись, щенок.
sage #295 #446518
>>446516
Ясно-понятно. Ну хоть с остальным ты согласен, и то уже прогресс.
32 Кб, 400x400
#296 #446523
>>446518
по делу сказать-то хочешь чего?
2251 Кб, 2736x3648
sage #297 #446534
>>446523
Все вышесказанное было по делу, чмоша.
#298 #446536
>>446534
Съеби уже, скоморох, тошно от тебя. За все треды ничего умного не сказал.
sage #299 #446542
>>446536
Вообще-то я часто тут отвечаю тем, кто задает нормальные вопросы, а не "пасаны у миня лаба как сделоть чтоб пичатала матрицу через сраку маиво препада, он миня так папрасил".
Нормальный вопрос - нормальный ответ. Нехуй превращать тред в сборище умственно отсталых.
sage #300 #446544
>>446542
Давайте еще начнем спрашивать "как присвоить значение переменной", или "зачем нужна точка с запятой". Тот петушило выше задал вопрос как раз из той серии.
#301 #446566
>>441690
Какой ебан делал пикчу? Что за неграмотное быдло?

>your mother is so fat that recursive calculation of her mass causing to stack overflow

#302 #446569
>>446566
Все норм с грамматикой на пикче. Серьезно.
#303 #446580
>>446569
Обоснуй.

Учу ингришь
#304 #446584
>>446566
В школкку, анхличанин мамкин
sage #305 #446585
>>446580
В ингрише допустимо пропускать that, примеры ищи в литературе (не знаю как в деловом языке, но в художественной литературе такое допустимо и встречается).
окончил языковую гимназию, еще не все забыл-кун
sage #306 #446588
Хотя нет, щас дочитал конец

>...of her mass causing to...


И понял что это жир толще этой самой мамаши. Так что на хуй послан.
198 Кб, 563x542
#307 #446597
>>446584 Но ведь я только учусь. Соси хуй, быдло.
>>446585
>>446588 Какие-то невнятные вскукареки. Что-то не вижу ссылочек на сайтики с грамматикой.

Итаааак, давайте разберем по частям..:

>your mother is so fat,


твоя мать такая жирная зпт.

>the recursive computing her mass causes a stack overflow


рекурсивная функция вычисления её массы случай на переполнение стека

Всё правильно?
Что же корпус бритаешьего язычка?:
to causing: http://bnc.bl.uk/saraWeb.php?qy=to+causing&mysubmit=Go
causing:http://bnc.bl.uk/saraWeb.php?qy=causing&mysubmit=Go

Что-то мне намекает, что щкольник клипавший эту картиночку просто долбоеб. Вропчем, как и все сипипи петушки итт.
#308 #446606
>>446597

>её массы случай на переполнение стека


Ебал ее рука. To cause - это глагол. Переводится как "вызывает", "является причиной".
sage #309 #446619
>>446597
Ебать ты конченый. Книжки читай, дибил.
#310 #446623
школьник затралил цппшников
азаза
#311 #446625
Господа, возвращать результат функции как исключение - это нормально?
134 Кб, 1600x1200
#312 #446628
>>446606
Верно. Что-то я обосрался с causes/causing.
Но как быть с толстой вычислительной функции её массы?

>>446619 Иди подотрись, чухан.
#313 #446629
>>446628

> толстой вычислительной функции её массы?


запятая, ты видишь ее?
#314 #446630
>>446629

>твоя мать такая толстая, вычислительная функция её массы вызывает переполнение стека

#315 #446631
>>446628

>Но как быть с толстой вычислительной функции её массы?


Откуда я знаю, какое говно тебе в голову в твоей гимназии залили. Для меня предложение выглядит нормальным, для нейтивов - тоже:
http://www.google.ru&q=your+mother+is+so+fat+stack+overflow
#316 #446632
>>446597
Ебнутые жавадауны просто пиздец
Понарожали хуйни
#317 #446634
>>446630
уже лучше, только computing - это причастие настоящего времени, "вычисляющая"
259 Кб, 563x542
#318 #446636
>>446634 Но ведь в этом предложении это герундий настоящего времени.
>>446631 Мне тоже, но меня смущает это неграмотное отсутствие that
>>446632 Что еще спизданёшь?
#319 #446638
>>446636

> герундий настоящего времени.


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

> неграмотное отсутствие that


ну ты пиздец https://www.google.by/search?q=can+i+omit+that&ie=utf-8&oe=utf-8&gws_rd=cr&ei=Tyr6VJ_BGMmP7AbVr4GAAQ
60 Кб, 500x500
#320 #446652
>>446638
>>446638

>герундий не выступает в роли определения


Но ведь function здесь не глагол, выступающий в роли определения, что бы computing его характеризовал как причастие.

>гугл


Да я загуглил уже. Странно, я могу читать и понимать, но выражать мысли и удерживать часть прочитанного в памяти - трудновато. Неужели сибляди во всем виноваты?
#321 #446654
>>446652

>Но ведь function выступающий в роли определения (по твоему мнению) - здесь не глагол, что бы computing был как характеристика-причастие к этому глаголу.


Пофиксил, для понятности.
#322 #446661
>>446654

> >Но ведь function выступающий в роли определения (по твоему мнению) - здесь не глагол, что бы computing был как характеристика-причастие к этому глаголу.


ты долбоеб
function - объект, существительное, подлежащее
причастие - форма глагола похожая на прилагательное, признак объекта (НЕ ПРИЗНАК ДЕЙСТВИЯ, ЭТО ТЫ БЛЯДЬ С НАРЕЧИЕМ ПОПУТАЛ)
sage #323 #446673
Вы охуели этого дегенерата кормить?
#324 #446679
КАК ЖЕ МЕНЯ ЗАЕБАЛИ ЧЕТЫРЕЖДЫБЛЯСДКИЕ КРЕСТЫ
АЖ СИЛ НЕТ, СУКА
ИНКЛЮД ИНКЛЮД КЛАДБИЩЕ ПИДОР
ПРАГМА ОНСЕ БЛЯДЬ, НАХУЯ ОНА ВООБЩЕ НУЖНА КОГДА МОЖНО ЗАПИЛИТЬ ИМПОРТЫ, НЕТ БЛЯДЬ ХОЧУ ЖРАТЬ ИНКЛЮДЫ, ГОВНОЕДЫ СУКА
ЛИНК ЕРРОР СИМВОЛ ПИЗДА_УЗБЕКА АЛРЕДИ ДЕФАЙНЕД ИН .ОБЖ
НАХУЯ ДЕФОЛТНО ВСЁ ПРИВАТНО ДЕЛАТЬ, ЧТО ПОНАДОБИТСЯ ТО САМ ЗАПРИВАЧУ КОГДА НУЖНО БУДЕТ. НЕТ БЛЯДЬ УКАЗЫВАЙТЕ ПАБЛИК НАСЛЕДОВАНИЕ УЁБКИ
И ДЕЛАЕШЬ КОНСТРУКТОР ПРОТЕКТЕД И ПИШЕШЬ ПОТОМ КОСТЫЛИ ЧТОБЫ СОЗДАТЬ ШЕЙДЕР ПОИНТЕР С ОБЪЕКТОМ. НЬЮ И ПОТОМ ШАРЕД_ФРОМ_ЗИС() ПИЗДЕЦ БЛЯДЬ
ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005 ЛИНК2005

пиздануться блядь

более неудобного и костыльного языка в жизни не видел

ебал мамку страуструпа, прости господи
#325 #446690
>>446679
Нет, не так.
ОШИБКА В <<ЖОПА_ХУЙ::ГОВНО_ПИЗДА><ПИДОР-КЛАДБИЩЕ([СУКА_ЯЕБУ::АНАЛ_ЖИРАФА](<T><ЕБАНИСЬ_В КОНЕЦ>)*)(ЕБАНЫЙНАХУЙ_ОСЁЛ)<ЖРИ_КАЛ(РАС_РАС_РАС)>

ПИДОРЫ БЛЯДЬ НАЛЕПИЛИ В 15000 СТРОК ХУЙНИ КОТОРАЯ 2+2 СКЛАДЫВАЕТ, НАКОПИРОВАЛИ В ДЕСЯТОК ФАЙЛОВ И ЗАВЯЗАЛИ ДРУГ НА ДРУГА. ТЕПЕРЬ ПОПРАВИТЬ НЕБОЛЬШУЮ ХУЙНЮ - ЭТО ПЕРЕПИСАТЬ ПОЛСИСТЕМЫ
sage #326 #446692
>>446679
>>446690
Ну так и уебывай из крестов, неосилятор.
#327 #446696
>>446625
Нет. Исключения - это исключения, неожиданная ситуация.
Хотя бывает, что исключения используют для подъёма из рекурсии. В парсерах, например. Но это очень плохо.
sage #328 #446702
>>446696
Поддвачну этого, дело говорит. Еще дополню, что исключения лучше кидать только тогда, когда ситуация на самом деле исключительная и от разработчика не зависящая (скажем, файловая система наебнулась). А если ошибка вызвана неверными параметрами или тем что сервер недоступен - тут лучше флаг ошибки (возвращаем кортеж с элементом-флагом или передаем out-parameter в виде ссылки/указателя).
#329 #446710
>>446692
Ничтожество, ты лишь тупая скотина, дрочащая на хуй пойми что.
Когда этот недоязык окончательно канет в лету, ты похватишь нехилый баттхерт, выблядок сучий. Приятного дня.
sage #330 #446713
>>446710
Перейду на другой без лишнего шума. Отчего тебе так печет? Тебя заставляет кто-то на крестах писать? Да? Меняй работу. Нет? Ну так не пиши на крестах.
#331 #446738
>>446713

>Тебя заставляет кто-то на крестах писать?


Ему лабы сдавать надо
sage #332 #446742
>>446738
Чет парашная у него видать шарага, раз заставляют на каком-то конкретном языке писать. Я в свое время сразу преподу сказал, чтоб он со своими дельфями сам в очко долбился, а я буду писать на том, на чем хочу. При этом, заценив результат, он меня потом всегда другим в пример ставил. Так что все от самого себя зависит.
#333 #446754
Утро доброе, анансы.
Появилась мелкая задачка, а именно напилить простейший односторонний ftp СИНХРОНИЗАТОР. На плюсах, конечно же.
Почитав rfc я понял, что тут обычные блокируемые сокеты подойдут на ура. Но и сразу же слегка обосрался.
Сейчас планирую сделать примерно так:
- Собираем рекурсивно файлы из указанно папки, что иметь вид: /ftp/folder1/file1, /ftp/folder1/subfolder/file2, ...
И в аналогичном виде собираем на локальной машине. Сравниваем по размеру файла и дате изменения.

Суть обосрамся:
Внезапно, фтп иногда отсылает мне "226 Закрытие канала, обмен завершен успешно" ещё до того, как файл был скачал. При этом никакой канал он не закрывает. Т.е. лог может быть подобного вида:
RETR filename
150 Статус файла правилен, подготавливается открытие канала
//Вот тут никаких сообщений, судя по рфц, быть не должно, но внезапно фтп досылает
226 Закрытие канала, обмен завершен успешно
//И тут я, как долбоёб без проблем скачиваю файл.

Хочу попробовать так сделать:
Все recv записываем в stringstream, и метод на уровне get_next_response(); И пользоваться std::getline. Ибо стандарт вещает, что фтп все ответы заканчивает на \r\n
Вопрос такой, можно ли совладать со stringstream, чтобы он удалял строку после getline? Или есть другие варианты?

Что посоветуете, господа?
sage #334 #446758
>>446754
Посоветую как минимум не писать на чистых крестах, а воспользоваться библиотеками/фреймворками. Еще лучше будет, если ты таки покажешь код (с указанием того места, где у тебя работает не так как надо).
81 Кб, 604x604
#335 #446802
Продолжаю изучать Лафоре. Разбираю пример "Угадай карту". Есть, собственно, класс карты, два поля с рубашкой и достоинством и два метода с водом и выводом карты, но вопрос не в этом.

class card
{
int number;
suit suit;
public:
card(){}
void set(int n,suit s){suit=s; number=n;}
void display();
};
void card::display()
{
if(number>=2 && number<=10) cout<<number;
else
{
switch (number)
{
case jack: cout<<'J'; break;
case queen: cout<<'Q'; break;
case king: cout<<'K'; break;
case ace: cout<<'A'; break;
}
}

Для чего вообще вот эта строчка существует?

>void card::display()


Просто чтобы показать, что описывать функцию можно и вне тела класса, посто объявив её предварительно?
Если да, до для чего стоит двойное двоеточие, и что оно в данном случае обозначает? Вроде оно указывает на метод класса, но ведь и без него можно записать функцию.
81 Кб, 604x604
#335 #446802
Продолжаю изучать Лафоре. Разбираю пример "Угадай карту". Есть, собственно, класс карты, два поля с рубашкой и достоинством и два метода с водом и выводом карты, но вопрос не в этом.

class card
{
int number;
suit suit;
public:
card(){}
void set(int n,suit s){suit=s; number=n;}
void display();
};
void card::display()
{
if(number>=2 && number<=10) cout<<number;
else
{
switch (number)
{
case jack: cout<<'J'; break;
case queen: cout<<'Q'; break;
case king: cout<<'K'; break;
case ace: cout<<'A'; break;
}
}

Для чего вообще вот эта строчка существует?

>void card::display()


Просто чтобы показать, что описывать функцию можно и вне тела класса, посто объявив её предварительно?
Если да, до для чего стоит двойное двоеточие, и что оно в данном случае обозначает? Вроде оно указывает на метод класса, но ведь и без него можно записать функцию.
sage #336 #446808
>>446802
Еще один уебок с вопросами "зачем нужна точка с запятой". Погугли что-то типа "c++ class declaration and definition".
Если коротко, то предполагается, что ты отделаешь объявление класса от его определения. Когда что-то больше лаба_2 напишешь, начнешь догадываться, зачем это нужно.
sage #337 #446810
>>446808

>отделяешь


фикс
#338 #446814
>>446802

> описывать функцию можно и вне тела класса


Принято реализацию всех методов выносить из определения класса, возможно кроме inline. ДвоеточиеОператор разрешения контекста нужно чтобы показать что это метод класса, а не просто функция. Если не понимаешь зачем нужен метод а не функция, удали всю эту хуйню (объявление метода, и сам метод сделай функцией) и попытайся переписать функцию таким образом чтобы она работала с тем же результатом что и метод в коде Лафоре.
#339 #446818
>>446802
Вообще то тебя бы ссаными тряпками нужно прогнать, но добродвач же.

"Двойное двоеточие" - разрешения контекста (вроде так называется) конкретно указывает для какого класса ты пишешь функцию display, в общем указывает из какого пространства имен ты вызываешь/берешь функцию/переменную/итд.
#340 #446824
>>446814
вне класса функция работать не будет, да?
или это просто уточнение для программиста?

>>446818
чому гнать-то сразу?

>>446808
спасибо. пошёл нахуй.
sage #341 #446833
>>446824
На хуй твоя мать ко мне ходит, чепушило.
#342 #446840
>>446824
Потому что "ЛЕНЬ ГУГЛИТЬ СПРОШУ АНОНА". Да, для программиста, можешь спокойно убирать компилятор все поймет и все равно норм откомпилирует.
#343 #446841
>>446840
А зачем тогда этот тред вообще существует?
Чтобы в (i++) раз обсасывать давно обсосанное, или раз за разом уныло холиварить?
#344 #446843
Как кодиться под индикой/кислотой? Кто пробовал?
#345 #446844
http://pastebin.com/74g1FQZC

Является ли первый вариант цикла идентичным второму?
#346 #446849
sage #347 #446851
>>446844
По действию идентичны, в машинном коде сложно сказать как будет, может порядок инструкций будет другой, но количество то же, а может и одинаковый, от компилятора зависит. Ну а в контексте качества кода второй вариант лучше, т.к. легче читается.
>>446841
Уж явно не для вопросов по синтаксису. Вот хотя бы для того что >>446844 спрашивает, это еще более-менее.
#348 #446877
>>446851
ладно, тогда так:
http://ideone.com/q416dH
в какой-то момент программа перестаёт реагировать на агрумент функции sleep()

как значительно ускорить выполнение программы, и что этому мешает?

достаточно подходит под тематику треда?
#349 #446879
А как вы понимаете код? Какую визуализацию в голове используете?
26 Кб, 256x300
#350 #446880
sage #351 #446882
>>446877
Нихуя не понял тебя. Какой-то бред сумасшедшего. Как она реагировать должна? Сплясать что ли? Но вообще, Sleep принимает целое число (количество миллисекунд), так что твое .00000005 превращается в 0. https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686298%28v=vs.85%29.aspx
sage #352 #446883
>>446879
Так в виде объектов и функций и представляю. Не помню как раньше было, но в какой-то момент поймал себя на том, что думаю функциями и объектами.
96 Кб, 300x346
#353 #446888
>>446882
окей. без тогда без слипа.
всё равно слишком медленно.
sage #354 #446891
>>446888
Ну а сам то ты как думаешь? system("cls");
#355 #446892
>>446891
а как ты понял?
sage #356 #446899
>>446892
Это самая тяжеловесная часть. Мало того, что ты заставляешь систему найти утилиту cls.exe (а может и не .exe, хуй вашу винду знает), так еще и запустить ее. А при запуске она еще и очищает консоль. Хотя последнее хуйня по сравнению с предыдущими действиями.
#357 #446955
>>441690
В чем профит указателей?
чем принципиально отличается

int x, y =10;
x = y

от

int x, y =10, ptr;
ptr = &y;
x =
ptr;
sage #358 #446966
>>446955
Как минимум в том, что стек не бесконечный, поэтому надо объявлять объекты, занимающие много памяти, в куче, то есть при помощи new. А new возвращает указатель, очевидно. Это раз.
Далее, при копировании такого большого объекта (если в функцию его передаешь, например) тратится еще столько же памяти и лишние такты процессора. А при передаче по указателю нихуя не тратится (размером указателя в 4 (вроде бы) байта можно пренебречь).
И еще есть разные ситуации, когда нужны указатели, но мне лень их описывать.
#359 #446968
>>446955
Как минимум наличием самого указателя.
Как максимум ты вроде в X передаёшь адрес У. Он будет равен ~ 25346.
Вот если бы ты написал
int x, y;
y = &x;
то ты бы мог иметь как бы 2 названия одной переменной. присваивать значение 4 иксу через
y=4;
#360 #446969
>>446968
Видиш перед У в конце звёзочку? и я не вижу, а она есть.
#361 #446974
>>446966

а это все разве всё не изучается в спецдисциплине "байтоёбство"?
существуют ли инструменты, чтобы посмотреть, на паботу с памятью прямо во времЯ компиляции? Гле научиться всем этим нюансам работы с памятью, ведь нигде прямым текстом не пишется: работа с указателяти на объекты предпочтительнее работы с самими объектами. просто же объясняется про возможность обращения по ссылке и по значению, и всё
#362 #446976
>>446955
Подумай как ты, например, список будешь делать без указателей.
#363 #446977
>>446974
Здравый смысл?
При передаче по значению ты копируешь весь объект и передаешь копию. Если функция проводит какие-то операции над копией, оригинальный объект останется неизменным.
При передаче по ссылке ты работаешь непосредственно с объектом, не создавая копии. Функция может его поменять.
Т.е. никаких нюансов тут нет, что больше подходит под конкретное техзадание - то и используешь.
#364 #446979
>>446966
Для передачи в функцию можно использовать ссылку. Для остальных случаев выделение и очистку памяти разве не лучше ли обарачивать в класс?
Реальное приминение указателей - массивы, деревья и другие структуры, неразыменованный указатель нахуй никому не нужен. Так зачем выделять память для единственного объекта?

Мне нравится С++, но меня вводит в недоумение сишный стиль жонглирования указателями. Осообенно, когда функция выделяет память и возвращает указатель.
Есть же оптимизация возвращаемого значения. Кто потом это гавно будет отлавливать?
sage #365 #446980
>>446974
Чет у меня аж жир потек из монитора, иди ка ты на хуй.
sage #366 #446981
>>446979
shared_ptr и уебывай, клоун.
#367 #446985
>>446981
Причем здесь shared_ptr, еблан?

Разговор о том, что можно обойтись без указателей вне объектов, и без умных в том числе.
sage #368 #446991
>>446985
Нельзя без них обойтись, толстячок. Тебе уже все про стек и кучу было сказано, но ты же с пятью классами церковно-приходской школы умнее всех комитетов.
#369 #446993
Есть ли возможность установить буффер для стандартного потока вывода после выполненных операций i/o?
#370 #446995
>>446955

> В чем профит указателей?


Чтобы изменять объекты по указателям, например, изнутри функции. По-моему это самое охуенное применение.
#371 #446999
>>446974

>ведь нигде прямым текстом не пишется: работа с указателяти на объекты предпочтительнее работы с самими объектами.


О не эффективности передачи объектов по значению не писал только ленивый.
#372 #447029
Как можно узнать или/и выделить максимум для любой системы памяти например для динамического массива?
Известно что malloc возвращает NULL при недостаточном объеме памяти. Но после этого область эта область памяти недоступна так что это использовать врядле удасться.
#373 #447033
>>447029
Нужно дергать системное API. B WinAPI есть
https://msdn.microsoft.com/en-us/library/aa366589(VS.85).aspx
в остальных хуй знает, гугли
#374 #447043
>>447029

>Известно что malloc возвращает NULL при недостаточном объеме памяти


Не обязательно. Под линуксом ты можешь аллоцировать хоть экзабайт на 64-битной системе, и все упадет только когда физическая память закончится.
#375 #447045
>>447043
Поясни подробнее, где про это почитать и кому уебать?
#377 #447050
>>447048
Пиздец. Спасибо, не знал, что все так плохо.
#378 #447051
>>447050
Почему плохо? Стандартом поведение маллока никак не регламентируется. Undefined behaviour. Каждый дрочит, как хочет.
#379 #447070
>>446991
Что было сказано, ебанько?

>Без указателей нельзя, но мне лень примеры искать.



Если в классе конструктор выделяет память, он выделяет его в куче и хранит только ебанных указатель, стек от этого не пострадает. Затем деструктор сам почистит все.

Зачем, я вас, крестодебилы, спрашиваю, вы выделяете память направо и налево? Нахуя плодить утечки и сегфолты? Есть этому оправдание?
#380 #447078
>>447070

>Зачем, я вас, крестодебилы, спрашиваю, вы выделяете память направо и налево?



Чтобы программа пошустрее работала + экономия памяти. Не использовать же контейнеры для больших объёмов данных.

>Нахуя плодить утечки и сегфолты?



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

Есть этому оправдание?

Ну конечно есть. Не буду же я без конца петушить std::vector, например, для целочисленных типов. Взял рассчитал, сколько тебе памяти нужно, до какого момента пробегать итерациями, когда освобождать. Лишний раз не освобождаешь / не занимаешь память.
sage #381 #447095
>>447070
То что ты, неосилятор, плодишь сегфолты, это твои проблемы. Нехуй делать еще одну жаву из крестов с тысячей лишних оберток и абстракций. Кресты не про это. Уебывай и пиши на чем хочешь, раз мозгов не хватает.
#382 #447115
Привет, плюсач!

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

Передавать каждому в конструктор не хочется, это криво и выглядит велосипедом. Делать глобалки, разумеется, тоже не хочется. Стоит сделать статическую инициализацию в конструкторе?
#383 #447116
>>447078

>Чтобы программа пошустрее работала + экономия памяти. Не использовать же контейнеры для больших объёмов данных.


>2015


>Примитивные оптимизации вместо продуманной архитектуры на языке с лучшими оптимизирующиеми компиляторами



>Не использовать же контейнеры для больших объёмов данных.


А для чего они тогда нужны?
Контейнеры - удобная и безопасная обертка для работы с динамическое памятью.

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


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

>Не буду же я без конца петушить std::vector, например, для целочисленных типов.


Тебя никто не заставляет использовать STL, можно написать свой контейнер.

>Взял рассчитал, сколько тебе памяти нужно


>Лишний раз не освобождаешь / не занимаешь память.


А vector-то самопроизвольно выделяет память в случайные моменты времени в случайном количестве.

>до какого момента пробегать итерациями


begin()/end() для кого сделали?

>>447095
Ты что несешь, поехавший? Проверься на нуль терминатор, ты походу гавно наворачиваешь.
#384 #447118
>>447115
Статический член класса, конструктор его обновляет.
#385 #447148
>>447118
В процессе реализации возникла проблема. В классе есть static std::vector< int > i; После класса есть std::vector< int > i; Ругается на multiple definition.

Если не сложно, приведи пример, как это должно выглядеть, чтобы можно было инициализировать статический член в конструторе и забыть.
#386 #447150
>>447148
Фикс: после класса, конечно, std::vector< int > Class::i;
sage #387 #447155
>>447148

>После класса есть


Зачем он там есть? Если тебе нужно инициализировать его в конструкторе, то инициализируй его в конструкторе, а не объявляй новый.
sage #388 #447159
>>447116
Аргументы кончились, пошел бред и словесный понос, ясно.
#389 #447162
>>447155
Так, тут возникает другая трудность.

Я решил перенести этот вектор даже не в конструктор, а в функцию, где он используется. Чтобы один раз инициализировать и все. Но беда состоит в том, что функция эта лежит в треде, поэтому туда лезут два треда сразу и происходит сегафолт.

Если я переношу инициализацию в конструктор, то за пределами конструктора вектор не видно.

Как тут стоит поступить?
#390 #447165
>>447162
Делай синхронизацию, или используй атомарные оперцаии, или создавай объекты только в одном конкретном потоке (фабрику навернуть).
#391 #447180
>>447165
Объекты создаются в одном потоке. В каждом из объектов есть тред и функция, с которой этот тред запускается овер дохуя раз в секунду.

Поэтому все-таки хочется вынести инициализацию статики в конструктор, потому что он вызывается для каждого объекта последовательно, а не городить синхронизацию.
38 Кб, 952x220
#392 #447191
http://pastebin.com/gL4s6DnU

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

на char in и на аргумент in внимания не обращайте, мне просто лень при возвращении к стандартному коду, где у get нет аргументов всё вилкой чистить.

inb4: пошёл нахуй, чепуш, мамку твою ебал
#393 #447193
>>447180

> Объекты создаются в одном потоке


Ну значит сегфолт не из-за того что куда-то лезут два треда. Ты где-то дергаешь нулевой указатель, или там удаляешь объект а потом пытаешся его использовать. Вообще у тебя вся архитектура как-то подозрительно выглядит, в каждом объекте по треду который стартуется дохуя раз это не очень то нормально. Подумай еще раз про общую структуру приложения.
#394 #447200
>>447191
А input_str всегда заканчивается нуль терминатором?
#395 #447203
>>447191
Ты же задание не выполнил. Объявление функции должно быть get (char) а у тебя получилось char StringParser::get(char*)
#396 #447204
>>447193
>>447193
Да нет, с архитектурой вроде все норм -- все эти объекты это обертки для тредов. Там суть вот в чем -- в рабочей функции треда лежит статический вектор. Если он не заполнен, врубается его заполнение.

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

Я пока придумал только один способ решения -- сделать после заполнения while по существованию вектора. Но это какой-то ебучий костыль.

Может все-таки есть способ объявить вектор статическим членом класса и генерить в конструкторе?
#397 #447206
>>447203

Так объявление функции в классе же. char StringParser::get(char*) - это сама функция.
#398 #447207
>>447204
Можешь попробовать синглетон запилить.
#399 #447208
>>447193
Ну, то есть можно еще генерить статику в конструкторе, а потом копировать ее в член класса, по которому будет проверяться, но тогда придется хранить вектор в памяти много раз, а это ненужное засирание памяти.
33 Кб, 661x293
#400 #447211
>>447200

Не, оно работает не так и очень много, пока программа на крашнется.

В стандартном варианте, где у функции гет нет аргументов, оно работает так:
вводишь 1/2\4,5
А оно выводит:
1
2
4
5

В этом варианте http://pastebin.com/P5ruKhb3
При вводе 4/4 и 5/5 выводит пикрил
#401 #447220
>>447204
Если я правильно понял, тебе нужно тчо-то типа сделать статический метод (метод класса) который будет инициализировать вектор (статический естественно). Раз объекты у тебя создаются в одном потоке, перед их созданием дергаешь метод с инициализацией вектора, потом начинаешь создавать объекты. Если из разных потоков то нужно убедится что метод будет вызван до попыток инстанциировать объекты. Совать его в конструктор не сильно хорошая идея, но можно с блокировками - при самом первом зодании берется мьютекс и после инициализции вектора освобождается. Остальные объекты (если есть) ждут освобождения мьютекса. Но если у тебя создание в одном потоке то этого нихуя не надо, проще вызывать статический метод и потом инстанциировать объекты.
#402 #447221
>>447220
О, большое спасибо! Это как раз то, что мне нужно!
153 Кб, 1920x1080
#403 #447227
>>447211
Запустил твой код, работает.
#404 #447233
>>447227

Ты запустил стандартный код, где нужно только в одну строку ввести, которая является аргументом класса.
#405 #447243
Если из функции get вывести input_str, то всё нормально.
2 Кб, 109x287
#406 #447279
cout << strlen(input_str);

Лол
#407 #447287
>>447279

А, вот оно чо! Оно же при каждом вызове функции копируется, вот я дурак.
#408 #447304
>>447051

> Undefined behaviour.


UB там нет. Есть unspecified behavior в том, каким будет порядок и взаимное расположение нескольких выделенных областей памяти. Зато ясно написано, что к объекту можно обращаться до тех пор, пока он явно не будет освобожден. Про UB (а OOM Killer очень даже UB) при обращению к объекту не говорится.
#409 #447311
Если переменная обьявлена в функции, то она сбрасывается до обьявленного значения при каждом вызове функции?
#410 #447315
>>447211

Всё, сделал, хоть и тупым способом.
#411 #447321
>>447311
Да, она вообще не сущестует вне функции.
#412 #447322
>>447321

>сущестует


существует
#413 #447389
>>446844
Если именно условие цикла - да.
Если тело цикла - нихуя нет.
#414 #447527
>>441690
Помогите,няши. Как вставить новые элементы в упорядоченный по убыванию массив не нарушая упорядоченности?
sage #415 #447530
>>447527

>массив


Никак. Только если создать новый массив, либо realloc. В любом случае придется пройти по массиву и перезаполнить его заново с учетом нового элемента (если новый массив), либо сместить "правую" часть (если realloc). А лучше использовать список.
#416 #447534
>>447530
что за список? Мы не проходили списки в универе
#417 #447535
Привет ребяты, поясните, как мне понять что клиент отключился от сервера а winsock, как мне устроить так, чтобы после того как пользователь открыл консольное окно сервер смог реконнектнуться к пользователю(сервер сам подключается к клиенту). И почему у меня выходит отправить только 4 символа в функции Mes ? http://pastebin.com/ArWF04Vc
#418 #447552
>>447534

Я думал, что все программисты в /пр/ - самоучки.
#419 #447554
>>447527
Вставляешь куда надо, остальные элементы сдвигаешь.
#420 #447557
>>447535

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


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

> после того как пользователь открыл консольное окно сервер смог реконнектнуться


Тоже самое - постоянно пробывать подключиться к клиенту, пока он не ответит
#421 #447612
>>441690

Плюсач, подскажи хороший гайд по быстрому изучению особенностей свежего C++ (Что там сейчас модно, C++14?)

Программировал на плюсах несколько лет назад, сейчас возникла необходимость пособеседоваться на позицию плюсовика, в компании используются по возможности новые фичи компилятора (т.е. C++0x нужен, C++14 - скорее нужен, чем нет)
#422 #447632
>>446702

> (возвращаем кортеж с элементом-флагом или передаем out-parameter в виде ссылки/указателя).


А потом весь код, через строчку в if (error)? Я думал исключения придумали как раз чтобы не было этой хуйни.
sage #423 #447638
>>447632
Ну да, чтобы через строчку были try catch. Уебанство эти ваши исключения, раздражают куда больше проверок через строчку.
#424 #447655
>>443673
Плохая идея. Данный приём хорош или для очень больших матриц (в обоих измерениях одновременно), или для одномерных массивов практически вне зависимости от размера массива.

У Страуструпа был приёмчик в упражнении, когда он запили struct Month {}; где std::vector<Day> day; в конструкторе имеет 32 дня, чтобы к ним было удобно обращаться.
#425 #447661
>>443724
Ты, блядь, шутишь? Равно как и те, кто тебе отвечают. Тебе нужны тупо вложенные ифы одного уровня вложенности, не более, условия по y вложены в условия по x.

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

http://ideone.com/VZrXXh
sage #426 #447662
>>447534

>ну маааам, мы не проходили, хнык-хнык


Все, на хуй послан, унтер.
98 Кб, 500x667
#427 #447675
Коротко:
Был макакой, решил пересесть на плюсы. Нужны проекты, которые можно почитать и понять общие концепции. На github нихуя найти не могу, ибо
проекты до безумия сложны, либо проект состоит из одного файла на 2000 строк и может быть получится найти 2-3 комментария. Соответственно реквестирую ссылки на проекты, которые осилить может даже я.

Подробно:
Был макакой на похапе. Понял, что совсем не мое. Пересел на С, потом по совету знакомого взял C++. Изучил все азы, скорее даже сравнил их с похапе и довольно быстро усвоил, но столкнулся с проблемой, что не знаю, как пилить проект.

Концепция проекта есть, но я банально не знаю, как выполнить реализацию:
-Стоит ли пилить отдельный класс.
-А как разместить файлы?
-Где хранить данные?
-А может быть стоит использовать готовые библиотеки?
-Может быть, уже есть готовый паттерн, а я просто ебуся в жопу?
-etc.

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

Собственно, надеюсь, что кто-нибудь из анончиков знает какие-нибудь проекты, которые можно проанализировать начинающему крестоносцу. Или, может быть, есть какой-нибудь хороший блоггер, который в подробностях пояснил за проект\составил с нуля рабочую программу не из 1-2 файлов, а действительно хороший демо-проект.
Или, может быть, сняли какой-нибудь screen-cast, где пилят какую-нибудь простецкую мелочь, аки в похапе запилить гостевую книгу.

Ну-с, анон, надеюсь на тебя. Ты часто мне помогал, помоги и сейчас.

Если на PHP я нагуглил простые cms, которые я погонял деббагером и запилил подобие для себя, а позже вовсе пересел на фреймворки, то с С++ подобное в моем исполнение не взлетает.
98 Кб, 500x667
#427 #447675
Коротко:
Был макакой, решил пересесть на плюсы. Нужны проекты, которые можно почитать и понять общие концепции. На github нихуя найти не могу, ибо
проекты до безумия сложны, либо проект состоит из одного файла на 2000 строк и может быть получится найти 2-3 комментария. Соответственно реквестирую ссылки на проекты, которые осилить может даже я.

Подробно:
Был макакой на похапе. Понял, что совсем не мое. Пересел на С, потом по совету знакомого взял C++. Изучил все азы, скорее даже сравнил их с похапе и довольно быстро усвоил, но столкнулся с проблемой, что не знаю, как пилить проект.

Концепция проекта есть, но я банально не знаю, как выполнить реализацию:
-Стоит ли пилить отдельный класс.
-А как разместить файлы?
-Где хранить данные?
-А может быть стоит использовать готовые библиотеки?
-Может быть, уже есть готовый паттерн, а я просто ебуся в жопу?
-etc.

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

Собственно, надеюсь, что кто-нибудь из анончиков знает какие-нибудь проекты, которые можно проанализировать начинающему крестоносцу. Или, может быть, есть какой-нибудь хороший блоггер, который в подробностях пояснил за проект\составил с нуля рабочую программу не из 1-2 файлов, а действительно хороший демо-проект.
Или, может быть, сняли какой-нибудь screen-cast, где пилят какую-нибудь простецкую мелочь, аки в похапе запилить гостевую книгу.

Ну-с, анон, надеюсь на тебя. Ты часто мне помогал, помоги и сейчас.

Если на PHP я нагуглил простые cms, которые я погонял деббагером и запилил подобие для себя, а позже вовсе пересел на фреймворки, то с С++ подобное в моем исполнение не взлетает.
#428 #447677
>>447675
Читай книги по паттернам проектирования.
#429 #447680
>>447677
Да блядь, эти все книги содержат академические примеры, которые толком никуда нельзя применить. Уже дико заебало читать книжки, пилить очередной считыватель файла. Никакого прогресса, никаких целей - абсолютная стагнация.

У меня есть проект, который меня адски толкает вперед - автоматизированный парник. Это мне действительно интересно и я готов с этим работать, но у меня нет хорошей концепции - банально не знаю, куда засунуть какой кусок кода. Собственно, поэтому хочу почитать другие проекты, понять, как строится структура проекта и его скелет. Ну и всякие другие технические вопросы.
sage #430 #447683
>>447675

>-Стоит ли пилить отдельный класс.


В зависимости от ситуации. Например, если у тебя в одном классе собралось под сотню методов, то это сигнал к тому, чтобы изменить иерархию и вынести какую-то функциональность в отдельные классы. Опять же, классы, состоящие из одного-двух методов чаще всего - плохая идея. Ищи баланс.

>-А как разместить файлы?


Файлы проекта? Обычно кладут в подпапку src, если есть много файлов, относящихся к какой-то части архитектуры приложения, то их еще в отдельную подпапку, скажем, src/dialog, src/stored, и т.п.

>-Где хранить данные?


В базе данных. Очень советую присмотреться к SQLite, если только у тебя там не супер-пупер хайлоад с миллиардом пользователей.

>-А может быть стоит использовать готовые библиотеки?


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

>-Может быть, уже есть готовый паттерн, а я просто ебуся в жопу?


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

Что касается проектов - смотри в сторону Qt (заодно рекомендую его как фреймворк). Документация отличная, код довольно качественный, есть множество примеров небольших приложений. По поводу же чего-то более крупного - только гуглить. Я например ни одной статьи на эту тему припомнить не могу.
#431 #447685
>>447683
Спасибо, вот уже хоть что-то. Сейчас я попытаюсь расписать концепцию своей грядки, лол. Достаточно абстрактно, ибо дохуя технических вопросов все ещё не решено.
Запощу сюда - похуй, все равно опенсовас и ничего принципиально нового нет.

>Что касается проектов - смотри в сторону Qt


Я тут покумекал и пока решил остановиться на веб движке. Понравилась эта концепция очень.
sage #432 #447688
>>447685

>Я тут покумекал и пока решил остановиться на веб движке.


Каком именно? Это, к слову, сложновато для новичка, не рекомендую. Тот же WebKit в Qt содержит столько же (или даже больше) кода, сколько все остальные его части.
#433 #447690
>>447675

>-Стоит ли пилить отдельный класс.



Ну вообще охуеть. Ты спрашиваешь стоит ли использовать хотя бы один класс в своём небольшом проекте, или в каком вообще случае создавать класс?
#434 #447693
>>447690
Ну вот банальный пример, с которым я столкнулся, когда начал набрасывать проект.
У меня есть основной класс, который координирует работу всего приложения (Titan). Он инициализирует работу, устанавливает связь с контроллером(физическим), проверяет входные данные, ждет команды от пользователя и т.д.

С другой стороны, у меня есть файл, которые содержит базовую конфигурацию проекта. Конфигурация, скорее всего будет в JSON формате и скорее всего я перемещу её в БД, ибо

>2015


>срать в файлы.


Сижу и думаю, запилить функцию, которая читает данные из файла прямо в Titan, или запилить отдельный класс, который вытащит нужные данные и сформирует массив, который будет передан в Titan для анализа?

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

>>447688
Пока без идей. Мне просто QT тащить не очень-то и хочется. Хотя опять же, я пока об этом не задумываюсь. Сейчас главное прототипирование, так как даже физической части проекта нет. Поэтому чисто воды консолеебство.
sage #435 #447697
>>447693
Ты неправильно понимаешь классы. Класс - это не замена функции. Класс - это "данные с приделанными к ним функциями для выполнения каких-то действий над этими данными", если простым языком. Так что в твоем случае класс должен заменить массив (для большего удобства, чтоб ничего не выковыривать из массива и не парсить внутри Titan).
А вообще, то что ты привел, это типичный God object - антипаттерн. Лучше так не делать. Для связи с контроллером сделай отдельный класс, который будет преобразовывать сигналы от контроллера в события или вызывать забинденные на них методы; обработку команд от пользователя предоставь еще одному классу (лучше в отдельном потоке, чтобы ничего не блочить); проверку входных данных возложи на следующий класс, который одновременно будет являться представлением этих данных в удобном для дальнейшей работы формате. Ну и так далее.
#436 #447701
На подробное описание дохуя времени уйдет, поэтому кратенько алгоритм работы системы. И я видимо не совсем понимаю, видимо, основные концепции.

>>447697

>заменить массив


Особенно я не понял вот это.
Возможно, кто-нибудь предложит примерную архитектуру приложения.

Алгоритм работы:
1. Инициализация сервера. Смотрим базовую конфигурацию (Что подключено к системе, какие задачи стоят, где размещена база etc)
2. Открываем сокет с контроллеров(Aruduino) и требует опрос сенсоров, которые подключены к системе.
3. Aruduino опрашивает сенсоры, формирует ответ в JSON формате(?) и отсылает обратно на серверную часть.
4. Принятие решения. Серверная часть сверяет показания сенсоров с планом действий, который заложен пользователем (если температура упала, то включить лампы, etc). Если показания сенсоров находятся в пределах нормы, то система простаивает n-секунд и ожидает мануальной команды от пользователя. Вновь отсылает запрос контроллеру на опрос сенсора. Если показания сенсоров выходят за пределы нормы, то серверная часть отсылает команду к контроллеру (например, включить лампы).

Пока это минимальный функционал, дальше есть ещё тысяча и одна функция, но до них ещё очень далеко.
sage #437 #447702
>>447701

>Особенно я не понял вот это.


Ну епта, у тебя в массиве же будут, скажем, строки (ибо разные типы туда ты не запихаешь). А тебе их надо будет потом частично в bool, частично в int, частично во что-то еще переделать. А тут был бы вместо массива класс с уже готовыми распарсенными полями, типа class X {int count; std::satring path; bool isThatFeatureEnabled};

>1. Инициализация сервера. Смотрим базовую конфигурацию (Что подключено к системе, какие задачи стоят, где размещена база etc)


Нахуя? Это все необязательно прямо при запуске делать. Пример из того же Qt: у тебя есть файл конфигов (.ini, .conf), создаешь объект QSettings s; и далее, где надо: s.value("count").toInt(); s.value("path").toString(); и т.д.

>ожидает мануальной команды от пользователя


И блокируется, пока пользователь что-то не введет, т.к. в крестах нет таймаута ввода. Потому это и должно быть в отдельном потоке, который в крайнем случае можно и убить.
#438 #447705
>>447702
Яснее стало с этим массивом, но теперь я вообще не понимаю, как запилить программу.
sage #439 #447708
>>447705
Это норма.
#440 #447710
>>447708
И хули делать? Как-то не пришли ни к какому решению? Неужто в традициях /pr/ меня отправят стаканчики убирать со столов в макдональдсе?
#441 #447714
>>447697

>Ты неправильно понимаешь классы.


>Класс - это "данные с приделанными к ним функциями для выполнения каких-то действий над этими данными"


?
#442 #447716
>>447705

> я вообще не понимаю, как запилить программу.



Пили итертивно, выбери минимум возможностей и пили с архитектурой, какая под руку подвернётся.

> Смотрим базовую конфигурацию


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

> где размещена база


А база тебе зачем? Для хранения правил?
Кажется, если правила - это что-то что пользователь должен редактировать, то тупо ещё один конфиг, лежащий рядом с твоей программой — решение куда лучшее, чем бд.

Допустим, в качестве минимума реализовываем тупые правила вида "Если X > 10 сделать_действие"

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

Для начала можешь просто хранить как список структур {свойство, знак сравнения, число, команда}

Ожидание ввода пользователя и работа с контроллёром — тоже выглядит как две отдельные сущности.
sage #443 #447719
>>447710

>И хули делать?


Закрыть сосач и начать пробовать, пытаться. Само собой нихуя не сделается. Тебя же никто не заставляет сюда код выкладывать, что получится, то и ладно. С опытом будет все лучше и лучше получаться, все через это проходят.
188 Кб, 1024x768
#444 #447756
>>441690
Пишет запутавшийся Java-developer про библиотеки C++. Дайте ссылку, пожалуйста, на статью которая пояснит за подключение библиотек dll/lib/a/so, и какая между ними разница в использовании. Не понимаю какова разница, кроме того, что so и dll динамичные, а a и lib - статичные. Ну и что a и lib - unix-like, а dll - windows. Но зачем статичность/динамичность, в чём профиты и разница в подключении к проекту в VS и прочих IDE?
#445 #447757
Вы что здесь совсем поехали, добавив маты в спам-лист?
#446 #447765
>>447756

>so и dll динамичные


Их подключит ядро операционной системы, вызов пойдёт через указатель на функцию (дополнительный прыжок по оперативной памяти),

>a и lib - статичные


Их подключит линкер, вызов пойдёт напрямую, параметры будут переданы через стек,

>зачем статичность/динамичность, в чём профиты и разница


В оптимизациях, а если исходники подключать, то функцию в код подставят, см. книжжшки по написанию компиляторов.

IMHO, ещё:
- в библиотеках не надо создавать глобальные переменные,
- в библиотеках не надо создавать новые области памяти без крайней на то необходимости,
- в библиотеках не надо ещё много чего, т.к. библиотеку вызывают и другие программы,
И в таком случае лучше статическая линковка.
#447 #447778
>>447765

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



Не совсем ядро, а динамический линковщик (во всяком случае, если речь идёт о линуксах), но в общем — сказанному верить.

>>447756
Алсо, чисто организационный момент. Некоторые библиотеки довольно большие и разделяемые между множеством приложений (Qt, например) и линковать статически оную в каждый исполняемый файл системы довольно глупо.
#448 #447790
>>447683

>В базе данных. Очень советую присмотреться к SQLite


С трудом прикрутил эту хуевину. Сейчас проект собирается с тремя варнингами. Почему эта библиотека такая ебливая?

Warning\t1\twarning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification\t
Warning\t2\twarning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification\t
Warning\t3\twarning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:librar
sage #449 #447826
>>447790
Потому что проблемы спермоклоуна и говностудии. У меня все прекрасно работает.
sage #450 #447837
>>447826
Первые два, кстати, твоя спермостудия сама вызвала. Не знаю уж, каким образом. Кури https://msdn.microsoft.com/ru-ru/library/3ec25010.aspx
Третий либо ты, либо опять же студия вызывает. https://msdn.microsoft.com/ru-ru/library/6wtdswk0.aspx
Обрати внимание на

>/NODEFAULTLIB:librar


>librar


Это к SQLite явно никак не относится.
#451 #447911
>>441690
Помогите! Как разположить по убыванию отрицательные элементы массива, стоящие за первым минимальным элементом?
#452 #447918
>>447911
https://ideone.com/Qwgnjr
Думаю, что с УБЫВАНИЕМ и ВОЗРАСТАНИЕМ сам разберёшься. С++ референсис тебе в помощь.
Ну и ещё partial_sort тоже посмотри. Но тут он был не нужен.
#453 #447922
>>447918
это решённая задача? А можно решение без вот этой непонятной <algorithm>?
#454 #447925
>>447922
Охуенные стори, бро. Ты бы книжку почитал для ньюфань. Или погуглить попробовал.

Сделать можно это так:
1. Ищешь наименьший элемент. Запоминаешь его позицию. Т.е. arr[n], где n позиция меньшего элемента.
2. Юзаешь алгоритм сортировки, гугли сразу СОРТИРОВКА ПУЗЫРЬКОМ, самая простейшая. Сортируешь массив начиная от arr[n] до arr[arr_size].

И блядь, читай литературу в шапке треда, ибо подобные вопросы далеко ни раз описаны в трудах различных авторов.
47 Кб, 750x510
sage #455 #447926
>>447922
Конечно можно, в армии все можно, дорогой. Потерпи чуток, призыв уже скоро.
#456 #447927
>>447926
я девушка))
#457 #447929
>>447925
мне нужно отсортировать ОТРИЦАТЕЛЬНЫЕ элементы
#458 #447933
>>447929
Отлично. Это охуенно. 500 рублей, с предоплатой 300 рублей и я тебе сделаю. Раз читать, да думать нихуя не умеешь.
#459 #447934
>>447933>>447933
ну блииин((
sage #460 #447941
>>447927
Ну тогда за отсос сделаю. Или handjob хотя бы.
#461 #447945
Посоны, подскажите дебилу. Есть например helloworld.cpp, и я внем хуяк, написал в нем #include <QTCore>. Ну значит g++ говорит что нету такой хуйни. Что делать? Проги с использованием qt либ можно только через qmake собирать? В системе либы qt4 стоят.
#462 #447951
>>447765

>so и dll динамичные


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


нет
тут 2 варианта
sage #463 #447955
>>447945
g++ -Ic:\path\to\qt\include
А вообще, используй систему сборки. Хотя бы тот же qmake.
#464 #447968
>>447837
Сууука, я никак не могу сообразить с архитектурой программы.

Вот есть функция int main(). Дальше что? Куда должна идти программа? Почему нет смысла инициализировать в самом начале? Ведь нужно представление о среде иметь и т.д?
Что в классе Titan должно быть? Почему я пилю по антипаттерну?
Разве нельзя оставить Titan, который просто принимает решения по факту? Куда вообще логику приложения положить? В каком классе должна находиться та часть, которая отвечает за принятие решений?
#465 #447970
>>447968
Подскажите хоть какие-нибудь наброски, чтобы не обосраться сразу же, как открыл студию.
#466 #447990
>>447968

Господи. Пиши так, как тебе удобнее.
Ты на классы декомпозируешь программу потому что анон сказал тебе, что так правильно?

Я тебе выше предложил уже — выделяй в классы относительно независимые куски и пиши их. А потом вместе соберёшь.
#467 #448008
>>447968
Пиши как хочешь, потом поймешь почему и где ты мудак. Так все языки учатся. Не еби мозги, просто делай.
#468 #448033
>>447968
Ну, у меня как у новичка такой проблемы нет - я вообще не представляю архитектуру программы изначально. Поэтому я поочерёдно пишу некие куски (модули) и тестирую их на образцах данных.

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

Я вообще ебал в рот это ООП, правда, задачки у меня в основном (полу-)обучающие и небольшие, может поэтому ещё не успел оценить.

>Вот есть функция int main(). Дальше что? Куда должна идти программа?


Ну это вообще философские вопросы. Инт мэйн - с неё всё начинается и ею всё заканчивается, всё выделение памяти, общение с ОС и т.д. Почему не войд? В идеале должен быть возвращён ноль, чтобы показать, что ошибок при выполнении не было.
#469 #448040
>>448033
Пиздец. Сейчас кодил мелкую математическую задачу. Дико обосрался с векторами, динамическими массивами и прочим говном. Дико стыдно. Забился под шконку вместе с учебником. Совсем охуел, лезу в серьезные вещи, когда основ не понимаю.
sage #470 #448068
>>447638

> через строчку были try catch.


Неумение писать нормально код - это определено проблема try-catch, lol.
#471 #448086
>>447765
>>447778
Спасибо за пояснение.

Но вот я подключаю библиотеку, а там сразу .h, .lib и .dll. Зачем сразу всё? Какие комбинации вообще возможны и зачем они нужны. Пожалуйста, укажите все возможные комбинации, иначе я ничего не понимаю, когда сталкиваюсь с такой фигнёй.
#472 #448087
>>448086
.h - описание интерфейса библиотеки. Нужно в любом случае.
Дальше два стула: статическая линковка с .lib или динамическая с dll.

Ты хоть один абзац про виды линковки прочитал?
sage #473 #448094
>>448068
Неумение писать код это определенно проблема if (error), лол.
#474 #448097
>>448087
Да, я гайды по CMake читал, но на таким вещам почему-то не уделяют внимания, а для меня шок, лол. Т.е. .dll можно смело удалять из папки и всё будет работать?

Ещё нубской вопрос:
http://stackoverflow.com/questions/21593/what-is-the-difference-between-include-filename-and-include-filename
Т.е. надо те хэдеры, которые сам объявляешь инклудить через "filename.h", а стандартные библиотеки и всякие Boost'ы через <filename.h>?
#475 #448100
>>448097
Разница в порядке поиска.
"" начинает с текущей папки, потом проектные, потом системные.
<> в обратном порядке, грубо говоря.

Ты прав.
#476 #448101
>>448097
Cmake - это система сборки, все же. Читай про линковку, статическую и динамическую.
#477 #448104
>>448101
Хорошо.
Библиотеку подключил, добавил .lib в Linker->Inputs в VS2012, добавил нужные пути в проект. Но при старте Start Without Debugging получаю ошибку, что невозможно найти библиотеку. Решается добавлением .dll в папку Realese.
Тут у меня 2 вопроса:
1) Почему .dll, а не .lib (пробовал без .dll - не зарабаотало, а с .dll всё o.k.)
2) Как решить эту проблему, чтобы автоматически копировалась нужная .dll библиотека?

>>448100
Т.е. по сути это синтаксический сахар?
sage #478 #448106
>>448104
Нет. Никаким другим способом ты порядок поиска не задашь. Сахар это когда вместо длинной конструкции тебе предлагается использовать короткую, но делающую абсолютно то же самое.
sage #479 #448107
Алсо, нахуя вы помогаете спермоклоуну, не читающему FAQ и прочие мануалы по своим спермоигрушкам.
#480 #448108
>>448106
Хмм, ты прав.

Но мне кажется, что двойственность при линковке библиотек - уже плохая практика, когда всё зависит от кавычек или скобочек.
sage #481 #448109
>>448108
Заголовочные файлы никак не относятся к линковке, это отдельный процесс. Заебал, клоун. Нихуя не понимает и уже вылезает со своим мнением.
#482 #448111
>>448108
Это для упрощения жизни компилятору, чтобы он знал где искать, а не ворошил весь диск на каждом инклюде.
#483 #448112
>>448109
Ну ты же понял что я имел в виду.

>>448111
А, ну ок, теперь я понял в чём конкретный профит.
sage #484 #448113
>>448112
Нихуя ты не понял, и тот анон тоже не прав. Вот лежит у тебя в системной папке файл jopa.h, относящийся к какой-то библиотеке. А в своем проекте ты тоже создаешь файл jopa.h, и если бы поиск осуществлялся только в каком-то одном порядке, тебе бы пришлось указывать абсолютный путь (иначе какой-то из файлов вообще никогда нельзя было бы подключить).
#485 #448114
>>448113
Это же и есть говно, когда зависимость в коде от положения файла на диске. Притом порядок ещё нечётко регламентирован. Уж лучше путь относительно проекта указать, чем надеяться, что файл заинклудится правильно.
sage #486 #448120
>>448114
Че ты несешь вообще? Ты хоть один проект собирал когда-нибудь? (laba_2 не считается.) Какие блять пути относительно проекта, ты понимаешь, что на разных системах все в разных местах лежит? Пиздец просто.
А так да, система заголовочных файлов по сравнению с import в других языках весьма уебищна. Как бы мне кресты ни нравились. но с этим не поспоришь.
#487 #448129
>>448120

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


Я к этому и клоню.
sage #488 #448139
>>448129
В C++17 вроде должен появиться некий аналог import'ов.
#489 #448149
http://ideone.com/wUVy7z
Чому код компилится?
Ведь A::foo() и B::foo() имеют разные сигнатуры, а следовательно это разные функции и должно происходить не переопределения, а простая перегрузка и получаться, что A::foo() просто не определена. Объясните мне тупому.
#490 #448150
>>448097

>include <fstream>


>include <iostream>



>include <cstdint> //C++ std version of stdint.h


>include <cstdlib> //C++ std version of stdlib.h



Т.е. include <> -- это обычно для стандартной библиотеки. .h в конце не пишется, компилятор должен понимать, что обращение идёт именно к ней. При этом сишные хэдеры также являются частью стандартной библиотеки, если перед названием хэдера после < добавить c. Кстати, имеется категорическая рекомендация использовать std::malloc() а не просто malloc(), чтобы у твоей среды разработки не было сомнений, что ей использовать. Маллок просто как пример, можешь его вообще не использовать.

>include "bicycle.h"


>include "your_mom.h"



А эти файлы должны находиться в той же папке, где находятся и всё .cpp файлы. Т.е. это твои собственные хэдеры, в которых ты можешь объявлять функции и определять глобальные константы, включать хэдеры стандартных библиотек, писать развёрнутые комментарии по версиям и прочее // (всё равно там мало кода).

По крайней мере, так делаю я. Если кто желает обоссать меня по делу, я буду только рад.
#491 #448153
>>448150
Т.е. с <> только стандартные из стандартной библиотеки, а с "" всё остальное?
#492 #448154
>>448149
Декларация функции/метода это просто обещание компилятору что такая функция существует, встретив его он просто продолжает дальше, а не бросается проверять есть ли действительно у функции определение (на самом деле компилятор плюсов и не может в общем случае такое проверить, например определение функции может быть в другом translation unit). И если нигде дальше метод/функция не используется то все ок. Проверка на существование функции происходит на стадии уже линковки, а попытка линковки происходит только если функция/метод действительно вызывается где-либо.
#493 #448155
>>448150

> .h в конце не пишется, компилятор должен понимать



на самом деле, в stl лежат как раз такие файлы cmath, cstdlib, которые просто инклюдят math.h, stdlib.h.

>А эти файлы должны находиться в той же папке, где находятся и всё .cpp файлы



Не обязательно. Как выше объяснялось, "..." начинает посик с текущей папки, потом поднмиается до корневой папки проекта, потом переменные для инклудов, потом системные пути. Так что твой файлы могут лежать где угодно.
#494 #448156
>>448153
Ну по идее, да. Только вот лично мне непонятно со сторонними библиотеками типа Буста и т.д.

По логике, надо использовать "" и относительный путь:

>#include "../../govno/mocha.h"



Но лучше призвать людей, использующих библиотеки.
#495 #448158
>>448153
пути к библиотекам обычно указывают в настройках проекта, а в коде используют просто <boost/non_copyable.h>
<poco/huy.h>
<sgstd/vector.hpp>
#496 #448159
>>448155

>на самом деле, в stl лежат как раз такие файлы cmath, cstdlib, которые просто инклюдят math.h, stdlib.h.


Мне казалось, там есть тонкости. Вроде того, что они не инклюдят файл целиком, а лишь отдельные сущности, потому что какие-то сущности могут быть чутка изменены. Кто-то может прояснить.

>Не обязательно. Как выше объяснялось, "..." начинает посик с текущей папки, потом поднмиается до корневой папки проекта, потом переменные для инклудов, потом системные пути. Так что твой файлы могут лежать где угодно.


Подразумевается, что свои-то хэдеры ты будешь держать в той же папке. Ну и да, в Вижуал студии ни черта не ищется по директориям выше, просто говорит "нет файла".
#497 #448161
>>448159
http://lpaste.net/124370

8/16 строчки - #include <math.h>
дальше импорт функций в пространство имен std
#498 #448162
>>448161
А чё там на 11 строчке происходит?
#499 #448164
>>448162
всякие тригонометрические фукнции - tg/arctg и тд и тп
#500 #448166
>>448164
Ну т.е. <cmath> это не только "math.h". Так?
#501 #448168
>>448166
да, cmath дополнительные функции подключает.
#502 #448172
>>448168
Что >>448159 и требовалось доказать -- плюсовые хэдеры могут быть расширены (от их использования в любом случае не проиграешь). Так что я предлагаю при возможности инклюдить >>448150 хэдеры исключительно из стандартной библиотеки (особенно сишные), и при вызове сишных функций использовать std:: дабы снять все вопросы по возможному двоякому трактованию пространства имён.

Мало ли кто вдруг по пьяни маллок переопределит для какого-то модуля.
#503 #448186
После даунгрэйда с vs 2013 на vs 2012 получаю следующую ошибку:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to read the project file "deviceQuery_vs2012.vcxproj".

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.5\1_Utilities\deviceQuery\deviceQuery_vs2012.vcxproj(44,5): The imported project "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v110\BuildCustomizations\CUDA 6.5.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
---------------------------
ОК
---------------------------

В чём может быть проблема? Это решение открывается легко на другом ПК, где сразу стояла vs 2012 (собственно из-за этого и сделал даунгрэйд на втором)
#504 #448187
>>448186

>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v110\BuildCustomizations\CUDA 6.5.props



проверяй пути
#505 #448190
>>448154
>>448149
A::foo() и B::foo() - разные функции. Следовательно A::foo() не определена и В является абстрактным классом. Все потомки абстрактных классов, в которых не определены чисто виртуальные функции так же являются абстрактными.
Код компилируется потому что он корректен. А вот создать объекты типов А или В не получится.
sage #506 #448191
>>448186

>Вопросы, связанные с программами и операционными системами, обсуждаются в /s/.

71 Кб, 949x389
#507 #448213
помоги, анон
#508 #448214
>>448190
Абстрактность никак не влияет на то что программа компилируется. Меняется только то где выскочит ошибка. Если метод обявлен как pure virtual - то при попытке инстанциировать класс, если будет объявлен как простой метод без реализации то будет ошибка линковщика, если метод используется. Если нет то все скомпилируется, даже если клас инстанциируется (без последующих вызовов отсутсвующего метода).
#509 #448216
>>448213
Массив а недостаточной длины. Алсо проиграл с копипаста.
#510 #448217
>>448216
изменил длину, не помогло
#511 #448220
>>448213
Дебаггеры, блять, для кого придумали? Чему равно i в момент краша? Какой массив a в момент краша? Хули ты принес кусок нихуя в тред? У нас экстрасенсов не водится.
25 Кб, 555x370
#512 #448248
Перекот не пора? Тонем.
#513 #448257
>>448248
разве не тысяча постов?
#514 #448264
>>448257
Нет, 500. Тонет же.
27 Кб, 422x604
#515 #448268
спрошу тут:
как преобразовать данный код (из сдиез)
wow.Asm.AddLine("fs mov eax, [0x2C]");
wow.Asm.AddLine("mov eax, [eax]");
wow.Asm.AddLine("add eax, 8");
wow.Asm.AddLine("mov dword [eax], {0}", objectManager);

wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push {0}", id);
wow.Asm.AddLine("call {0}", CASTSPELLBYID);
wow.Asm.AddLine("add esp,16");
wow.Asm.AddLine("retn");
и из с++ билдер
__asm
{
MOV EDI, Id // Помещаем WID в регистр EDI
MOV EBX, 0x00630790 // Помещаем адрес клиентской функции таргета
MOV EAX,DWORD PTR DS:[BA] //
PUSH EDI // ; /Arg1
MOV ECX,DWORD PTR DS:[EAX+0x20] // ; |
ADD ECX,0x0EC // ; |
CALL EBX // ; \elementc.00606A70
}
поставить под синтаксис gcc компилятора вида __asm ("");
статью я раз десять перечитывал, все равно не понял в чем ошибка:
переменные джисиси отказывается видеть, как их грамотно передавать я таки не понял
__asm ("movl %eax, 0x2C");
__asm ("movl %eax, %eax");
__asm ("add %eax, 8");
__asm ("movl %eax, OM");

__asm ("push 0");
__asm ("push 0");
__asm ("push 0");
__asm ("push ID");
__asm ("call 0x00773400");
__asm ("add %esp, 16");
__asm ("retn");
27 Кб, 422x604
#515 #448268
спрошу тут:
как преобразовать данный код (из сдиез)
wow.Asm.AddLine("fs mov eax, [0x2C]");
wow.Asm.AddLine("mov eax, [eax]");
wow.Asm.AddLine("add eax, 8");
wow.Asm.AddLine("mov dword [eax], {0}", objectManager);

wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push 0");
wow.Asm.AddLine("push {0}", id);
wow.Asm.AddLine("call {0}", CASTSPELLBYID);
wow.Asm.AddLine("add esp,16");
wow.Asm.AddLine("retn");
и из с++ билдер
__asm
{
MOV EDI, Id // Помещаем WID в регистр EDI
MOV EBX, 0x00630790 // Помещаем адрес клиентской функции таргета
MOV EAX,DWORD PTR DS:[BA] //
PUSH EDI // ; /Arg1
MOV ECX,DWORD PTR DS:[EAX+0x20] // ; |
ADD ECX,0x0EC // ; |
CALL EBX // ; \elementc.00606A70
}
поставить под синтаксис gcc компилятора вида __asm ("");
статью я раз десять перечитывал, все равно не понял в чем ошибка:
переменные джисиси отказывается видеть, как их грамотно передавать я таки не понял
__asm ("movl %eax, 0x2C");
__asm ("movl %eax, %eax");
__asm ("add %eax, 8");
__asm ("movl %eax, OM");

__asm ("push 0");
__asm ("push 0");
__asm ("push 0");
__asm ("push ID");
__asm ("call 0x00773400");
__asm ("add %esp, 16");
__asm ("retn");
#517 #448311
Перекот
>>448310
#518 #448322
Привет, программач!

Я тут пробовался на работу. Просили мультитрединг под нагрузкой, C++11 и всякое такое -- заданием была факторизация большого объема чисел в многопоточном режиме. Написал штуку: http://www.fayloobmennik.net/4681759

Меня не взяли.

Собственно, интересно услышать твое мнение, почему.
#519 #448329
>>448322
Код не читал и не запускал, но 10000 как максимальное возможное число выглядит очень подозрительно. Проверь хотя бы как оно будет работать на числах до 2^64, с меньшими ограничениями в задаче вообще смысла нет.
#520 #448332
>>448329
Это было прописано в условии задачи. Сама по себе программа не ломается для любых чисел, которые влезают в uint64_t, разве что можно будет слегка ускорить алгоритм факторизации.

В заданных условиях она кушает 10 миллионов чисел за время от полсекунды до пяти, что вроде бы топовый результат.
#521 #448337
>>448332
Ну тогда разве что им стиль/архитектура/названия переменных не понравились, хуй знает.
#522 #448342
>>448337
Насчет архитектуры -- хз. Вроде бы стандартное решение с кольцевым буфером и тредами в обертках.

Я тоже хуй знает. Поэтому надеюсь, что придет какой-нибудь эпик сноб и сможет мне разложить по полочкам, где я не няша.
#523 #448358
>>448342
Переопределение операторов << и >> лютейшая параша.
У std::vector есть конструктор, принимающий в себя кол-во элементов (а ты делаешь resize, никанон)
Именование переменных — параша из 90х. camelCase сейчас стандарт. Префиксные и постфиксные подчеркивания — ад для моего утонченного вкуса.
Инкапсуляция потоков — спорно. Можно было вынести.
Три newline между функциями. Ну зачем?
for разбит на 3 строчки. Опять же зачем?
Комментарии на русском. Сразу минус. Еще бы транслитом переменные называл.
Куча инклудов в хэдере, где они нахуй не сдались. Увеличит время рекомпиляции при некоторых кондициях.
(мне надоело, жди еще кого-нибудь)
#524 #448370
>>448358
В чем параша с переопределением?
Насчет конструктора принял.
Инкапсуляция ради соблюдения ООП -- не хотелось делать один godlike-объект.
Насчет инклюдов -- не понял, поясни, в чем беда?

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

Переменные я пишу через подчеркивания, потому что мне нравится видеть разницу: кэмел-кейс -- функции, маленькие через подчеркивания -- переменные. Ньюлайны для логического разбиения функций по группам, мне так удобнее искать. Фор -- опять же, для удобства. Здесь форы мелкие, а бывает, что условия довольно большие в записи, и так проще понять, что где. Насчет комментариев -- имхо, проблемы глупых вендоблядков, нормальные посоны держат свои файлы в utf8.
#525 #448373
>>448094
Попугай-кун, вся суть if(error) это if(error) через строчку, а try-catch даёт возможность не засирать этим говном весь код.
#526 #448374
>>448370

>нормальные посоны держат свои файлы в utf8


Речь не об этом, а о том, что комментарии на любом языке кроме английского - зашквар.

>Переменные я пишу через подчеркивания


Опять же речь немного не об этом, а о хуйне вида _var или var_. Так уже много лет НИПРИНЯТО.
#527 #448378
Здравствуй, ананас.
Подскажи, пожалуйста, актуальна ли няшная и кресты?
Сейчас получается так, что в основном, я хуярю интерфейсы к железкам, да системный код. Целиком и полностью кроссплатформу.
На крестах, в основном, пишу уже врапперы, к-е отдаю ДРУГИМ ДЕВЕЛОПЕРАМ.

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

А почему, кстати? Это неплохо позволяет понимать, является ли переменная членом класса, аргументом или локальной.
#529 #448382
>>448379
Это не снобизм, на английском вся техническая терминология обычна куда более очевидна, однозначна и общепринята. Кроме того, годный программист владеет английским на достаточном уровне, чтобы комментировать на нем было как минимум так же удобно - следовательно собеседун может расценить комментарии на русском как признак плоховатого знания английского.
#530 #448385
>>448382

>обычна


обычно
#531 #448387
>>448370

>Насчет инклюдов -- не понял, поясни, в чем беда?


Ну вот скажем Factorizer.h
Зачем в .h-нике iostream и cmath? они что, используются непосредственно в этом заголовочнике? Нет. Тогда зачем пользователю знать о том, что они где-то вообще используются? А если они изменятся, рекомпиляция может занять чуть больше времени. А если такие ошибки делать постоянно, то incremental build будет работать часами. Поэтому нормальные люди подключают только необходимые заголовки в каждом translation unit.
sage #532 #448438
>>448373
А я считаю, что catch - такое же засирание кода. Иди на хуй. Это нарушает всю логику, потому что никакой исключительной ситуации нет.
sage #533 #448444
>>448379
Безграмотная пидораха оправдывается, найс.
#534 #448447
>>448438
Этот прав. В нормально написанном коде исключения не нужны вообще. Если для работы со средой они еще имеют право применяться, то исключения для проверки собственных выражений это "ну хуй знает, может сработает, может нет". Программист должен понимать, что делает его код.
#535 #448448
>>448387
Теперь понял. Я чистил, в принципе, от ненужных хедеров, но похоже не слишком тщательно.
#536 #448450
>>448382
А не проще проверить знание английского языка на собеседовании?
sage #537 #448451
>>448450
Так вот они и проверили.
#538 #448539
Не могу нагуглить. Я скачал библотеку и хочу использовать ее в Visual Studio 2013. Как мне все подключить? Есть какой-нибудь общий гайд или же для каждой библотеки все индивидуально?
sage #540 #448547
>>448546

>заебали


Сука АЖ ТРИСЕТ шучу конечно.
#541 #448548
Аноны, почему

int n=2;
if(n=1,2,3,4){
cout<<"Ok";
}

срабатывает как истина и выводит Ok?
#542 #448550
>>448548
(n==1,2,3,4)

*быстрофикс
sage #543 #448554
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
sage #543 #448554
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
#544 #448556
>>448554
бампаем тредик
485 Кб, 566x800
sage #545 #448564
>>448556
Бампаем твоей мамаши ротик.
sage #546 #449879
Здравствуйте. Туплю с STL.

string str;
//записываем слово из файла, пока не встретим пробел
getline(file, str, ' ');
//первую букву слова переводим в нижний регистр
string::iterator i = str.begin();
tolower(звездочка i);
//вырезаем из слова все знаки препинания
for(; i != str.end(); ++i)
{
\tif(!isalnum(звездочка i) && звездочка i != '\n' && звездочка i != '-')
\t\t\tstr.erase(i);
}

Проблемы две. При переводе первой буквы к нижнему регистру реально нифига не происходит. Вторая - стопорит на переборе и удалении элементов в цикле. Читал, что с erase кое-где ломаются итераторы, и надо ставить i--, но это тоже не помогает. Нид хелп. BOOST и самопальные функции не предлагать, желательно также обойтись без <algorithm>. В общем что я делаю не так?
#547 #449998
>>449879
Пользуйся pastebin, блядь.
http://pastebin.com/GUJmrqZH - решение с удалением я не проверял, но вообще как-то так.
#548 #450000
>>449998
И да, там с <algorithm>. Если без него, то можно заменить distance(str.begin(), i) на i - str.begin().
#549 #450332
#include <iostream>
#include <cmath>
using namespace std;
int f1(int i) {
i=2;
return i;
}
int main () {
int i =1;
f1(i);
int f1_result = f1 (i);
cout<<i<<endl;
return 0;
}
Не работали глобальные переменные, решил проверить на тривиальном примере, всё равно не пашет.
подскажите плз (ответ кстати от наличия int f1_result = f1 (i ); не зависит), только начал учить программирование
#550 #450372
>>441690
Реквестирую объяснение, как работает функция rotate.

Задание: Передвинуть элементы массива a размерности n таким образом, чтобы элемент с индексом new_0 стал начальным, и вернуть индекс, который получил элемент, бывший начальным.

Пусть массив a[5] = {1,2,3,4,5}
new_ 0 = 2, a[new_0] =3

Как получить массив a = {3,4,5,1,2}?
#551 #450442
Какого блядь хера std::type_info некопируемый? Зачем, а главное, нахуя это сделали? T_T
#552 #450600
Если добавить в команду сборки -std=c++0x я могу точно сказать что я программирую на с++ 11-й версии? Или 14-й...
#553 #450643
Появились вопросы:
1) Как поменять элементы массива в случайном порядке?
2) Что такое невозрастающая пирамида и как проверить, не является ли массив ею?
3) Как проверить, является ли массив b перестановкой массива a?
#554 #450946
>>450372
Ап, олдфаги, сложно что ли пояснить нубу?
#555 #450962
>>450946
олдфаги давно перекатились в новый тред, некрофил.
#556 #452710
>>443920

>(num >= 0) && (fractional == 0.0))


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


Поссал на дебила.
#557 #453263
>>450600
--std=c++14
#558 #453734
Хочу в скором времени перебираться на Linux, и думаю что юзать буду для разработки программ(ну и игрулек конечно). Смотрю в сторону разных IDE, очень нравится CLion, поясните за CMakeLists, поясните за MinGW(я вроде понял что то вроде порта сборщика под винду), так же смотрю на Qt. Поясните каким образом мне делать не консольные приложения на CLion, в Qt понятно, я строю как на WPF, но в CLion я чет не понял пока что(потому что долбаеб). Так же поясните за компиляторы G++, GCC, Intel C++ и так далее. Ну так как Linux то наверно GCC лучше будет. Было бы неплохо если бы знающий человек отписал что к чему, плюсы минус и куда двигаться, и сильно ли я пострадаю если съебну с винды на линух и буду там разрабатывать и под винду и под линукс?
P.S.
Сильно хуями не обкладывайте мне 18 лет, пытаюсь не быть ебаным биомусором.
#559 #453805
Мне тут небольшая библиотека перепала с компьютерной литературой, решил вот с плюсов начать, до этого немного мог в жаваскрипт плюс паскаль на школьном уровне лол, но не суть. Так вот, там аж 3 книги по плюсам, две Шилдта - базовый курс и "искусство с++", и самоучитель Васильева. С какого автора лучше вкатиться будет?
#560 #454126
Двачик, есть очень простой вопрос, но нормальное решение как-то не очевидно. В общем есть строка std::wstring вида "0102030A0B0C", нужно разбить на вектор/массив строк вида {"01", "02", "03", "0A", ... }. Кроме тупого перебора циклом есть в стандартной библиотеке способы это сделать?
17 Кб, 458x219
#561 #454360
Блядь, да что за хуйня!
Ну почему компилятор пишет, что array - это char * и выкидывает исключение?
#562 #454374
>>454360
Если я правильно понял, это происходит из-за того, что я сравниваю символ с разыменованным указателемa == *(array+i) - можно так записать на элемент символьного массива. А как тут этого избежать-то? Как жить, что делать?
#563 #454500
#564 #454867
Посоны, есть важный вопрос.

Волею судеб надо разобратьсь с куском говна на крестах, запись в файл, конкретно.
В куске кода отвечающего за запись документа в файл, вызывается [int _write] функция из файла write.c 10й вижлы.
Пробежался по ней дебагом, она доходит до винапишной функции

BOOL WINAPI WriteFile(
_In_ HANDLE hFile,
_In_ LPCVOID lpBuffer,
_In_ DWORD nNumberOfBytesToWrite,
_Out_opt_ LPDWORD lpNumberOfBytesWritten,
_Inout_opt_ LPOVERLAPPED lpOverlapped
);

Дальше, видимо, эта функция кидает error. Где мне глянуть код ошибки?
#565 #455482

https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
#565 #455482

https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
https://2ch.hk/pr/res/448310.html
#566 #455745
>>444492

Простите великодушно, но я малость не въезжаю:

1) Почему gcc запускается без параметров?
2) Какое отношение эта строчка кода имеет к С++?

Спасибо.
181 Кб, 849x566
#567 #455752
>>446679
Божественный язык. Единственный язык после Святого Ассемблера, которые честен и нежен с тобой как первоклассница и не пытается тебя наебать через строчку.
Тред утонул или удален.
Это копия, сохраненная 28 марта 2015 года.

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

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