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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #426106
>>426100
Где архив прошлого взять?
sage #3 #426109
>>426106
http://arhivach.org/thread/48611/
Мог бы и своей головой подумать.
#4 #426112
>>426109

Почему ты злой такой, пидар?
sage #5 #426125
>>426112
Пидор твой отец, чепуш.
#6 #426142
>>426100
Почему не return void?
Какая-то хуита.
sage #7 #426147
>>426142
это потому что ты пидор.жпг
sage #8 #426149
Проиграл с крестокретинов. Какой язык — такие пользователи.
#9 #426159
>>426149
Это хейтеры и неосиляторы провоцируют
sage #10 #426203
>>426159
Разумеется, тот кто ответил на большую часть постов в предыдущем треде - хейтер и неосилятор. В этом не может быть сомнений.
#11 #426219
>>426109
Видел но там нет 2-3х последних постов в которых мне ответили, и нигде нет... А я не сохранил.

Продублирую вопрос:
Есть один класс в нем есть map

typedef struct NewStruct{
unsigned id;
} STRUCTAZAZA;
typedef map<size_t,NewStruct> NewType1;
class class1
{
NewType1 _mapStorage;
}

Как правильно организовать доступ к _mapStorage соблюдая инкапсуляцию, или просто нахер её и набыдлокодить прямой доступ к переменной класса?
Доступ из стороннего (не наследуемого класса)
Няша, кто отвечал мне ответь ещё раз!
sage #12 #426225
>>426219
Сука, как ты заебал уже меня. Но ладно.
Короче, если тебе нужно только читать эту переменную, не меняя ее, то делаешь public метод:
const NewType1 &mapStorage() const { return _mapStorage; }
При этом возвращается ссылка, что позволяет избежать создания копии.
Если надо и читать, и изменять, то добавляешь еще один public метод:
void setMapStorage(const NewType1 &x) { _mapStorage = x; }
По сути это уже получится близко к тому, чтобы просто сделать _mapStorage приватной, но через метод правильнее (пока не вникай, возможно, в дальнейшем с практикой поймешь причину).
sage #13 #426227
>>426225

>чтобы сделать публичной


фикс
#14 #426237
>>426227
Спасибо :3
#15 #426253
Помогите, я совсем у мамы тупенький...

FTPClient->TransferType = ftBinary;
if(SaveDialog->Execute())
{
FTPClient->Get(Listbox->Items->Strings[Listbox->ItemIndex],
SaveDialog->FileName+(Listobx->Items->Strings[Listbox->ItemIndex]), true, false);
ShowMessage("Готово");
}

хочу чтобы сохранялось как с браузера, чтобы имя уже было указанно.
sage #16 #426258
>>426253
Что это за дрисня? Винапи?
#17 #426261
>>426258
забыл сказать, это с++ билдер
sage #19 #426269
>>426261
Хорошо что сказал, а то я уж чуть было не начал помогать.
#20 #426270
>>426269
ну я же не по своей воле... так бы не стал бы таким зашквариваться
#21 #426279
>>426125

Послушай меня по большому счёту. Хочешь? Хочешь?
#22 #426302
>>426100
>>426142
Ебанулись? Должен быть
return 1
sage #23 #426369
>>426279
Хуй в рот ты хочешь.
sage #24 #426385
>>426302
кто тебе сказал, что их жизни были ошибкой?
Vpp #25 #426396
Первый день тут, надеюсь с 8275 раза в тот тред запостил. Мне нужно выполнить следующую задачу:
Взять из файла текст (слова, разделённые знаками препинания и пробелами) и сдвинуть буквы, в каждом слове, влево или вправо, на n символов. Результат записать в файл.

Есть подозрения, что это самый низ и уже существует много готового кода. Собственно нужна помощь (подробный алгоритм действий, ссылки на похожие задачи или даже куски кода).
Сейчас даже не могу из файла вытянуть текст в массив=(
Студент 1 курса, изучаю C++ вот уже 2-3 дня.
#26 #426399
>>426396
Даже если существует функция "взять текст из файла и сдвинуть символы влево", суть твоего задания в том, чтобы написать аналог этой функции самостоятельно.
sage #27 #426406
>>426396
Читай учебник, хуесос тупой. Тут помогают с проблемами в програмном коде, а не генетическом.
Аноним #28 #426407
>>426399
Это верно. У меня нет намерения выполнить всё одной функцией. Ситуация такая, что я не знаю как подойти к вопросу. Я 2 раза перечитал методичку и какие-то кусочки мозаики имеются, но как реализовать их я не знаю. Мне до сдвига ещё нужно добраться. Сейчас пытаюсь понять, как вытянуть строку из файла, для того чтоб можно было дальше ей манипулировать. Как-то так.
sage #29 #426408
>>426407
Преподу передай что он тоже хуесос, раз по его ссаной методичке ничего не понятно. Хотя скорее всего вы оба долбоебы.
Аноним #30 #426411
>>426408
Сокращённая программа обучения, вечернего отделения. Около 20 часов лекций. Вот и думай.
sage #31 #426412
>>426411
Такая программа подразумевает, что ты будешь большую часть изучать самостоятельно. Учебник бери и приступай.
#32 #426415
>>426396

>сдвинуть буквы, в каждом слове, влево или вправо, на n символов


Что это значит? Движение относительное, если ты все сдвинешь на n символов, то нихуя не поменяется.
sage #33 #426427
>>426415
Думаю у него там циклический сдвиг, типа "huy" -> "uyh", хотя вообще да, не очень понятно, что ему надо.
#34 #426441
>>426100
Платиновый вопрос: как правильно начать сразу с c++11? Входные данные: достаточно глубокое понимание железа, программирования в целом, но большой опыт в основном пхп/питон/жабаскрипт. Трогал хаскель, даже что-то работало, немного делал коммиты на С++ в большие проекты, STL использовал, почему пойнтеры после realloc херятся знаю, сортировки написал. Вроде бы всё понятно и просто, функции-типы-классы, но нет уверенности, язык не стал инструментом, пока только как препятствие. Хотелось бы чтобы всё по хардкору, складно, непротиворечиво, внятно, коротко и по делу. Есть такие книги/туторы/волшебные таблетки? Стандарт читать нунахуй.
33 Кб, 527x423
#35 #426443

> Стандарт читать нунахуй.

#36 #426445
>>426443
Он разве не tl;dr? Я как-то пытался вебстандарты читать, понял что гиблое дело.
93 Кб, 2362x1039
sage #37 #426474
>>426441
http://rutracker.org/forum/viewtopic.php?t=4123652
Алсо, пикрелейтед - фичи C++11 относительно предыдущего стандарта.
#38 #426494
>>426443
Но ведь стандарт пишут для разработчиков компиляторов.
#39 #426604
>>426225
А ну-ка поясни мне.
Почему ты возвращаешь ссылку? Нужно возвращать по значению. Ну вызовется один раз конструктор, да. Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти.
#40 #426605
>>426604

>Ну вызовется один раз конструктор, да.


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

>Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти.


Не изменит, там же возвращается константная ссылка.
sage #41 #426608
>>426605
На самом деле может изменить через const_cast,, но это уже на его совести.
А ты >>426604 соси хуй, пока интеллект не повысится.
#42 #426614
>>426494
Читать его нужно для прояснения спорных моментов и понимания устройства языка.
Обычно, такое нужно с уровня regular developer. Senior и выше уже хорошо ориентируются в стандарте.
Аноним #43 #426761
>>426441
По задачке из этого поста.

Считывать и записывать в файл научился. Вопрос: как вывести в string? Я пытался сделать тип char, но он так понял с ней не совместим. Записать в массив получилось(просто создал заведомо больший массив), но толку от этого на практике нету. Собственно вопрос: как записать из файла в строку?
Вот код. И сразу по поводу библиотек - знаю что тут 100% есть лишние, но старался подключать всё, что могло понадобиться.
Код добавлю в следующим посте, не получается из-за какого-то слова из спам листа.
Vpp #44 #426762
\t\tifstream fin;
\t\tfin.open("tfi.txt");
\t\tif (!fin.is_open())
\t\t{
\t\t\tcout << "Такого файла не существует!";
\t\t\treturn -1;
\t\t}
\t\t
sage #45 #426763
>>426761
>>426762
Тебе уже все сказано. Иди на хуй.
#47 #427593
>>426762
Лучше в конструктор путь файла пихать сразу, читабельнее, и нет вероятность, что будет вызваны дефолтные конструкторы внутри класса.
Хотя я не знаю как реализован ifstream, думаю, нормальные С++ погроммисты поправят, если не прав.
Типа
ifstream file(path);
if (!file.is_open()) return -1;
#48 #427594
>>426761
fstream file("1.txt");
if (!file.is_open()) return -1;
string data((istreambuf_iterator<char>(file)), (istreambuf_iterator<char>()));

cout<<data<<endl;

Мне кажется, что это лучший вариант. И работает достаточно быстро.
Если не прав, то пофиксите, пожалуйста.
#49 #427595
>>427594

>ifstream file(file_path);

#50 #427616
Посоны, тред лень читать. Какой компилятор и ide норм под винду, студию не предлагать.
sage #51 #427620
>>427616
TvojaMamka++ и PHPStorm.
sage #52 #427621
>>427594
std::ifstream f("hooy");
if (!f.is_open()) return EXIT_FAILURE;
std::string s;
f >> s;
А у тебя какое-то раскоряченное нечитаемое говно.
#53 #427680
>>427616
студия
#54 #427758
>>427616
qt-creator и тот компилятор, который с ним поставляется (вроде g++)
#55 #427893
>>427621
f >> s; - чтение до пробела. А не всего файла, бро.
std::string s; - вызов дефолтного конструктора, к-й тебе нахуй не нужен тут.
sage #56 #427912
>>427893
Ок, с первым обосрался, не прочел доки. Даже представить не мог, что кто-то может придумать такое бредовое поведение.
А вот на второе глубоко насрать. Даже при использовании SSD затраты на вызов конструктора пренебрежимо малы по сравнению с чтением файла. Зато код читабельнее.
#57 #427939
>>427912
Ну а какой, по твоему, оптимально удобный и читаемый способ прочесть весь файл в строку?

Учитывай, что сначала потребуется узнать размер файла, дабы не перевыделять память сотню раз. В то время, как передавая в конструктор выделение будет сразу, через std::distance.
sage #58 #427959
>>427939
Учитывая уебищность реализации оператора >> видимо, никак, да.
#59 #427964
>>427959
На самом деле можно поставить флаги на игнор пробелов и переходов на новые строки. Тогда будет читаться file>>string.

Но это медленней, чем istreambuf_iterator. Т.к. никаких проверок, типа пробелов и т.п. нет.

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

vector<string> data((istream_iterator<string>(file)), (istream_iterator<string>()));
Вот так, например.

Может где-то не прав, но это быстро и читабельно вполне, при знании STL.
А так всегда рад узнать хорошие способы сделать что-то по другому.
sage #60 #427972
>>427964
Да глупо это, оператор >> должен тупо считать весь файл в строку без всяких проверок. Хз каким местом там думали.
Алсо, нахуя скобки вокруг istream_iterator<string>(file)?
#61 #427991
>>427972
Тут прости, не подскажу.
Есть вариант, что без скобочек он будет считать второй параметр (istreambuf_iterator<char>()) будет считаться как просто объявление переменной.
Но это мои догадки, может и не прав.
#62 #427993
>>427991
А в пакете карп в пакете. Чот я совсем уже ебанулся.
sage #63 #427998
>>427991
Чет ты хуйню городишь.
vector<string> data(istream_iterator<string>(file), istream_iterator<string>());
прекрасно работает.
#64 #428002
>>427998
С istreambuf_iterator<char> нет. Я про чтение в строку. С стрингом и так всё ок. Это да.
sage #65 #428008
>>428002
Чет я не догоняю, о чем ты говоришь. Я про скобки вокруг istream_iterator<string>(file) и istream_iterator<string>(), а ты про что?
#66 #428334
Посоны, помгите. Что я не так делаю?
http://ideone.com/XBKdid
Он же должен унаследовать все конструкторы.
sage #67 #428344
>>428334
Конструкторы не наследуются. Вообще никак. Надо их определять вручную в каждом классе-потомке. Самого это ужасно раздражает.
#68 #428346
>>428344
Ну ладно, накидаю свой через инитиализер лист.
#69 #428367
>>428344
Шёл 2015 год.
#71 #432727
Поясните начинающему крестопетуху, почему в приведенном примере ни copy-конструктор, ни move-кщнструктор не вызывается?
Т.е. в моем понимании, для С++98 должен вызываться в этой ситуации копи-конструктор, а для С++11 - move-конструктор.
http://pastebin.com/AkWcth1z
#72 #432736
>>432727
Вроде разобрался, компилятор выоптимизирует вызов конструкторов нахер.
#73 #432774
>>432736
Это называется Return Value Optimization.
#74 #432775
>>432727
Кстати у тебя move конструктор не правильный. Его аргумент не должен быть константным.
#75 #432838
>>428367
Точно, а это еще в 11 году добавили.
sage sage sage #76 #432855
По4ему, блять, С++ такой, сука ВОНЮ4ИЙ? ЕКСТЕРНАЛ ЛИНКЕД ЕРОР))) АНРЕСОЛВЕД ЛУНКЕД СУМБОЛ)))))) один ЭКСТЕРНАЛ, блять, ОХУИТЕЛЬНЕЕ другого.
Почему, блять, ебучий СТРУСТРУП и КОМПАНИЯ™ фокусируются на всяком говне, но не могут сделать нормальную линковку в языке? Почему у языка нету единой реализации? Почему С++ такое говно?
sage #77 #432873
>>432855
Это все для того, чтобы долбоебы типа тебя туда не лезли.
#78 #432877
>>432775
Согласен, спасибо. (например, чтобы менять на nulptrl указатели, которые мы перемещаем из rvalue-объекта).
#79 #432880
>>426826
Кстати, за второй пик.
Сегодня напоролся. Нормально за с++11 поясняет?
Первое издание читал, офк.
sage #80 #432882
>>432880
Нахуя вы эти книги пачками читаете? Больше практики и все само придет, ничего там такого уж охуенного нет, в книгах этих. Многие решения вообще крайне сомнительны. То, что их умеют грамотно и к месту применять авторы, не значит что другим они тоже подходят. У всех свой стиль, как и в литературе, например.
sage #81 #432884
>>432882
Ну, просто стандарт лучше детальнее прочту. Я читаю обычно только по тому, что интересует.
тем более там материал занимает 60 страниц(скачал только что).
Заранее прошу прощения за сажу, мне лень ее отключать. Спокойной ночи.
#82 #432886
>>432774
Пидорское говно, нарушающее as-if принцип
#83 #432903
>>427616

>студию не предлагать.


Почему?
#84 #433056
>>432886
Это можно легко выключить, если тебе так не нравится.
#85 #433090
>>432727
потому что если хотел предсказуемого поведения, то надо было писать на Pure C.
#86 #433106
>>426100
На пикче наверное должно быть "I made their lives ...".
sage #87 #433115
>>433106
Слишком жестоко.
#88 #433146
Приложение генерирует картинки. Генерирует быстро, от 10 до 500 в секунду.

Мне нужно из картинок получить .avi файл. DitrectShow подойдёт? Там есть всё нужное?
#89 #433147
>>433106
Автор пикчи вообще не шарит. return 0 - это мирное, удачное завершение.
Проблемы с кроссплатформенностью #90 #433155
У меня проблема с кроссплатформенностью. Пилю одну тулзу для поиска объектов на видео с использованием OpenCV.
При этом под виндой и линуксом вызов опенцвшного метода выдает разные результаты. Совсем чуть-чуть разные, отличаются в 14 знаке после запятой. Такое впечатление, что виндовая версия имеет чуть меньшую точность - разница как раз выглядит как округление. То есть под линуксом я получаю
1.07159721374511718750000000000000e+02
а под виндой
1.07159721374511720000000000000000e+002

Нужно чтобы результаты были одинаковы. Что может быть причиной?

Под виндой компилю 2010 студией, под линуксами gcc 4.6.3
OpenCV в обоих случаях собран из исходников там же.

ЧСХ, джава-версия, работающая с opencv через jni, выдает одинаковые результаты на обеих платформах. Так что я даже не знаю что думать, ведь если бы проблема была внутри нативного кода опенцв, то она проявлялась бы и под джавой.
#91 #433156
>>432855
Потому что Name Mangling делает линковку ущербной и ломает ABI, но кресты такие by design, откажись от перегрузки функций и операторов и будет тебе щастье
#92 #433157
>>433155
компилируй на винде с помощью MinGW, у студии компилятор древнее говно мамонта
#93 #433162
>>433155
ещё, кстати, в винде libc содержит сюрпризы, и ведёт себя не всегда в соответствии со стандартом(например, позволяет извлекать квадратные корни из отрицательных чисел, вместо того, чтобы вернуть EDOM)
#94 #433168
>>433162
В винде есть Win32 API. Нахуй мне это скучное однообразное говно libc?
#95 #433169
>>433168
ты думаешь Win32 API не использует libc?
#96 #433171
>>433169
Использует. Но если так, то, наверное, майкрософтовцы для чего-то так сделали, что libc не так работает? Может, так нужно для винапи.

А если нет винапи - то и с самым идеальным libc хочется заняться чем-то другим, кроме программирования.
#97 #433173
>>432886
>>432886
Нет, это ты пидорское говно, которое не умеет читать стандарт. Там явно перечислены случаи copy elision. И вообще если объект действительно не перемещается, то какого хуя он должен создавать побочные эффекты? Если ты на это рассчитываешь — у тебя проблема с дизайном. Алсо мув конструктор и прочие друзья будут вызваны если объект действительно будет перемещен.
#98 #433175
>>433171
С glib2/boost и OpenGL/SDL можно жить и без WinAPI.

Хотя, если честно, то WinAPI самый вменяемый из фреймворков что есть в стандартной поставке с виндой.
#99 #433180
>>433157

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


но не старше твоей мамаши-шлюхи же
#100 #433221
>>433175

>glib2/boost


>OpenGL/SDL


Так нормальные люди идут в программирование не потому, что хотят заработать или это модно, а потому что им это интересно. И я совершенно не понимаю, что может быть интересного в программировании с теми библиотеками, что ты назвал. Да, жить можно, но это не жизнь, после часа хочется бросить программирование от безысходности.
#101 #433405
>>433221
Не, ну SDL няшен, просто делает что сказали. Остальное говно, да.
#102 #433410
>>426100
чо мне делать хачу русек в сонсольке
сам в GCC на сперме сежу
помогите пжлста
оче нада
#103 #433424
>>433410
говарят типо библеотека есть utf8.h
#104 #433433
>>433410
пошли нахуй пидары
от вас зимой снега недождёшься
setlocale( LC_ALL,"" );
76 Кб, 793x807
#105 #433618
>>426219

>C++


>typedef struct ... { ... } ...;

13 Кб, 514x451
#106 #433639
>>433169
И где?
sage #107 #434849
>>433155
Что-то подобное было, но там была другая библиотека, шарп (хотя внутри скорее всего те же плюсы) и шиндоус 7,8.
33 Кб, 475x356
#108 #434972
Учу с++ по старым книгам и на Ubuntu. Книга по которой учу для devc++(windows). компилятор g++ gcc версия 4.6.3.
Не пойму как инициализировать в объекте статичный член static ( не static const)?

когда пытаюсь обратится к статичному члену получаю ошибки
g++ -Wall -o "staticclassmember" "staticclassmember.cxx" (в каталоге: /home/cxx)
/tmp/ccm1AmMf.o: In function `main':
staticclassmember.cxx:(.text+0x24): undefined reference to `Student::noOfStudents'
collect2: выполнение ld завершилось с кодом возврата 1
Сборка завершилась с ошибкой.
15 Кб, 200x300
#109 #435004
>>434972
мимо-гвидо
58 Кб, 400x300
#111 #435117
>>435110
int A::b = 10;
т.е. static данные всегда публичные? Они существуют даже без инициализированного объекта? Я уже думал в стандарте какие изменения появились.
#112 #435118
>>435004
создатель Pythonа же.
#113 #435133
>>435117
Нет. Приватные тоже так иництализируются, но доступа к ним вне класса нет
#114 #435210
окна C::B mingw4.7
компилю пустой консольный exe (int main return 0;) 7кб релиз.

однако если присутствует #include <iostream>, то даже без вызова cout релиз становится 467кб

пробывал:
-s
-Os
-fno-rtti
-fno-exceptions
-ffunction-sections
-fdata-sections
-flto

как не перебирай итог толще 400кб.. на то чтоб разобраться как использовать -shared-libgcc уже опустились руки, трое суток бесполезного гугления

читал мол, что если нет вызова функции принадлежащей заголовочному файлу, то код опускается ... вероятно #include <iostream> заставляет вшить целиком какую-то откомпилированную библиотеку или типо того, но как тогда правильно вызвать заголовочный файл?

Может и нормально, что программа с "стандартным для с++ вводом/выводом" весит минимум пол метра, но может есть тогда схожие по удобству альтернативы?
#115 #435307
>>435210

>mingw


Это.
На винде качай студию и не выёбывайся.
#116 #435447
Привет всем в этом чятике. Я школьник, лежу дома на больничном, ощущаю острую потребность полезных свершений. В частности, хочу познакомиться с c++, понятное дело, не с нуля. Но проблема в том, что я совершенно не представляю, куда направить свои старания. Ведь ты не изучишь программирование по книжкам. Короче, что необходимо написать каждому сишнику, чтобы прийти к успеху. Алсо, помню какие-то рулеточки с набором "хеллоуворлдов" уровня калькуляторо в и конвертеров валют.
1885 Кб, 400x407
#117 #435523
>>435447
Учи C++11 и STL. Пили свои реализации всяких структур данных, онанируй на красивый код.
#118 #435538
Доставьте пикчу-лайфхак "как правильно оформлять код"
#119 #435561
>>435538
class MOYKLACC : public NEMOYKLASS { public:
MOYKLACC(NEMOYKLASS RODICH = NULL) : NEMOYKLASS(RODICH) {}
~MOYKLACC() {}
/
VSE */
};
#120 #435563
>>435307
Хуле тебе мингвуша не нравиться?
Ты охуел что ли?

А как же свобода. А как же поебаться с make?
Ты чо, не труЪ что ли?
#121 #435588
>>435538
повышай плотность
вот и все
#122 #435589
>>435523

> Учи C++11 и STL


Это доки Страуструповские и иже с ним читать? Или есть что-то более научно-популярное?
#123 #435592
Посоны, в вашем гайде сказано, что кресты надо учить 8000 академических часов. Это как-то... Угнетающе. Блядь.
#124 #435602
>>435589
С++11 у Страуструпа ты вряд ли найдешь.
Хотя точно не знаю.

Начни хотя бы с обзорной статьи на хабре или wiki.
#125 #435603
>>435592
А то.
Тебе нужно знать все-все.

От union до лямд.

Учи учи.
#126 #435605
>>435602
Не, эти знания у меня уже есть. Всякие циклы, операторы ветвления я напишу без подсказок, но это же ни о чем, а дальше уже глаза разбегаются.
#127 #435609
>>435605
Ну что-то конкретно тебе интересно?

Мне вот графика. Я начинал сразу с OpenGL.

И кресты учитшь, и GLSL еще (который как бы диалект Си).
#128 #435610
>>435603
Да ну вас нахуй.
#129 #435614
>>435609
Окей. Допустим, я начинаю пилить графическую йобу на OpenGL. Банальный вопрос: есть что конкретное почитать или самому гуглить?
#130 #435615
>>435610
Ну тогда тебе в соседний тред к змеедушителям.

Они там тебя за утиную типизацию пояснят и по циклу в кортеже пустят. А потом еще и декораторов навесят, ну что бы совсем красиво.
#131 #435623
>>435614
Короч, есть книги по 2.0. Их мало, и ты найдешь их.
Но твоя цель - 3.0 минимум.
Инфы на русском очень мало.

Старой книги тебе хватит что бы понять за конвейер и как его программировать.

Дальше уже придется читать официальные доки на английском.
#132 #435682
>>435623
Нарыл этого парня. Фуфло или пойдет?
http://opengl-tutorial.blogspot.ru/p/blog-page.html
#133 #435689
>>435623

> 3.0


> Инфы на русском очень мало.



Но ведь уже 4.5 есть!
#134 #436132
>>435682
пойдёт. по-моему это перевод antongerdelan.net/opengl
#135 #436196
Братишки, ситуация следующая. У меня имеется матрица m x n значений int от 0 до 239. Я хочу считать её и создать 256-цветный .bmp файл градаций серого размером m x n.

Так вот, ну я создал тестовый файл .bmp 3 x 2 пикселя, открыл его HEX-редактором в notepad++ и ничего не понял, конечно же. Потом создал 2 монохромных файла из единственного пикселя 1 x 1, один чёрный, другой белый, два весёлых гуся. Отличаются, естественно, они на один один символ, который расположен ближе к концу файла.

Но это мне никак не помогает понять, что происходит. Кто-нибудь может привести кол для создания маленького bmp=файла?
#136 #436228
>>436196
Там же шапка-хуяпка-заголовок, задающая битность, наличие RLE-сжатия и т. д. С бинарными форматами обычно долго разбираться, лучше возьми готовую библиотечку.
#137 #436232
>>436196
Аутист ты вообще гуглил прежде чем эксперименты производить?
#138 #436238
>>436228
>>436232
Ну да, гуглил. Что-то не ахти.

http://docs.opencv.org/search.html?q=bmp

далее по второй ссылке: http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=bmp

Но там bmp в тексте только один раз встречается. Вот я и прошу помочь, туда я вообще копаю или нет. Наверняка же хоть кто-то занимался этим.
#139 #436266
>>436238
блять, ну вот и пользуйся opencv! или WinAPI. или еще хоть чем.
смотри, ты задаешь довольно тупые вопросы на дваче, но при этом надеешься самостоятельно реализовать чтение\запись формата bmp.
#140 #436268
>>436266
Я тебе ещё раз повторю, что ctrl+f находит единственное упоминание bmp. Я не понимаю, где и что мне читать. Где? Что? Ладно, я конкретизирую вопрос. Пускай имеется массив

int[] twenty = {1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5};

Хочу создать bmp файл градаций серого (0%255) размером 2 x 10. МОЖНО МНЕ ПРОСТО ПРИМЕР, ГОТОВЫЙ КУСОК КОДА? Уж как-нибудь разберусь, что там какая шапка значит.
#142 #436304
>>436281
Ну и? Куча говна по ссылке. Какие-то DWORD, windows.h и прочее говно. ЭТО ЧТО БЛЯДЬ ТАК СЛОЖНО? - Просто показать кусок кода, который через потоки пишет всё это дело.

Bytes 0-1: Magic word. It contains the letters 'B' and 'M'.
Bytes 2-5: Double word. File size.
Bytes 6-10: No idea. Leave this zeroed.
Bytes 11-14: Double word. Start of the bitmap.
Bytes 15-18: Double word. Size of the header. Normally set to 40. The header is considered to start at offset 15.
Bytes 19-22: Double word. Width.
Bytes 23-26: Double word. Height.
Bytes 27-28: Word. Planes. Must be 1.
Bytes 29-30: Word. Bits per pixel. You'll need this as 24.
Bytes 31-34: Double word. Compression. Leave it as zero.
Bytes 35-38: Double word. Compressed size. Since there's no compression, this value will be the same as file size.
Bytes 39-42: Double word. Horizontal resolution. See below.
Bytes 43-46: Double word. Vertical resolution. Pixels per meter, according to Wikipedia. The values seem to vary, but 2835 should do for both.
Bytes 47-50: Double word. Number of colors in the palette. Leave as zero.
Bytes 51-54: Double word. "Important colors". Leave as zero.
Bytes 55-EOF: Bitmap.

Вот я прошу пример КРОССПЛАТФОРМЕННОГО кода, который не использует никакого такого говна. Неужели непонятно? Знал бы я C++, я бы сам написал.
#143 #436311
>>436304
ты неадекватный какой-то или зеленый, иди-ка лучше нахуй.
#144 #436318
>>436311

Тут еще злой пидор есть, с эмейлом в нике. А этот еще ничего.
#145 #436323
>>436311
Я неадекватный, потому что я банально не понимаю, что происходит. Ну вот приведу примеры ещё из гугления:
http://www.cplusplus.com/forum/beginner/4307/

Здесь байты 0 - 54 (55 байтов, верно?) отвечают за всякие хэдеры и прочее.

С другой стороны, вот здесь код:
http://stackoverflow.com/questions/2654480/writing-bmp-image-in-pure-c-c-without-other-libraries

FILE f;
unsigned char
img = NULL;
int filesize = 54 + 3wh; //w is your image width, h is image height, both int

Почему 54-то? Почему не 55? Вообще уже не воспринимаю.
#146 #436376
>>436323
тебе ссылку дали даже на википедию, там структура BITMAPINFOHEADER описана, блять, последнее поле - оффсет 50, размер 4, сколько байтов, сука?
нет, хочу жрать говно!
385 Кб, 1479x1053
sage #147 #436396
Написал борду на крестах (CppCMS+ODB+Qt+libcurl). Такие дела.
#148 #436424
>>436396
ну чо, молодец, теперь перепиши всё на Си
#149 #436439
>>436376
Ого, спасибки. Ну тогда разберём по частям, не мною написанное.

>Here is a C++ variant of the code that works for me. Note I had to change the size computation to account for the line padding.



http://pastebin.com/zu1WH6yt

>unsigned char file[14] = {


> 'B','M', // magic


> 0,0,0,0, // size in bytes



>...



>file[ 2] = (unsigned char)( sizeAll );


>file[ 3] = (unsigned char)( sizeAll>> 8);


>file[ 4] = (unsigned char)( sizeAll>>16);


>file[ 5] = (unsigned char)( sizeAll>>24);



Объясни, что за волшебство происходит здесь. Так подозреваю, что что-то связанное с

>All of the integer values are stored in little-endian format (i.e. least-significant byte first).

sage #150 #436441
>>436424
А потом на ассемблере.
Сложнее всего веб-парашная часть, кстати. Дизигн, CSS, вот это все. Больше всего времени потратил, и все равно кривовато отображается.
#151 #436494
>>436439

>>All of the integer values are stored in little-endian format (i.e. least-significant byte first).



целочисленные типы могут по-разному представляться в памяти - либо когда в нулевом байте целого старшие разряды числа, либо когда младшие. здесь в явном виде представляют число в little-endian формате. если просто записать число в файл в бинарном виде, оно запишется в соответствии с архитектурой компьютера, не обязательно литтл-ендиан.
последний раз тебя покормил.
#152 #436509
>>436494
Я не спрашивал, что такое формат записи числа, я спрашивал про синтаксис

>(unsigned char)( sizeAll ) (unsigned char)( sizeAll>> 8) (unsigned char)( sizeAll>>16) (unsigned char)( sizeAll>>24)



Что это вообще за >> и что оно делает.
#153 #436516
>>436509
Уточню вопрос: почему побитовый сдвиг идёт на чар, а не на унсигнед инт8. C++ у нас в конце-концов или что?

Ну и по синтаксису поясните, не лучше ли через касты делать?
#154 #436536
>>436516
Char == int8
#155 #436537
>>436536
В большинстве случаев.
#156 #436604
>>426100

>return 0;


А что не так? Ведь это удачное завершение в Win32 API.
мимо_1С-ник.
#157 #436607
>>436604

>завершение

#158 #436617
>>436607
Но на оп-пике не нормальное завершение.
#159 #436624
>>436536
>>436537
Вы, ребят, издеваетесь наверно. Ни оидн ещё не овтетил на мои вопросы. Сами придумываете вопросы и сами на них отвечаете. Я спрашиваю, не лучше ли uint8_t вместо unsigned char, а вы мне говорите, что это почти одно и то же. А то я не знаю. Но стандарт BMP-шный пишется в определённое количество 8-битных байт. Стало быть, uint8_t лучше?

И синтаксис непонятен. Это уже вопрос чисто по языку. Вопрос тоже по кастам.

>file[ 3] = (unsigned char) (sizeAll>> 8);



Не лучше ли написать:

>file[ 3] = static_cast<uint8_t>(sizeAll>> 8);

#160 #436635
поясните за Джонс Рассел: Программирование ASP.NET средствами VB.NET , его нигде нет в открытом доступе
#161 #436667
>>436624
Это одно и тоже.
Си-каст сначала делает статик-каст.
Для uint8_t нужен отдельный хедер.

Чисто формально, для строгого указания на 8 бит нужно использовать uint8. Но общая практика показывает, что почти всюду используют unsigned char.
#162 #436669
>>436635
Туда ли ты зашёл, петушок?
#163 #436720
>>436669
кудах
196 Кб, 1280x1024
#164 #436887
Посоны, объясните за умные указатели, те самые которые якобы делают плюсы недерьмом. Правда что они потокобезопасны? Это что значит что при каждом дереференсе дергается мьютекс? И во сколько раз тогда это медленнее обычного указателя? в 100? в 1000? Может тогда лучше сразу на гвидоне писать? Такое то "не нужно - не плати" охуеть просто.
#165 #436894
>>436887
shared_ptr потоко-безопасен на чтение из разных потоков. Как и обычный указатель. Никаких мьютексов там нет.
Но если где то есть запись, то нужна внешняя синхронизация - мьютекс или atomic.
Так что при корректном использовании никакой потери производительности нет.
За подробностями можешь сходить в гугл с запросом c++ shared_ptr thread safety.
#166 #436947
Быстрый вопрос. Мне даются на вход шахматные позиции в виде A5, E6
Как мне их лучше всего преобразовать в координаты элементов двумерного массива. На паскале бы я говнокод с ord'ами накатал, но ведь наверняка в таком классном языке есть короткие способы. Тем более под рукой сейчас только студия
#167 #436950
В чём отличие указателя от ссылки?
#168 #436953
>>436947

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


А координаты в каком виде?
#169 #436954
>>436953
Ну, банально. A1 - это [1][1]; C7 - это [7][3]
Кстати, встал еще один вопрос по ходу решения задачи. Как мне матрицу смежности для ходов коня по шахматной доске составить?
#170 #436957
>>436950
Ссылка это разыменованный всегда проиницализированный константный указатель.
#171 #436959
>>436954
Кастишь первый символ в char, вычитаешь 'А'. Второй символ можно преобразовать в инт через stoi и вычитаешь 1, а можно, как и первый, кастить в char и вычитать '1'.
#172 #436960
>>436959
Не забывай, что в с++ индексация с нуля.
#173 #436962
>>436960
Да, действительно. Спасибо
37 Кб, 423x638
#174 #436964
Написал сейчас внутри мейна
double (f)(double) = [](double x) { return xx; };
cout << f(3) << endl;

И это говно взлетело, чего я совсем не ожидал. Понятия не имею как это работает, такое вообще правомерно писать?

Исправьте/поясните как нужно делать. В идеале задача очень простая, создать массив из N указателей на функции многочлены вида 1, x, x2, x3...
21 Кб, 414x223
#175 #436967
>>436964
Звёздочки проебались, кину лучше скрин.
Поясните, как это работает? Эта лямбда-функция (или как её там) остаётся где-то в памяти? А f на неё ссылается? Как тогда нормально удалить указатели и всё в таком духе.
#176 #436968
>>436957

Спасибо
утром вникну и разберу по частям твой ответ
#177 #436972
>>436967
Это лямба функция, ты прав.
А вот double (звезда f)(double) это указатель на адрес начала функции.
Т.е. какой-то вариант, типа:
https://ideone.com/AVWKBi тоже работает, ибо ты берёшь именно адрес функции.
Обычно их хорошо оборачивать в typedef.
Например так:
https://ideone.com/tDD40w
Если что-то не так сказал, то поправьте.
А лямбду почитай в вики всяких. Это по сути та же функция.
129 Кб, 250x334
#178 #436977
Не знал где написать, поэтому напишу здесь. В общем, анон, у меня проблема с структурами данных точнее с заданием: я знаю что есть векторные стек, очередь и дек и связные списки, графы и деревья. Так вот, анон, у меня задание написать ВЕКТОРНЫЙ СПИСОК. Что это такое и с чем его едят?
#179 #436980
>>436977
Это vector.
#180 #436982
>>436977
есть векторный список, есть связный
векторный - это vector, связный - это list
#181 #436986
>>436980
>>436982
Есть у вас код реализации минимальной add, delete? Я так понимаю это обычные массив с плюшками разными?
#182 #436990
>>436986
массив с динамической длиной
т.е. если добавляешь элемент, а места уже нет - выделяется новый кусок памяти (обычно по размеру равный текущему, умноженном на константу (1.5-2)), туда копируется все из текущей памяти, а потом все мочится в текущей и массив живет уже на новом месте, но со свободным хвостом. в stl-реализации capacity вектора никогда не уменьшается.
в остальном это обычный массив, непрерывным куском лежащий в памяти.
#183 #436996
>>436990
Спасибо
#184 #437050
>>436957

Понял!
151 Кб, 1456x1052
sage #185 #437262
Ну что же вы, хватит уже байты ебать, зацените борду. Не зря же я ее писал. Хотя кого я обманываю.
https://ololoepepe.me/board/b
https://github.com/ololoepepe/ololord
#186 #437365
>>437262
Норм. Не зря напилил.
Хоть и всем похуй, кроме твоего возросшего скилла и времени потраченного с интересом.
Я так же пили сайт для своего бота. Правда я пилил на апаче с CGI на крестах.
#187 #437374
>>437262
ты пидорас чтоли?
2058 Кб, 3264x2448
#188 #437408
>>437262
С кем я, блядь, сижу на одной борде?
sage #189 #437498
>>437374
Нет. Пидора ответ, азазаззаза.
>>437408
Что не так то? Переоделся разок, поржали с пацанами.
326 Кб, 1363x1400
#190 #437557
Распишите мне мастрид по C++, что читать кроме стандарта?
sage #191 #437558
>>437557
Пиши код, блять. Заебали читуны. Просто бери и пиши код, гугля все непонятное. Голая теория ничего хорошего не даст.
1588 Кб, 1835x2800
#192 #437576
>>437558
Я не хочу быть такой макакой как ты блядь, я хочу знать почему при создании new int() мы получаем переменную с нулем внутри, а при int x с говном внутри, и еще много подобных мелочей о которые ты будешь постоянно натыкатся и гуглить. Кокококудах теория нинужна иди нахуй.
#193 #437577
пасаны, выручайте. У меня проблема с консольным приложением. Хочу уметь загонять в вектор текст, состоящий из char'овых символов (принципиально char'овыми).
Есть ли аналог функциям gets(%имя символьного массива%) или cin.getline(%имя массива%, %его размер%). для векторов? Иными словами: нужно, чтобы программа после запуска приглашала пользователя на ввод текста (с пробелами) и текст этот записывала в тот самый безразмерный на данный момент чаровый вектор.
#194 #437578
>>437577
Тебе нужно чтобы введенный текст посимвольно был в векторе, кроме пробелов? Говори нормально блджад.
#196 #437588
>>437578
не не, мне нужно, чтобы весь введенный текст (а текст может содержать пробелы), записывался в char'овый вектор, размер которого изначально не указан
#197 #437589
66 Кб, 1356x615
#198 #437592
>>437582
товарищ, либо я тупорылый, либо MVS не едет. Чо то у меня не пашет. пачму? =(
#199 #437595
>>437592
птамушта инпут незакончилсяя Ctrl+z Enter
#200 #437596
>>437595
ох нихуя себе, чо тут можно делать. спасибо за помощь
sage #201 #437625
>>437576
Ты не запомнишь все эти мелочи без практического применения. А я столкнусь, нагуглю и запомню. Теория нужна для практики, без практики она на хуй не нужна. В универах вас учат матану не для того, чтобы умничать на бордах, а чтобы решать вполне практические задачи. И тут так же.
630 Кб, 2099x2978
#202 #437657
>>437625
Я не предлагаю учить все это наизусть. У всех подобных неочевидных мелочей есть органичное обьяснение, вытекающее из истории языка.
А матан вообще для души, практических применений я пока не вижу.
#203 #437681
у меня крче второй семестр начался, и я вас тут всех заебу. опять трабл с консольным приложением: не могу в кейсе switch'a создать массив и заполнить его. в ходе выполнения программа просто пропускает операторы в нужном кейсе и завершает работу. пачму?
И еще, есть ли выгода объявлять переменные в кейсах switch'а, али память выделяется в процессе компиляции под все переменные, массивы и т.д вне зависимости от того, где они стоят??
#204 #437692
>>437681
Если у тебя выполняется несколько кейсов, то значит ты забыл про break;
Выделять память в кэйсах имеет смысл. Например для какого-то действия тебе нужен буффер.
Выделится она только в том случае, если этот кейс был активирован. По аналогии с функциями, только другая область видимости.
#205 #437693
>>437681
И лучше свой кидай. Например с https://ideone.com/ или пасты.
#206 #437694
>>437692
не не, break'и на месте, блок кейса, где объявляю массив char'овый и вызываю его заполнение gets'ом в фигурных скобках.
#207 #437695
>>437681
Запиши код case-ев в {}. Так ты создашь новый scope для каждого case-а.
#209 #437702
Каким компилятором вы пользуетесь?
#210 #437703
>>437696
Когда создаешь свое консольное приложение, выбирай пустое, и создавай main.cpp сам. Без stdafx.h. Всегда гугли C++ way вместо сишки. Единственный верный main - int main. Используй <string> вместо параши с strlen. Нахуя windows.h?
После того как я все это исправил case заработал нормально.
#211 #437704
>>437702
MinGW-w64, MinGW, GCC, Cygwin.

Для нек-х ПРОДЖЕКТОВ студийным.
#212 #437716
Инфята, начинающий прогер, как рисовать на С++, OpenGL нужен ли обязательно?
#213 #437719
>>437716
Чо несёшь, бро?
Что тебе рисовать надо?
Про движки слышал? Про формошлёпство?
#214 #437728
>>437719
Систему координат
#215 #437729
>>437719
Или например конфигурационная сетка и декартова система координат
21 Кб, 720x400
#216 #437738
#217 #437741
Посоны, надо напечатать длинную строку из частей. Что лучше - вызывать std::cout для каждой подстроки, или сначала склеить в один string, потом вызвать один раз std::cout?
#218 #437748
>>437741
Наверное, второе, предварительно string::reserve-ив длину склеенной строки.
Но не принимай на веру, я хуй.
#219 #437759
>>437748
внезапно
cout many strings: 1.176
cout long string: 1.127
cout long string reserved: 2.201
#220 #437763
>>437728
>>437729
Прости, я сначала не понял что ты имеешь в виду. Значит тебе нужно рисовать линии. Opengl не обязателен. Все зависит от того где ты будешь запускать свою программу. Проще всего будет взять какой нибудь кроссплатформенный движок типа SDL и нарисовать на нем.
#221 #437765
>>437759
Говорил же хуй.
sage #222 #437780
>>437657
Ну все ясно тогда с тобой. mp3 кодируется, конечно же, не на основе матана, а исключительно при помощи святого духа. Ну, манямирки это дело личное, хуй с ним.
А объяснения проще загуглить, чем читать субъективное мнение очередного пропиаренного старпера. Какой бы он ни был охуенный, у него свой подход, а у тебя свой, и для тебя твой подход всегда будет лучше.
#223 #437781
>>437780
Какой подход, какой mp3, поехавший? Обьяснения можно загуглить, а можно почитать людей, которые сами пилили этот язык. Второе всяко лучше первого.
И да, когда мне понадобится кодировать в mp3, я возьму готовую билиотеку.
sage #224 #437795
>>437781
Ты тупой? Я про применение матана.
#225 #437816
Доброй ночи, снова выхожу на связь. Вопрос к тем кто знает (сталкивался на практике) или хорошо знает стандарт 11 стандарт. 11, подчёркиваю, как-никак 2015 год на дворе.

http://www.cplusplus.com/reference/ostream/ostream/write/

>ostream& write (const char* s, streamsize n);



Вопрос следующий: если передать параметр n == 0, то:

1) просто ничего не запишется;
2) кинется какое-нибудь ебанутое исключение или ещё что-нибудь;
3) что-то другое (что именно?).

Спасибо.
#226 #437862
>>437816
Ничего не запишется
#227 #437876
>>437795
Нет это ты тупой, пожуй говна.
sage #228 #437879
>>437876
Засчитано. Макака попытался оправдать подмену программирования чтением, но соснул, когда кукарекнул про неиспользование матана в жизни. Все, на хуй послан, чепуш.
#229 #437881
>>437879

>работаешь с первого курса


>какой то чепушила который НИЛЮБИТ ЧИТАТЬ доебался на реквест литературы


>фантазирует и называет макакой


Все ясно с тобой.
#230 #437882
>>437862
О, заебись, спасибо. Умеют же сделать для людей.
#231 #437885
>>437816
зачем задавать такие вопросы или рыться в документации
стандартная библиотека - это обычная библиотека
подключаешь ее отладочную версию, в ide ставишь брейкпойнт на функцию и смотришь что у нее там в потрохах
ну либо просто переход к определению делаешь
sage #232 #437886
>>437881
Так я тоже работаю, со второго правда, в этом году диплом. И читать люблю, но не бесполезные простыни ака учебники, а краткие и по делу написанные статьи. Твой аргумент инвалид. Кем работаешь?
#233 #437935
в чём преимущество String над string и наоборот?
#234 #437943
>>437935
тем, что std::string - это часть стандарта С++, а String - я хуй знает, что такое, скорее всего, ты про какой-нибудь класс из MSVC++.
вообще не вздумай учить ничего сверх стандарта, пока нормально хотя бы с ним не освоишься. отключай в компиляторе все свистоперделки, которые не являются стандартом.
#235 #437945
>>437886
Уборщицей js-макака.
ПЛАТИНА #236 #437974
Господа, платиновый вопрос в треде. Обгуглился-обстэковерфлоуился досыта, приемлемого решенря не получил. Суть вопроса: я капризная манька, которая хочет, чтобы функция возвращала указатель на созданный в ней же массив, который инициализируется через { ... , ... } в момент объявления (я так хочу).

Есть вариант решения: static перед объявлением. Рабочий вариант, но тут начинаются философствования на тему "оно же не сотрётся из памяти, как же не сберечь байтиков-то".

Имеются ещё тривиальные варианты, кроме хитровыебанных паттернов в стиле Александреску. Языка программирования, да что там, самого программирования не знаю, поэтому если предложите вариант, то с простым примером.
sage #237 #437977
>>437945
Надеюсь это ты ответил, а не кто-то за тебя. Так вот. А я успел и фронтендом позаниматься (HTML/CSS/JS), и жабовым бэкендом. Очень быстро перевелся на крестовый проект, в одного пилю. Так что тоже кое-что смыслю. Ты в общем не обижайся, я ж не со зла, просто реально мало толку с книг. Скачал как-то несколько модных, пролистал, понял, что многое и так уже сам использую, даже не зная названия паттернов/приемов.
#239 #437998
>>437980
удалять кто будет блять? возвращай смарт-птр
sage #240 #438005
>>437998
В условиях задачи нет этого, иди на хуй. Смарты для слабаков, у меня и без них ничего не течет. Нехуй где попало в куче выделять, контейнеры и так за тебя это делают.
#241 #438008
>>438005
Штоа? Какие контейнеры? Ты ебанутый?
Как начать делать? Аноним #242 #438012
Собственно у меня возник вопрос, как сейчас лучше всего и правильнее будет изучать C++? В шараге сдавал лабы и все такое без каких либо проблем, сейчас хочу сам изучать C++, и у меня сразу возникли траблы, потому что совершенно не знаю что мне делать, не знаю какие программы писать и так далее. Кто может объясните нубу что делать и как двигаться дальше.
#243 #438013
Посоветуйте книгу/уроки/методичку по WinApi, читаю Ритчера "Windows via C++" там даются общие фундаментальные основы в начале, нужно еще что-то с упором на практику.
sage #244 #438021
>>438008
Ну смотри, ебана. Можно сделать char *govno = new char[9000];
А можно: std::string zebok;
Во втором случае тебе не надо думать о выделении памяти и удалении, потому что контейнер (string в данном случае) объявлен на стеке, а его содержимое уже в куче, но неявным для тебя образом. Понимаешь? Может, контейнер - не лучшее название, ну, обертка тогда, что ли. Но вообще это контейнер. std::vector туда же.
sage #245 #438022
>>438021

>zaebok


фикс
sage #246 #438023
>>438012
Прата (Prata) http://rutracker.org/forum/viewtopic.php?t=4123652
Потом решай, что ты хочешь: драйвера и прочее системное говно - задумайся лучше о сишке, десктоп - выбирай фреймворк (хули там выбирать, Qt вне конкуренции) и ебаш на нем очередной текстовый редактор/шахматы/мессенджер/что-то еще, чего тебе не хватает.
Аноним #247 #438025
>>438023
Попробую почитать Прату, как раз лежала в закромах эта книга. Читал Липпмана, но это просто какой то бред, там нечего делать, просто как обзор по языку, задания никакие. Я пока точно не знаю на каком API делать и так далее.
#248 #438026
>>426100
есть один кот и он не работает
собственно, метод не хочет принимать массив
\t\t\t\t
82 Кб, 1075x495
46 Кб, 1065x365
#249 #438027
>>438026
вакаба обезумела и не принимает код
870 Кб, 1882x3000
#250 #438028
>>437977
Не обижаюсь, это же сосач, лол. Отвечал я.
Просто мне ужасно повезло и у меня появился годный, толковый препод, который именно программист а не теоретик. И он, кроме всего прочего, советует читать книжки и зубрить стандарт.
#251 #438030
>>438027
зачем ты пишешь на этом говне? (я про VC++)
нужны гуй-библиотеки? родина им дала qt, нет, не хочу, хочу жрать говно.
sage #252 #438033
>>438028
Все могут ошибаться, и преподы тоже. Они к тому же обычно, даже если очень охуенные, все равно по роду деятельности привыкают давать советы так, чтобы они подошли как можно большему числу учащихся, но при этом результат может быть далеко не наилучшим, так как советы рассчитаны на массу. Но и я могу ошибаться, ясен хуй. В общем, не принимай на веру ни меня, ни препода, думай и оценивай сам. Попробуй прочитать книжку, потом написать какой-то проект. В другой раз попробуй писать другой проект, читая только гугл.
#253 #438034
>>438030

> говно


> qt


быстрофикс
#254 #438036
>>438030
особо с гуей не работаю на плюсах, мне ок, я мазохист
#255 #438051
>>437998
Штоа? Первый раз слышу об этом. Можешь его пример >>437980 (хороший, наглядный пример) переписать через смарт-птр?
27 Кб, 547x342
#257 #438079
Поясните, пожалуйста, тупому студенту.
Как из байта вывести биты, с этим ебучим сдвигом вправо, спасибо.
#258 #438088
>>438079
Эндаешь с единичкой, выводишь, затем сдвигаешь вправо на бит, эндаешь с единичкой, выводишь, затем снова и снова и снова, 8, 116, 32 или 64 раза в зависимости от разрядности.
#259 #438091
>>438088
Спасибо, робит.
#260 #438100
>>438033
Спасибо за советы, анон, постараюсь извлечь пользу.
#261 #438105
>>438072
Ух ты, круто. C++11 наконец-то. Объясни на пальцах, что это такое.

1) .get() -- выглядит как контейнер, поясни. Почему (технически) нет возможности прямого доступа a ?

2) Оно всегда убиваетcя на границе ближайшего скоупа, как и любая другая переменная, или есть другие варианты поведения?
#262 #438108
>>438105
Ебаная макаба.

>прямого доступа


a откр. квадратная скобка i закр. квадратная скобка
sage #263 #438134
>>438105
Ну епта, это обертка вокруг указателя. Очевидно, что ты не можешь применять оператор [] к обертке, только к указателю, который и возвращает get().
Деструктор вызывается тогда, когда разрушается последний shared_ptr, содержащий ссылку на данный указатель.
#264 #438137
>>438134
О, вроде прояснило, спасибо. Правда забуду потом детали, но принцип понятен. Кстати, крутые парни не пишут без сеги?
#265 #438140
Господа, помогите разобраться с двумерными динамическими массивами в обычном Си.

Функция input принимает указатель на указатель, по нему размечает память, заносит с клавиатуры значения в массив.

Вопрос в следующем, если в функции input память размечена как:
array = (int )malloc((mn)sizeof(int) );
под двумерный массив, то как в scanf указывать соответствующий адрес под элемент такого массива?
Заранее огромное спасибо.

Код программы:
//====================================
int main()
{
\tint array, n=input(&array);
\toutput(array, n);
\tfree(array);
\t
\tputs("\n");\t
\tsystem("pause");

}

//====================================
int input(int
array)
{
\tint i,n;
\tprintf("Please input array length: ");
\tscanf("%d", &n);
\tsystem("cls");

\t
array = (int )malloc((n)sizeof(int) );
\tprintf("\nPlease input array elements: \n");

\t\tfor (i=0;i<n;i++)
\t\t{
\t\t\tprintf("array[%d]= ",i);
\t\t\tscanf ("%d", (*array+i) );
\t\t}
#265 #438140
Господа, помогите разобраться с двумерными динамическими массивами в обычном Си.

Функция input принимает указатель на указатель, по нему размечает память, заносит с клавиатуры значения в массив.

Вопрос в следующем, если в функции input память размечена как:
array = (int )malloc((mn)sizeof(int) );
под двумерный массив, то как в scanf указывать соответствующий адрес под элемент такого массива?
Заранее огромное спасибо.

Код программы:
//====================================
int main()
{
\tint array, n=input(&array);
\toutput(array, n);
\tfree(array);
\t
\tputs("\n");\t
\tsystem("pause");

}

//====================================
int input(int
array)
{
\tint i,n;
\tprintf("Please input array length: ");
\tscanf("%d", &n);
\tsystem("cls");

\t
array = (int )malloc((n)sizeof(int) );
\tprintf("\nPlease input array elements: \n");

\t\tfor (i=0;i<n;i++)
\t\t{
\t\t\tprintf("array[%d]= ",i);
\t\t\tscanf ("%d", (*array+i) );
\t\t}
#266 #438141
>>438140
гребанная разметка.
#267 #438143
>>438141
братишка, переложи на http://pastebin.com/

Без перекладывания трудно будет понять, где одна звёздочка, где две.
sage #268 #438151
>>438134
Сначала сагал, потому что вопросы были тупые (да и щас большинство тупые), а потом как-то в привычку вошло.
sage #269 #438152
#270 #438159
>>438143
http://pastebin.com/wscs7K1i

В общем вопрос в том, как обратиться к элементам двумерного массива, под который размечена память подобным образом.
#271 #438182
Аноны, такой вопрос. Знаю c++ на уровне книги Лафоре "ооп на с++". Хочу развиваться в плюсах и дальше, но не имею понятия что вообще учить. Все программы которые я писал - консольные, как делать обычные понятия не имею. Слышал что-то про qt. Может учить его? Вобщем направьте меня в правильное русло.
#272 #438184
>>438159
Запутался. К двумерному массиву ты обращаешься http://pastebin.com/1qd5HPCX , где i - номер строки, j - номер столбца.

В чём собственно вопрос?
#273 #438190
>>438140 >>438159
В общем если я правильно понял, то ответ на твой вопрос:

http://pastebin.com/3wdjVr0a
48 Кб, 1366x699
#274 #438200
>>438190
http://pastebin.com/dTQSVytT

Пробовал так, не взлетает.
Видимо, вылезаю куда-то за пределы дозволенного.
#275 #438207
>>438200
Если честно, у тебя здоровый код, в котором мне лень копаться. Поэтому: если хочешь не просто копипастить текст, а компилировать онлайн, имеются замечатльные онлайн-платформы для этого. Вон, православная http://ideone.com/ например.

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

Если в ideone.com не поулчишь осмысленных сообщений об ошибке, попробуй более громоздкую платформу

http://www.tutorialspoint.com/codingground.htm

Там на выбор тебе будут:
http://www.tutorialspoint.com/compile_c_online.php
http://www.tutorialspoint.com/compile_c99_online.php

Я думаю, что тебе надо c99. А ещё лучше -- годную IDE.
32 Кб, 591x579
#276 #438214
>>438207
Спасибо, буду разбираться.

Курил мануалы, и, судя по всему, память выделяется под одномерный массив, и некорректно обращаться к нему как к двумерному.
#277 #438225
>>438214
Тебе объяснить что ли, как двумерные массивы создавать в сишечке? Давай объясню.\tДвумерные массивы -- это массивы указателей типа на массивы типа. Покажу на примере создания матрицы int из трёх строк на пять столбцов (без инициализированных значений).

http://ideone.com/DIkq0A

P.S. Обрати внимание, сколь тщательно ведётся работа с освобождением памяти. Сначала освобождаем память в каждой строке, потом освобождаем сам массив указателей опустошённых строк.
#278 #438230
>>438225
Ну и да, с ходу забыл добавить #include <stdlib.h> , отредактировал, добавил.

Кроме того, ругается на unsigned int в цикле for. Значит тебе нужен или C99, или перепиши на инт или на что там там принято в сишечке, я без понятия. Ансигнед индекс это чисто плюсовая привычка, не очень хорошая, наверно.
#279 #438232
>>438230
Отлично, понял свою ошибку, спасибо огромное!
#280 #438241
>>438232
Пожалуйста. А так, я бы вообще запретил все компиляторы, что ниже C99 и C++11. Как люди вообще писали код до их повсеместного распространения, ума не приложу.
#281 #438269
>>438182
Подумай, какая область тебе интересна. Сети, медиа, десктоп ui, сервера, хайлоад, много областей ещё. Читай, копай, изучай. Пробуй все. Базовые знания полезны во всех областях. Потом решишь куда углубляться.
#282 #438276
>>438182
Посмотри что требуют в вакансиях, потдягивай что не знаешь. Можно еще по собеседованиям походить, просто чтобы посмотреть, если ты нормально их переносишь.
#283 #438380
И вот я >>436304 снова врываюсь в тред. Уже почти всё написал. Остался один вопрос. Собственно хочу, чтобы у меня BMP оттенков серого занимал 1 байт на пиксель, а не 4. Для этого здесь

>Bytes 29-30: Word. Bits per pixel.


ставлю 8.

А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков?

Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых.
#284 #438408
>>438380
Единственное, что удаётся найти:

Date: Mon, 25 May 1998 01:36:38 -0700
From: "Kevin D. Quitt" <[email protected]>
To: [email protected]
Subject: BMP format

There is a deficiency in the BMP file format specification from
Microsoft.
While they do point out in RLE encoding mode that lines must start on an
even byte number, they have omitted the following:

EVERY compression group must start on an even byte boundary.

In RGB encoding (no compression), when using 8 bits per pixel, lines
must start on a long-word boundary (i.e., low two bits zero).

And, of course, they use 'int' in the spec when it should properly be
'short', and they use 'long' and 'DWORD' interchangeably. Should just
be 'long'.
#285 #438513
>>438380

>А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков?


Никак, делай 8 бит + ч/б палитра.

>Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых.


Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать.
#286 #438514
>>438513

>Никак, делай 8 бит + ч/б палитра.


Я и спрашиваю, как сделать чёрно-белую палитру. В какие байты хэдера что проставить.

>Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать.


Под рукой только помирающий компьютер да MS Paint.
#287 #438534
>>438514
Нафига тебе BMP? Возьми лучше TGA - он гораздо проще. В примитивном варианте простой хидер на 18 байт, потом несжатые пиксели.
http://www.paulbourke.net/dataformats/tga/
Для градаций серого в третий байт пишешь тройку, в 16-й восьмерку, с палитрой не ебешься.
#288 #438538
>>438534
Хочу я BMP. Уже всё написал, осталось только проставить, чтоб в градациях серого было.
#289 #438545
>>438538
глянь исходники easybmp
#290 #438549
>>438545
А вот уже нагуглил, в правильную сторону нагуглил?

http://www.codeproject.com/Articles/70442/C-RGB-to-Palette-Based-bit-Greyscale-Bitmap-Clas

ctrl+f
The color palette is created with the following code:
#291 #438555
Что есть байтоёбство?
sage #292 #438557
>>438555
возлежание с виртуальной имманацией вычислителя
#293 #438770
Анончики, какую парадигму юзаете когда прогаете риалтайм? ООП чет нихуя не работает - все рушится когда добавляются зависимости к объектам. Алсо посоветуйте годной литры по этой теме, в гугле только кривые статьи, по которым и так все очевидно
мимо 10 кривых реалтаймов с костылями
sage #294 #438773
>>438770
лол, тредом промахнулся
sage #295 #438848
Рубрика "охуительные вопросы".
Допустим, у меня есть указатель на объект, созданный где-то в недрах чужого (библиотечного) кода. Указатель валидный, разыменовывается и все такое. Задача: "приделать" к объекту некие данные, скажем, int. В классе для этого средств никаких нет, он может быть вообще "пустым", типа class Yoba {}; Может, какие-то трюки с адресацией есть? Не могу загуглить, потому что не знаю, как описать это нормально. Нужно для оптимизации. Да, я отдаю себе отчет в том, что это в любом случае очень плохо, но я знаю, что делаю и для чего.
#296 #438850
>>438848
наследуешься, в наследнике добавляешь данные.
кастишь указатель до наследника
#297 #438851
>>438850
еще, желательно, перед этим память после Yoba как-то захватить, чтобы не потерли
sage #298 #438857
>>438850

>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода


>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода


>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода


>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода


>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода

sage #299 #438858
>>438857
А хотя, я жопой прочитал. Приношу свои извинения. Спасибо, попробую.
sage #300 #438867
Чет падает. Делаю так: http://pastebin.com/qFKE0XD2
#301 #438881
>>438867
http://pastebin.com/Ueb57ywM
работает ТОЛЬКО если за объектом ничего нет.
агрегирование не подойдет?
#302 #438888
>>438881
Работает! Слушай, а для чего оффсет? И что есть 4? Не размер int ведь.
#303 #438890
>>438888
чтобы не портить память под Yoba + размер класса (4), так как Hack не определен и размер его неизвестен. Но heap с такими манипуляциями портится все равно.
#304 #438893
Вообще я юзаю библиотеку ODB, там есть класс odb::transaction, у которого один из статических методов возвращает текущую транзакцию для данного потока.
Моя идея заключается в том, чтобы создать обертку, которая, если транзакции нет, создает ее, а если уже есть, то увеличивает счетчик вложенности (чтобы не передавать в следующую функцию текущую транзакцию, там просто создается новая, которая по факту не начинает транзакцию ODB, а только увеличивает счетчик).
Соответственно, когда из функции выходим, счетчик уменьшается при разрушении моего объекта-обертки. Когда разрушается последний объект, счетчик становится снова равным нулю и транзакция ODB наконец завершается.
Ну а раз транзакция должна быть одна на поток, а thread_local я не использую, т.к. поддержка старого стандарта крестов, то использую мьютекс и map (ключ - указатель на транзакцию ODB, значение - счетчик). Но odb::transaction::current() (возаращает текущую транзакцию для данного потока) уже и так использует мьютекс, получается что надо дважды лочить, что есть оверхед.
Вот я и решил хранить счетчик сразу в транзакции ODB, если уж она гарантированно возвращается одна для данного потока.
#305 #438895
>>438890
Портится - значит я рано или поздно поймаю сегфолт, или память будет утекать?
#306 #438900
>>438895
Сегфол и хип карапшн. Ну и перетрет память под Hack кто-нибудь
#307 #438902
>>438900
То есть безопасно то, что мне надо, никак не сделать?
#308 #438908
>>438902
Так то я думал сделать типа такого: http://pastebin.com/eJLKN2RZ
Но там же переменная, а не указатель (это я затупил сначала, да). Надо как-то заставить переменную думать, что ее адрес сменился. Что-то ничего в голову не приходит.
sage #309 #438911
Блять, я тупой. Короче, вопрос снимается, байтоебля отменяется. Я же ее, переменную то, сам создаю, значит могу и наследника вместо базового класса использовать. Пиздец, вот я еблан.
#310 #439060
Здравствуйте, посоветуйте, пожалуйста, хорошую книгу для новичка в программировании. Знал неплохо пхп, в общем-то, всё.
Сейчас пытаюсь читать Алгоритмы, построение и анализ.
#311 #439064
>>439060
Советую Прату.
sage #312 #439067
>>439064
Удваиваю Прату http://rutracker.org/forum/viewtopic.php?t=4123652
Алгоритмы пока отложи, только путать будут. Сначала с языком освойся.
#313 #439148
Шел 2015. Указатели. Нужно еще больше ключевых слов в язык. Зубодробительный синтаксис. Хлеба, зрелищ! Набор костылей с набором взаимоисключающих концепций. А что ты предложишь комитету по стандартизации?
#314 #439154
Врываюсь, но со специфическим вопросом.
Итак, есть у меня овердохуя проектов на крестах на близкую тематику. Соответственно, они часто используют одинаковые исходники. И я, как мудак, храню в папке каждого проекта копию этих исходников. Стоит ли говорить, какой это геморрой, когда нужно поменять один такой исходник во всех проектах? Но ещё хуже - могу забыть обновить их в других папках, что чревато глобальным пиздецом.
Как бы мне оптимально всё это организовать? Выделить отдельную папочку common, и туда пихать общие исходники?
А как потом конпелировать? У меня всё на простеньких самописных makefile-ах конпелируется.
30 Кб, 576x402
sage #315 #439156
>>439148
А как лучше, вот так?
sage #316 #439157
>>439154
Так напиши библиотеку свою. Я так и сделал. Берешь все свои повторяющиеся исходники, организуешь их в какую-то осмысленную архитектуру, пишешь библиотеку (не забывая о pimpl) и пользуешься.
#317 #439158
>>439157
по некоторым причинам библиотеку пока создавать рано, няша
#318 #439171
>>439156
Доебался до типизации (вернее её отсутствия). Причём тут она вообще?
ВОН В JS ВСЁ ЕЩЁ ХУЖЕ
#319 #439178
>>439156
Обосрался себе в штаны. Это же фэйк, не может так быть?
sage #320 #439191
>>439158
Тогда жри говно и не выебывайся. Можешь еще все в одну папку положить и в мэйкфайлах прописывать путь для поиска хедеров в этой папке. Еще можешь ссылки создавать на файлы, лол. Больше нихуя тут не сделаешь.
>>439178
Нет, не фэйк. Пишу на этой дрисне, ибо в веб-параше без нее никуда. Постоянно проигрываю с дебилов, которые еще и бэкэнд на этом хуячат.
#321 #439224
>>439154
Засунь их в гитовую репу. Эту репу подключай как субмодуль к своим проектам. Профит.
#322 #439316
Двач, выручай. Пересаживаюсь с 1 стулаJava на другой стулC++. Начал пилить удобную обёртку для движка OGRE 3D. И тут у меня возникли трудности. Есть такая иерархия классов:
AbstractObject -> AirplaneObject
В AbstractObject.h я подключил NioCore.hсамый главный класс, чтобы иметь доступ к переменным, отвечающим за отрисовку сцены(RootSceneNode, например). В AirplaneObject.h я подключил AbstractObject.h, чтобы можно было наследовать. Дальше, в NioCore.h я подключил AirplaneObject.h, чтобы можно было добавить его на сцену. Ясен хуй, это надо делать в другом классе, но мне надо по-быстрому всё проверить, чтобы работать дальше. Получается такая система инклюдов:
NioCore.h -> AirplaneObject.h -> AbstractObject.h -> NioCore.h и т.д.
Компилятор пишет, что не определён базовый класс. Если я убираю инклюд AirplaneObject.h из главного класса, то проблема решается. Но тогда я не могу его использовать. Что делать?
#pragma once стоит. Пробовал заменять её на гуарды - та же хуйня.
#323 #439325
>>439316
У тебя цикл инклюдов. Чтобы получить AbstractObject.h тебе нужно включить туда NioCore.h, но для того чтобы получить NioCore.h тебе нужно включить туда AbstractObject.h который ты не можешь получить потому что у теяб нет готового NioCore.h. Гварды там не помогут. Нужно избегать максимально инклюдов в хедерфайлах. По нормальному в хедерфайле должен быть только инклюд класов от которых наследуется клас которому принадлежит хедер, хедеры с константами и библиотечные (но их тоже лучше стараться избегать). Все остальные хедеры нужно пихать в файл реализации. Вместо инклудов в хедерах используй forward declarations. В твоем случае в NioCore.h вместо #include "AbstractObject.h" нужно сделать class AbstractObject.h;
sage #324 #439326

> class AbstractObject;


конечно же
#325 #439328
>>439325
А если я захочу поменять имя класса, рефактор поймёт, что форвард декларейшены нужно тоже поменять?
#326 #439330
>>439328
Если нормальный то должен понимать. В XCode меняет.
#327 #439332
>>439330
Спасибо, буду делать так.
#328 #439370
Еду на первое в моей жизни собеседование. Задайте вопросов для тренировки.
#329 #439372
>>439370
Чем C отличается от C++?
Почему крышки колодцев круглые?
#330 #439380
>>439372
C - функциональный язык.
С++ - мультипарадигмовы, с НОРМАЛЬНЫМ, по сравнению с С, ООП. Ну и всякими плюшки.
Круглую крышку ОЧЕ сложно провалить в отверстие, которое она закрывает. Практически не возможно, не спилив рожки и не будучи суперменом.
У круга оптимальное соотношения периметр/площадь - экономия материала.
sage #331 #439387
>>439380

>C - функциональный язык.


>функциональный


Перезвоним.
Процедурный, дегенерат.
67 Кб, 317x372
#332 #439389

>C - функциональный язык.



Обкакунькался.
#333 #439392
>>439389
>>439387
Не зря на двач написал.
#334 #439408
>>439392
>>439370
Жду течлида уже пол часа. Кормят чаем, печеньем и "еще 5 минут".
#335 #439409
>>439408
Это называется экстремальное собеседование. Жди и не парься, веди себя вежливо. Будет наезжать - отвечай тоже вежливо.
#336 #439414
>>439409
Та мне норм. Но вот наезды я вряд ли несколько выдержу. Начну язвить и САРКАСТИРОВАТЬ.
75 Кб, 582x424
#337 #439428
>>439372

>>Чем C отличается от C++?


Таки спросили. Спасибо >>439387
#338 #439430
>>439428
двач-помогач же
#339 #439437
>>439387
ты ебан?
кто тебе мешает в С передавать функции в функции и возвращать функции и не иметь побочных эффектов?
никто блять!
#340 #439442
>>439437

> и не иметь побочных эффектов?


А удалять результаты кто будет? Пушкин?
#341 #439447
>>439191
А что >>439156 ЭТО?
sage #342 #439480
>>439447
JavaScript же.
>>439437
Ты не прав.

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


Так что сишка - не функциональный язык. С костылями и допущениями почти любой язык можно было бы называть функциональным.
#343 #439493
>>439480
твоя мондада присваивает и изменяет тебе
ничего чистого нет и не может быть
еблан
sage #344 #439527
>>439493
Схуев ли она моя? Алсо, я тоже сначала так думал. Но потом разобрался, и понял, что все не так просто. Когда-нибудь и ты поймешь. Нет, не поймешь, слишком тупой и мелкобуквенный.
#345 #439529
>>439527
но и не так сложно
смотри, я тебе ещё и смайлик влеплю
;)
108 Кб, 600x671
sage #346 #439546
>>439529
Съеби, вниманиеблядок.
#347 #439663
Сейчас будет тупейший вопрос треда, приготовьтесь. Причём он скорее по Си, чем по плюсам.

>intarray=(int)malloc(20sizeof(int));



Зачем нужно (int*) после равно? Что он делает? Маллок это же просто разметка некой области в памяти.
#348 #439664
>>439663
Звёздочки проебались, но вы поняли что вторая звёздочка после 20.
#349 #439667
>>439663
C это язык со статической типизацией. Если ты объявил указатель на тип int то ты не можешь просто взять и поместить его на любую область памяти. Сначала ты должен пообещать компилятору что там записано именно int. (int *) это и есть такое обещание.
#350 #439668
>>439663
Malloc возвращает указатель на void. Здесь каст до указателя на инт
#351 #439680
>>439663
Ну и я добавлю ещё, что если это именно C, то каст здесь не нужен.
24 Кб, 1093x641
#352 #439698
Сап. В /b/ меня нихуя не поняли, поэтому иду к вам. Суть на пикрелейтеде. В джаве для таких дел есть generic types. Я пишу T extends AbstractObject и при наследовании указываю, что это за T. Как такое сделать в C++? Пока что приходится кастовать так, как на пикрелейтеде.
#353 #439701
>>439698
тебе нужны абстрактные классы, виртуальные функции, вот это всё
#354 #439703
>>439698
А в чем проблема сделать
template <typename T>
void update(T *obj ...
sage #355 #439705
>>439698
Я нихуя не понял, что ты хочешь. В крестах можно, например, вот так: http://pastebin.com/aiQ9XnkD Если это не то, изъясняйся лучше, а то хуйню какую-то несешь.
#356 #439706
>>439703
>>439705
Мне нужно, чтобы этот T был обязательно расширенным от AbstractObject.
#357 #439708
>>439706
Но зачем?
#358 #439709
#359 #439710
>>439708
А если я вместо него передам какой-нибудь Ogre::String? Это же не будет работать. Чтобы это работало, T должен быть расширенным от AbstractObject.
#360 #439711
>>439710
В крестах все это на твоей совести. Никаких дженериков. Да и если ты укажешь Ogre::String, оно просто не скомпилируется.
Алсо, я уже советовал тебе бросать нахуй этот говнокодный огр.
#361 #439712
>>439711
Ты не предложил альтернативу
Скомпилируется же. С чего бы ему не скомпилироваться?
#362 #439713
>>439712
Если ты не используешь никаких методов объекта этого класса, то конечно скомпилируется, но тогда нахуя его вообще передавать?
Unity, UE4
#363 #439714
>>439713
Всё, кажется понял.
Унити и уе4 - это конструкторы. Мне нужен движок, где я буду программировать, а не таскать ассеты.
#364 #439715
>>439712
Если ты используешь

method(T *t) {
t->huj()
}

и передаешь туда объект класса Zh без хуя, то не скомпилируется.
#365 #439716
>>439714
Ты бы попробовал хоть раз ими воспользоваться, диванный теоретик. Там и программировать можно не меньше, чем на говноогре. Купишь UE4 - у тебя все его исходники даже будут.
#366 #439717
>>439716
Нет, спасибо. Я делаю игры для идеи, а не для перетаскать-пачку-ассетов-выложить-в-апстор.
#367 #439718
>>439715
Всё, я понял. Спасибо.
#368 #439719
>>439717
Да у тебя мозги засраны пропагандой из /gd/, что с тобой спорить. Попробуешь - поймешь, что все далеко не так просто. А до тех пор верь во что хочешь.
#369 #439720
>>439719
Зачем верить? Я полтора года делал игры на джаве. Мне нравилось. Попробовал сделать что-нибудь на JMonkeyEngine - ощущения уже не те. И всё из-за системы ассетов, которые можно просто перетащить. Но там всё более хардкорно, нежели на юнити или в уече.
#370 #439758
Есть массив int source, заранее известного размера unsigned int n, его значения пробегают исключительно 0 / 1.

Я хочу его конвертнуть (в смысле создать новый, а старый ОСВОБОДИТЬ) в массив: uint8_t
compressed, размера (n + 7) / 8 , в последнем байте занято n % 8 бит.

Ну ладно, uinsigned int k = (n + 7) / 8;

uint8_t compressed =
(uint8_t
)malloc(k);

Как мне побитово перенести значения из int* source в новый?

for (unsigned int i = 0; i < k; ++k)
{
???
}

И как перенести последние 0 - 7 значений в "неполный байт"?
#371 #439762
>>439758
Вот твою же мать, не спасает перенос строки от второй "*".

http://pastebin.com/iGn3Bu29
88 Кб, 505x318
ПОМОЩЬ ЗАЛА #372 #439766
Попросили репостонуть сюда.

Впервые в подобной ситуации, онон. Сам студентота, нужна помощь. Есть система равенств вида пикрелейтед и ряд условий для нее (n=10). Задача - доказать, что показателей u, v будет определенное количество препод уже сжалился и сказал, что их должно быть 16. Причем сделать это нужно силами С++. Однако, я не в силах решить эту задачу даже на бумаге - хуй знает почему. Не получилось это и в маткаде - запутался и нихуя не сделал. Штудирую самоучитель по dev c++, на нем и пытаюсь написать, но пока на уровне "Hello, world". Словом, на тебя вся надежда, онон.

Как писал уже выше, впервые прошу помощи по учебе. Не знаю чем платить тут у вас принято. Могу разве что пак порногифок на 11 Гб залить.

Спасибо.

Препод дал времени максимум до следующей недели, но в крайнем случае попробую выкроить еще пару дней.
#373 #439767
>>439766
Ок, теперь жди пока я до компа доберусь.
#375 #439775
>>439771
забыл еще проверку на if (i_n < n), ну разберешься
#376 #439777
>>439767
Благодарю. Жду!
#377 #439807
>>439777
хм, нет пар таких. может в условиях что-то не так?
4 Кб, 82x56
#378 #439822
>>439807
квадратные скобки означают взятие целого?
если да, то здесь просто u << i.
#379 #439827
>>439822

>квадратные скобки означают взятие целого?


Если как на твоей пикче, то
http://www.wolframalpha.com/input/?i=floor%283.8%29
мимо
#380 #439829
>>439827
для положительных чисел это равносильно взятию целого. спасибо за инфу.
#381 #439831
>>439822
u >> i, конечно же
#382 #439837
>>439766
нет таких пар в заданном интервале. надо как-то доказывать на бумаге, что данные условия исключают существование таких пар.
sage #383 #439846
>>439758
>>439762

>malloc


>free


Ты тредом ошибся, это не труЪ C++, а голая сишка.
#384 #439848
http://ideone.com/dCtxGS

>>01


Поясните, чому?
9 Кб, 317x254
#385 #439850
>>439837
смотри какая штука. такому решению удовлетворяет только (0,0)
но оно не удовлетворяет первому условию (-1 + 0 =-0 + 0)

противоречие. нет решений.
sage #386 #439851
>>439762
И вообще, го все на мой /pr/, там прикольная капча и тег [code] работает (да еще и с подсветкой).
#387 #439852
>>439848
Потому что опимизация &&
Если левая часть 0, то правая не вычисляется.
#388 #439853
>>439848
ленивые вычисления

>if(x++ && y++)


тут x++ возвращает 0
Именно поэтому в ифах не нужны ++
sage #389 #439854
>>439851
дай Uniform Resource Locator
#390 #439855
>>439853
>>439852
Но в результате х стает 1
#391 #439857
>>439855
Семантику ++ погугли, даун.
9 Кб, 324x281
#392 #439858
>>439850
блин, минус потерял в последней строке
#393 #439860
>>439855
a = x++ преобразовывается компилятором в
a = x;
x += 1;

Поэтому тот tmp, что передастся в if будет равен 0
32 Кб, 383x449
sage #394 #439861
чо за буковки))
sage #395 #439867
>>439854
На (я думал, все читают тред, выше уже вбрасывал) https://ololoepepe.me/board/pr
sage #396 #439870
>>439867
капча сложная(
sage #397 #439872
>>439870
А мне нра))
Хинт 1: можно выбрать другой язык (там кнопочка внизу).
Хинт 2: если перевыбрать тот же язык еще раз, появится другое задание.
Хинт 3: один раз введя капчу, можно оставить 10 постов ()включая тот, во время которого вводилась капча).
37 Кб, 1312x707
sage #398 #439880
>>439872
неполучается(
compilation error

> один раз введя капчу, можно оставить 10 постов ()включая тот, во время которого вводилась капча).


а вот это клёво
901 Кб, 485x759
#399 #439881
>>439850>>439837>>439858
В том-то и дело, онон. Я тоже уверен, что нет решений (на VB так и получилось). Но преподу я так и не сумел эту мысль донести У ВАС ГДЕ-ТО ОШИБКА БЛА БЛА БЛА. Решал по следующей схеме, но ни черта не вышло. Просто нет таких пар, удовлетворяющих данным условиям.

Кинь, пожалуйста код для плюсов, хоть покажу преподу, что мол и так и так невыходит.
#400 #439896
>>439881
ну я же тебе пояснил по условиям. там противоречие. не может быть там решений.
http://ideone.com/wpJ3ZB
#401 #439898
#402 #439900
>>439822
Да, это округление в меньшую сторону.
#403 #439901
>>439771
Что за |= в 6 строке? Вообще всю строчку не понял:

>compressed[k] |= (source[i_n])?1:0 << j;

727 Кб, 400x222
#404 #439904
>>439896
Я так и понял. В любом случае спасибо, анон. Думаю, ошибка в самом условии (может знак неправильно где-то стоит, может еще что), но буду долбать уже препода. В случае чего можно найти тебя здесь?

Пусть эти шлюшки хорошо на тебя поработают
#405 #439905
>>439901
Смайлик |=
побитовое или с присваиванием, лалка
#406 #439906
Аноны, помогите, пожалуйста.
Нужно узнать меньшее число из последовательности, которую вводит пользователь, последовательность не ограничена (Для окончания ввода нужно нажать 0).
Без массивов, только через while.

Я не понимаю, как организовать ввод последовательности? Куда записывать все числа, последовательность ведь бесконечной может быть, а нужно узнать меньшее число. Нужно где-то держать их
#407 #439910
>>439906
Зачем записывать все числа, если с каждым введённым можно выбирать меньшее и сохранять только его?
#408 #439912
>>439906

> последовательность ведь бесконечной


ололо
держи в переменной вне цикла минимальное на текущий момент число, обновляй его в цикле
#409 #439913
>>439910
Не понял немного тебя
У нас вводится ведь сразу over9999 чисел и из них нужно выбрать меньшее.
Чтобы узнать какое из них меньшее, нам нужно все их сравнить ведь
#410 #439914
>>439904
Да, возвращайся с новыми данными. Самому интересно, что там неправильно.
Ну и рабочий код у тебя уже есть. Если нужны ответы, обращайся, распишу по пунктам.
#411 #439915
>>439904
Откуда вы берете такие видео, я понимаю в интернете все есть, но где?
Это замечательное видео, встал. На жену и дочь уже не встает, да и старые они уже и много крови мне попили
#412 #439917
>>439913
cin >> x; тоже делай в цикле
>>439915
страуструп, ты?
#413 #439918
>>439913
читаешь каждое число, сравниваешь с текущим. не нужно ВСЕ числа вычитывать сразу.
#415 #439921
Что такое нуль-ссылки?
#416 #439923
>>439918

>читаешь каждое число, сравниваешь с текущим. не нужно ВСЕ числа вычитывать сразу.


Спасибо
\twhile (n % 10 != 0){
\tcout << "Последовательность \n";
\tcin >> n;
\tif (n<a) n=a;
Так?
Тогда с чем сравнивать в первый раз
#417 #439924
>>439923
с максимально возможным.
#419 #439926
>>439901
Ну хули тут поделать, значит тебе не дано. Иди читай учебники пока не поймешь.
#420 #439928
>>439923

> while (n % 10 != 0)


Это зачем? Тебе с нулём надо сравнивать само введённое число. И сделай цикл с постусловием.
#421 #439930
>>439923

>Тогда с чем сравнивать в первый раз


с (unsigned)(-1), например.
#422 #439931
>>439930
signed с unsigned сравнивать нехорошо, ай-яй-яй!
#423 #439933
>>439931
Там unsigned переменные, т.к только положительные числа в последовательности
sage #424 #439934
>>439880
В хачкиле не шарю, не знаю, что там не так. Думаю, ты используешь функции, которые надо импортить.
#425 #439938
>>439933
а, ну ок.
#426 #439940
>>439930
кастить signed в unsigned - быстрый способ получить по ебалу. numeric_limtis для кого придумали?
#427 #439943
>>439928
Там ведь не написано, что при вводе нуля, там о нажатии только.
Вот что получилось в итоге.
Спасибо

#include <iostream>
using namespace std;
int main()
{
\tsetlocale(LC_ALL, "Russian");
\tunsigned long long a, n;
\ta = 18446744073709551615;
\tn = 1;
\twhile (n%10!= 0){
\t\tcout << "";
\t\tcin >> n;
\tif (n <a) a = n;
\t}
\t
\t\tcout << "Результат = " << a << "\n";
\treturn 0;
}
#428 #439946
>>439940
А в этом конкретном случае чем плохо? Ну ладно, с UINT_MAX можно сравнить.
33 Кб, 377x336
#429 #439949
>>439943

>using namespace std;


>setlocale(LC_ALL, "Russian");


>unsigned long long


>a = 18446744073709551615;


>while (n%10!= 0)


что за хуйня, блядь? гори в аду
#430 #439950
>>439923
Считай первое вручную, а while фигачь для ввода начиная со второго. Тогда нумерик_лимитс не нужны.

Тут можно ещё позанудствовать, а сколдько чисел будет введено: 0, 1 или больше.
#431 #439952
>>439949
Что не так?
#432 #439955
>>439946
все норм в этом случае, я ошибся.
#433 #439956
>>439901
В общемвот тебе работающая программа, делающая то, что тебе нужно.
http://pastebin.com/SuUGYAJG
#434 #439959
>>439952
при медведеве такой хуйни не писали
#435 #439961
>>439949

>>using namespace std;


>>setlocale(LC_ALL, "Russian");


>>unsigned long long


>>while (n%10!= 0)


Поясните долбоебу, что здесь не так?
sage #436 #439962
>>439934
ничего не надо импортировать
думаю создатели этой капчи тоже не шарят в хчк джява тоже не работает kek
хорошо хоть в рнр шарят
15 Кб, 920x263
#437 #439963
>>439952
Хуй его знает, что там в спам-листе. Тупая макака не понимает, что спам-лист филтрует, в первую очередь, простыни текста, а не спам.
#438 #439964
#439 #439970
>>439963
Понял, спасибо.
sage #440 #439973
>>439962
Это на их совести. Потом попробую порешать, может найду в чем проблема. А вообще, проще выбрать новую задачу. Или вообще ни одна не работает?
27 Кб, 400x500
#441 #440135
Привет тред, есть одна творческая работа, неоплачиваемая и нужная только мне, которая требует знания С++ на базовом уровне, а именно умения читать чужой код, искать и исправлять на нужные некоторые значения. Мякотка в том, что я даже близко не умею в программирование. Т.е. я знаю английский, имею представление о ОС и её составляющих, знаю основы информатики, но единственный раз когда я что-то писал был в школе на уроке информатики, да и то, это была программа для решения простейших мат. выражений.

Собственно вопрос: как не просто изучить переменные и инструменты языка, но и научиться быстро разбираться в чужом коде, а так же править его с минимумом анальной боли от 100500 ошибок внесённых мною из-за непонимания устройства программы. Я так понимаю, помимо языка нужно изучить принципы построения алгоритмов, основной погроммный базис и принципы работы С++? Какие источники в этом помогут? Можно ли совместить усвоение базы с изучением языка? С чего вообще начинать, учитывая мои намерения, если я не планирую идти в специалисты, а язык мне нужен только для этого хобби?
35 Кб, 640x549
#442 #440160
>>440135

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


По сути - пикрелейтед.
#443 #440161
>>440135
Никак.
#444 #440172
>>440135
Изучи базовый синтаксис языка. Это позволит менять значения переменных. Если менять логику, то уже надо видеть алгоритмы, понимать их. Меняешь что-то, смотришь что сломалось/изменилось. Паралельно пишешь свои маленькие програмки с таким же алгоритмом. За полгода сможешь сносно читать код, понимать его. Остальное только с опытом разработки.
#445 #440182
>>440160
В разумных пределах, конечно.
>>440161
Если другие люди это делают, значит это возможно, что за глупости.
>>440172
Благодарю, так и начну, пожалуй.
#446 #440184
>>440182
Другие люди? Какие другие люди? БЫСТРО - никак, только практика и опыт, сын багов трудных. Читать то ты умеешь, а написать войну и мир? Вот то-то.
#447 #440190
>>440182
Что другие люди делают? Другие люди ещё в школе пишут программки на паскале, на первом курсе пишут программы на си, на втором курсе идут работать кресто-джунами, и к концу 5 курса всё равно задают вопросы вида... ну я не знаю, почитай тред.

Не на тот язык ты замахнулся, чтобы быстро править чужой код. Чужой код в крестах может быть чем угодно. Я вот пытаюсь какие-то маленькие программки писать, и у меня примерно 10 вопросов на каждые 10 строчек кода: "Почему так? Что за говно! А нельзя было так?" и т.д.

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

Вообще, на самом деле, изучить малую часть языка можно, написав свои laba2. Но я так понял, ты хочешь полистать две-три книженции и читать чужой код. Так вот, ХУЙ ТАМ ПЛАВАЛ.
463 Кб, 340x189
#448 #440216
>>439915
Почти любое видео с Майком Адриано, братюнь.

>>439914
Само собой. В понедельник-вторник подойду к преподу и отпишусь.
sage #449 #440290
>>440190
Ты сравни исходники, к примеру, Qt и какой-нибудь сишной либы. Охуеешь, насколько сишный код тяжелее понимать. (Я про архитектуру приложения, если что, а не отдельно взятые statement'ы).
#450 #440325
>>438848

>>но я знаю, что делаю и для чего.


Полагаю, что таки нет, ведь в божественном С++ нет (и не будет) стандартизованного ABI, а это значит, что тебе очень повезёт, если в ходе твоих манипуляций с этим указателем программа упадёт сразу, а не начнёт себя забавно вести когда-нибудь потом. Исключение составляют случаи, когда ты компилишь библиотеку на том же компиляторе и с тем же набором флагов, но и там с оговорками.
#451 #440330
>>439961

>>setlocale(LC_ALL, "Russian");


>>unsigned long long



Бля, ну это просто праздник какой-то. Документацию не читай @ на удачу вызывай.
#452 #440334
>>440330
Pardon moi. Объебался я сам, как минимум в реализации crt от ms такой код вполне легитимен.
#453 #440337
>>426441

>почему пойнтеры после realloc херятся знаю


Почему?
#454 #440341
>>440337
Realloc может (и часто это делает) переместить блок памяти. Все указатели на начало/тело этого блока, которые ты конечно же рассовал по своей программе то тут, то там начинают указывать неизвестно куда.
sage #455 #440343
>>440325
Ну, хорошо,

>знаю, для чего делаю


А не просто потому что могу. Хотя уже не актуально, в любом случае.
#456 #440347
>>436967
http://ideone.com/5iD2p7
Лямбда функция - это не обычная функция, а по сути дела объект некоторого анонимного класса с перегруженным operator(). Поэтому лучше использовать auto или std::function.
#457 #440349
>>440135
Как правило, читать чужой код труднее чем писать свой. Особенно на C++.
#458 #440350
>>439389

>в стеке 13 байт


Разве такое возможно?
#459 #440351
>>440350
Полагаю, что имеется в виду смещение от предыдущего указателя стека (до вызова процедуры). В таком случае, если процедура объявлена с соглашением cdecl, то да, 13 байт - очень даже реально.
#460 #440352
>>438072
В деструкторе shared_ptr будет вызван delete или delete с квадратными скобками?
#461 #440353
>>440352
Обычный delete, квадратные скобки будут вызваны в shared_array.
#462 #440396
Я начинаю, необходимо перевести целое натуральное число в двоичную систему с помощью функции.

void print_in_binary(int x)
{}

Дело в том, что нельзя использовать массивы, а только простенькие пизденки, такие как ifelse, while;

Интересует не столько вопрос написания кода, как сам алгоритм. Вот например брем число 100, while <деление на 2, вывод 1, если есть остаток, вывод 0, если нет остатка> в принципе число есть, но его необходимо перевернуть, опять же, элементарными средствами. И тут я проебан.
#464 #440416
>>440410
А комментарии можно, лол?
Вот мой вариант.
http://ideone.com/Saxjss
Но выводит наоборот.
#465 #440423
>>440410
Поклонникам функционального программирования и всяческих рекурсий напоминаю, что здесь вам не тут. Только императив, только хардкор.

http://ideone.com/zaVlMv
sage #466 #440426
>>440423

> printanut(100);


> 19


))0
#467 #440429
>>440426
Ват?
#468 #440432
>>440429
А ну да, объебался с ордером. Тебе надо взять маску вида (1 << ((sizeof(int) * 8) - 1)) и двигать влево, а не вправо.
sage #469 #440433
>>440429
тебе надо reverse результат
#470 #440434
Анончики, помогите.
Как задать одномерный динамический массив вещественных чисел?
Нагуглил
float a = (float ) malloc(nsizeof(float));
но при компиляции выдает

Ошибка\t1\terror C2040: a: "float
" отличается по уровням косвенного обращения от "float"
sage #471 #440437
>>440432
поспешил - людей насмешил
%ихихихих%
sage #472 #440439
>>440434
какой красивый дизайн поста
#473 #440442
>>440439
Мудак, обосрался, бывает.
#474 #440443
>>440434
Определение malloc'а подключил?
#475 #440446
>>440443
Скорее всего нет и компилер С думает, что malloc возвращает int, а не void*.
#476 #440449
>>440443
Нет, каким образом это сделать?
#477 #440450
>>440449
#include <stdlib.h>
#478 #440455
>>440450
Спасибо, но не помогло.
Может еще нужно что-нибудь подключить?

#include <iostream>
#include <stdlib.h>
#479 #440457
>>440455
Хоспади.

float *p = calloc(sizeof(float), 100);
#480 #440479
>>440434
float* new_arr = new float[dimension];
#481 #440530
>>440479
А как мне теперь выводить элементы из массива?
float*a = new float[N];
sage #483 #440540
>>440537
бэ))
ахахаххахах)))0)))
#484 #440555
>>440537
Миша?
#485 #440608
>>440555
Хуиша.
SAGE #486 #440610
>>440434
Знаешь, бро, сначала я открыл ideone, дабы накидать тебе код и пояснить нормально.
Но потом я понял, что ты блядский петух, не способный ввести в гугл один запрос. Чтобы кликнуть на первую же ссылку.
Пидор, блядь.
А теперь у меня полыхает от погромиздов, блядь. ХОЧУ БЫТЬ ПОГРОММИСТОМ ПОСОВЕТУЙТЕ ЛИТЕРАТУРЫ. Я ПОГРОМИЗД КАК СОЗДАТЬ МАССИВ?. Тратишь на вас, уёбков, время, а вы одну строку в гугл вбить не можете, уёбки.
sage #487 #440617
>>440610
а у меня не полыхает)
#488 #440740
>>440610
Перед тем как пойти сюда, я гуглил и пытался делать то, что там описано
В итоге обосрался с тем, что я объявил переменную, которой обозначал массив.
sage #489 #440954
Сегодня пытался собрать один проект с кучей зависимостей на шинде. Нет, против шинды ничего не имею, дело в другом.
Качаю, стало быть, исходники, распаковываю, соснольку открываю, перехожу в нужную папку. Открываю ридми, и... начинается. Чтобы собрать эту библиотеку, используйте систему сборки такую-то. Ну, хорошо. А вот тут используйте систему сборки уже другую. А здесь, чтобы все заработало, встаньте под углом 43.5 градуса к горизонту, начните дрочить и напевать гимн СССР. А вот тут можете даже не пытаться что-то сделать - не заработает все равно, и никакие CPPFLAGS="-Lc:/путь/к/очередной/параше/ -lparasha" не поможет: библиотеку мы видеть отказываемся.
Кстати, о библиотеках. Мы, авторы охуенной библиотеки, которая так востребована, что была скачана целых три раза за последний год, ебали всех в жопу, и потому наше говно компилится в .dll + .def (хуярьте свои ссаные .a сами). А мы, авторы еще более охуенной библиотеки, ебали ту библиотеку и ее авторов, и нахуярим .lib и .exp (что это блять вообще?), просто потому, что можем.
Больше не могу писать, полнейшее расстройство и апатия из-за всех этих дегенератов. Почему нельзя, сука, мать его, ПРОСТО сделать нормальный рабочий configure.exe, который, мать его, будет понимать CPPFLAGS? А потому что ебали мы в рот тебя, пользователь, пердолься с очередной высранной школьником нитакойкаквсе системой сборки вместо написания кода.
Закончилось, кстати, тем, что curlpp то ли не слиноквалась, то ли собралась без экспорта символов. Тут мое терпение лопнуо, и я нажал кнопку выключения.
Благодарю за ваше ебаное внимание.
#490 #441003
>>440954

> не может сам собрать статическую либу


> не знает, что .lib - по сути тот же .a (хотя пользоваться ей в mingw не желательно)


> не осилил поставить msys


> configure.exe

#491 #441072
>>439915

>На жену и дочь уже не встает


>и дочь


Ой-вей...
sage #492 #441135
>>441003
Привет, пердолик. Вообще-то мсис идет с мингв в комплекте, а .либ не линкуется мингв. Но дело не в этом. Нахуя мне пердолиться с мсис и прочими анальными игрушками? Мне надо как можно быстрее собрать это говно и заняться делом.
sage #493 #441138
>>441135
Линкуются и статические, и динамические - формат тот же. Бывают проблемы из-за ABI и всяких внутренних функций, но в простых случаях все работает.

> Нахуя мне пердолиться


> Мне надо как можно быстрее


> Не осилил запустить sh из MSYS и сделать ./configure; make. Вместо этого долго пердолится.

#494 #441139
>>426441

>Стандарт читать нунахуй.


Ну вот есть православные ресурсы для лентяев вроде тебя и меня.

http://en.cppreference.com/w/cpp -- официальный сайт, но пишется дебилами индусами. Они составляют английские предложения так, что смысл иногда противоположный. Но зато полная спецификация.

http://www.cplusplus.com/info/faq/ -- неофициальный сайт, но очень внятный и наглядный. Всё сразу разбито по категориям: что к какой библиотеке написано прямо в шапке, описаны отличия C++11 и старого стандарта (там в шапке переключаешь, по умолчанию описывается старый стандарт).

В общем, в сумме эти два ресурса исчерпывают все твои потребности.
#495 #441141
>>435602

>С++11 у Страуструпа ты вряд ли найдешь.



http://www.stroustrup.com/Programming/ -- для новичков

http://www.stroustrup.com/4th.html -- для крутых парней
sage #496 #441142
>>441138
Вообще-то осилил, из него и запускал. А ты хуесос простой, попробуй сначала слинковать, потом кудахчи.
sage #497 #441145
>>441142
Алсо, со всем этим я так или иначе разобрался. Проблема вот в чем:

>curlpp


>msys.bat


>cd /put'/k/papke/s/govnom


>./configure --prefix=/nyashnii/put' CPPFLAGS="-I" (ну ты полян, там дальше пути)


Получаем нормальные .a-файлы, все чики-пуки. Собираем проект, к которому линкуем curlpp

>-L/nyashnii/put'/lib/ -lcurlpp


>undefined reference to че-то-там-из-курлпп, штук 6 разных


Заметь, я, как ты и говоришь, просто запустил configure из-под msys. И получил хуем в жопу.
#498 #441150
>>441145
У меня на венде буста нет. Ты бы лучше сказал, какие конкретно reference у тебя undefined.
sage #499 #441154
>>441150
Лень опять включать это говно. Скорее всего на curlpp::Cleanup, curlpp::Easy, curlpp::options::Url, curlpp::RuntimeError, curlpp::LogicError (это то, что у меня используется). Хедеры curlpp/cURLpp.hpp, curlpp/Easy.hpp, curlpp/Options.hpp.
На пинусе все идеально собралось и слинковалось, а тут пердольство какое-то, нихуя не приспособлено для работы.
sage #500 #441156
119 Кб, 1053x595
sage #501 #441159
g++ -Wl,-s -mthreads -shared -Wl,--out-implib,release\libololord0.a -o release\ololord0.dll object_script.ololord.Release -L"c:\Qt\4.8.6-mingw-4.8.2\lib" release\ololord_resource_res.o -LC:/qt/lib/beqt-qt4/share/beqt/../../lib/ -lBeQtCore4 -Lc:/c++/lib/cppcms/lib/ -lcppcms -lbooster -Lc:/c++/lib/odb/lib/ -lodb -lodb-sqlite -Lc:/c++/lib/odb-qt-qt4/lib/ -lodb-qt -Lc:/c++/lib/curl/lib/ -lcurl -Lc:/c++/lib/curlpp/lib/ -lcurlpp -Lc:/c++/lib/boost/lib/ -lboost_regex -Lc:/c++/lib/srchilite/lib/ -lsource-highlight3 -Lc:/c++/lib/file/lib/ -lmagic -Lc:/c++/lib/sqlite/lib/ -lsqlite3 -lQtGui4 -lQtCore4
Makefile.Release:161: recipe for target 'release\ololord0.dll' failed
mingw32-make[3]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src/lib'
Makefile:34: recipe for target 'release' failed
mingw32-make[2]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src/lib'
Makefile:40: recipe for target 'sub-lib-make_default' failed
mingw32-make[1]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src'
Makefile:39: recipe for target 'sub-src-make_default' failed
./release\abstractboard.o:abstractboard.cpp:(.text+0x8330): undefined reference to `_imp___ZN6curlpp4EasyC1Ev'
./release\abstractboard.o:abstractboard.cpp:(.text+0x8381): undefined reference to `_imp___ZN6curlpp4Easy6setOptERKNS_10OptionBaseE'
./release\abstractboard.o:abstractboard.cpp:(.text+0x84e7): undefined reference to `_imp___ZlsRSoRKN6curlpp4EasyE'
./release\abstractboard.o:abstractboard.cpp:(.text+0x8815): undefined reference to `_imp___ZN6curlpp4EasyD1Ev'
./release\abstractboard.o:abstractboard.cpp:(.text+0x896b): undefined reference to `_imp___ZN6curlpp4EasyD1Ev'
C:/MinGW/4.8.2/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: ./release\abstractboard.o: bad reloc address 0x2 in section `.text$_ZN27BoardFactoryPluginInterfaceD1Ev[__ZN27BoardFactoryPluginInterfaceD1Ev]'
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: [release\ololord0.dll] Error 1
mingw32-make[2]:
[release] Error 2
mingw32-make[1]: [sub-lib-make_default] Error 2
mingw32-make:
[sub-src-make_default] Error 2
13:02:23: Процесс «C:\MinGW\4.8.2\bin\mingw32-make.exe» завершился с кодом 2.
119 Кб, 1053x595
sage #501 #441159
g++ -Wl,-s -mthreads -shared -Wl,--out-implib,release\libololord0.a -o release\ololord0.dll object_script.ololord.Release -L"c:\Qt\4.8.6-mingw-4.8.2\lib" release\ololord_resource_res.o -LC:/qt/lib/beqt-qt4/share/beqt/../../lib/ -lBeQtCore4 -Lc:/c++/lib/cppcms/lib/ -lcppcms -lbooster -Lc:/c++/lib/odb/lib/ -lodb -lodb-sqlite -Lc:/c++/lib/odb-qt-qt4/lib/ -lodb-qt -Lc:/c++/lib/curl/lib/ -lcurl -Lc:/c++/lib/curlpp/lib/ -lcurlpp -Lc:/c++/lib/boost/lib/ -lboost_regex -Lc:/c++/lib/srchilite/lib/ -lsource-highlight3 -Lc:/c++/lib/file/lib/ -lmagic -Lc:/c++/lib/sqlite/lib/ -lsqlite3 -lQtGui4 -lQtCore4
Makefile.Release:161: recipe for target 'release\ololord0.dll' failed
mingw32-make[3]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src/lib'
Makefile:34: recipe for target 'release' failed
mingw32-make[2]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src/lib'
Makefile:40: recipe for target 'sub-lib-make_default' failed
mingw32-make[1]: Leaving directory 'C:/Qt/build/active/ololord-Desktop_Qt_4_8_6_MinGW_4_8_2_32bit-Release/src'
Makefile:39: recipe for target 'sub-src-make_default' failed
./release\abstractboard.o:abstractboard.cpp:(.text+0x8330): undefined reference to `_imp___ZN6curlpp4EasyC1Ev'
./release\abstractboard.o:abstractboard.cpp:(.text+0x8381): undefined reference to `_imp___ZN6curlpp4Easy6setOptERKNS_10OptionBaseE'
./release\abstractboard.o:abstractboard.cpp:(.text+0x84e7): undefined reference to `_imp___ZlsRSoRKN6curlpp4EasyE'
./release\abstractboard.o:abstractboard.cpp:(.text+0x8815): undefined reference to `_imp___ZN6curlpp4EasyD1Ev'
./release\abstractboard.o:abstractboard.cpp:(.text+0x896b): undefined reference to `_imp___ZN6curlpp4EasyD1Ev'
C:/MinGW/4.8.2/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: ./release\abstractboard.o: bad reloc address 0x2 in section `.text$_ZN27BoardFactoryPluginInterfaceD1Ev[__ZN27BoardFactoryPluginInterfaceD1Ev]'
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: [release\ololord0.dll] Error 1
mingw32-make[2]:
[release] Error 2
mingw32-make[1]: [sub-lib-make_default] Error 2
mingw32-make:
[sub-src-make_default] Error 2
13:02:23: Процесс «C:\MinGW\4.8.2\bin\mingw32-make.exe» завершился с кодом 2.
sage #502 #441160
>>441159
Блять, разметка. http://pastebin.com/frjGPNJ0
#503 #441194
>>439771 >>439956
Братишка, один вопрос.

http://pastebin.com/SuUGYAJG

>uint8_t compressed = (uint8_t)calloc(k, sizeof(uint8_t));


>sizeof(uint8_t)



Почему не написать единицу в качестве второго аргумента? uint8_t разве может занимать не один байт?
#504 #441211
>>441194
Можно написать. Но так не нужно задумываться, что же такое 1 в этом контексте. А правильнее писать вообще так:
uint8_t∗ compressed = calloc(k, sizeof(∗compressed));
Во-первых, каст в Си не нужен, потому что calloc возвращает void∗, а во-вторых, если потребуется сменить тип compressed, не придется править еще и вызов calloc.
#505 #441246
>>440434
А почему не std::vector<float>? Зачем эти пердоленья с аллоками?
#506 #441257
>>441246
потому что Си?
#507 #441260
Аноны, помогите с задачей.
Дан массив из N элементов(вещественных чисел). И нужно провести с элементами разные действия..

Как заполнить массив вещественными числами?
Нагуглил
(rand()) / float((rand()))
Но он выводит только положительные числа, а нужны еще и отрицательные
#508 #441262
>>441260

>нужны еще и отрицательные


Вычти из результата сколько-нибудь, будут и отрицательные.
#509 #441269
>>441262
Блять, какой же я тупой. Спасибо.
sage #510 #441291
>>441269
Да, ты действительно тупой. Уёбывай отсюда и никогда не возвращайся.
#511 #441292
Аноны, как указать на модуль элемента массива??
#512 #441296
>>441292
(abs(arr))
#513 #441322
Что здесь не так?
Нужно заменить отрицательные элементы массива их квадратами и вывести элементы по возрастанию.

for (i = 0; i < N; i++){
\t\t{
\t\tif (a < 0) a = (a * a);
\t}
\t\t{
\t\t\tif (a > a[i + 1]){
\t\t\t\tm = a; a = a[i + 1]; a[i + 1] = m;

\t\t\t}
\t\t}
\t}
\tfor (i = 0; i < N; i++)
\t{
\t\tcout << a << "\n";
\t}
#515 #441328
>>441325
Такая "сортировка" не сработает.
sage #516 #441379
>>441159
Продолжение банкета.
Решил я, значит, еще раз попытаться. Делал в этот раз все по уму. Поудалял все говно, распаковал чистенькие исходники заново, запустил msys. Чтобы избежать проблем с указанием путей к либам, решил ставить все в папку с mingw, в которой при конпеляции все ищется. И что же? Буст поставил нормально. zlib нормально. Openssl тоже. Начал ставить curl, а он openssl не видит. Продублировал в CPPFLAGS, не помогло. Плюнул и собрал так. Начал собирать curlpp, а он не видит curl. Причем, заметьте, буст видно, а курл нет. Так может все же не я виноват, а?
#517 #441401
http://pastebin.com/geYa7V84
Помогите, почему иногда крашится???
#518 #441409
>>441401
строчки 48, 49
если i = N-1, то j = N. выход за границы массива.
#519 #441438
>>441409
поменял на j<N-1
http://pastebin.com/JcNsRSPc
Все равно, иногда крашится.
#520 #441447
>>441438
i < N-1
for выполянется как минимум 1 раз независимо от условия.
#521 #441455
>>441447
Еще что-то крашит до этих строк, т.к выводится только список элементов перед крашем.
#522 #441466
>>441455
18 строка. Может rand() возвращает 0?
#523 #441469
>>441455
index не проинициализировано, если первый жлемент максимальный
#524 #441473
>>441469
и вообще, что за адская смесь Си-стиля и С++-стиля? используй std::vector, std::swap, std::sort
За такой код на ревью убил бы.
#525 #441485
>>441473
минимально причесанный код.
http://pastebin.com/391BwTaS
#526 #441603
>>439771
Кстати, у тебя с приоритетами вроде здесь наёбка.

>compressed[k] |= (source[i_n])?1:0 << j;



http://ru.cppreference.com/w/cpp/language/operator_precedence

Я полагаю, ты хотел сказать следующее:

>compressed[k] |= ((source[i_n]) ? 1 : 0) << j;

#527 #441610
>>441485
Что почитать, чтобы понять твой код?
Нам препод книжку дал, но там очень поверхностно описано, больше половины гуглить приходится.
#528 #441615
>>441610
Cppreference.com
#529 #441666
>>441603
Да-да, я без IDE под рукой писал. Все уже переделано:
>>439956
435 Кб, 700x919
#530 #441714
Посоны, не бейте. Говнокод ли, а ли нет?
[code]
b.pos.x = (b.pos.y? (b.pos.x/b.pos.y) : b.pos.x) (b.speed timeStep);
b.pos.y = (b.pos.x? (b.pos.y/b.pos.x) : b.pos.y) (b.speed timeStep);
[/code]
#531 #441715
>>441714
О чем я думал, рассчитывая, что не запорю разметку. Вот: http://ideone.com/xSDeAx
#532 #441725
>>441715
Конечно говнокод. Что это должно делать?
алсо перекат
>>441690
#533 #443703
>>439914
Еще раз спасибо за помощь. Про тебя я не забыл, анон. Препода напряг, думает. Как будет новая инфа - отпишусь.
Тред утонул или удален.
Это копия, сохраненная 13 марта 2015 года.

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

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