Это копия, сохраненная 13 марта 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
это потому что ты пидор.жпг
Разумеется, тот кто ответил на большую часть постов в предыдущем треде - хейтер и неосилятор. В этом не может быть сомнений.
Видел но там нет 2-3х последних постов в которых мне ответили, и нигде нет... А я не сохранил.
Продублирую вопрос:
Есть один класс в нем есть map
typedef struct NewStruct{
unsigned id;
} STRUCTAZAZA;
typedef map<size_t,NewStruct> NewType1;
class class1
{
NewType1 _mapStorage;
}
Как правильно организовать доступ к _mapStorage соблюдая инкапсуляцию, или просто нахер её и набыдлокодить прямой доступ к переменной класса?
Доступ из стороннего (не наследуемого класса)
Няша, кто отвечал мне ответь ещё раз!
Сука, как ты заебал уже меня. Но ладно.
Короче, если тебе нужно только читать эту переменную, не меняя ее, то делаешь public метод:
const NewType1 &mapStorage() const { return _mapStorage; }
При этом возвращается ссылка, что позволяет избежать создания копии.
Если надо и читать, и изменять, то добавляешь еще один public метод:
void setMapStorage(const NewType1 &x) { _mapStorage = x; }
По сути это уже получится близко к тому, чтобы просто сделать _mapStorage приватной, но через метод правильнее (пока не вникай, возможно, в дальнейшем с практикой поймешь причину).
Спасибо :3
FTPClient->TransferType = ftBinary;
if(SaveDialog->Execute())
{
FTPClient->Get(Listbox->Items->Strings[Listbox->ItemIndex],
SaveDialog->FileName+(Listobx->Items->Strings[Listbox->ItemIndex]), true, false);
ShowMessage("Готово");
}
хочу чтобы сохранялось как с браузера, чтобы имя уже было указанно.
ну я же не по своей воле... так бы не стал бы таким зашквариваться
Хуй в рот ты хочешь.
кто тебе сказал, что их жизни были ошибкой?
Взять из файла текст (слова, разделённые знаками препинания и пробелами) и сдвинуть буквы, в каждом слове, влево или вправо, на n символов. Результат записать в файл.
Есть подозрения, что это самый низ и уже существует много готового кода. Собственно нужна помощь (подробный алгоритм действий, ссылки на похожие задачи или даже куски кода).
Сейчас даже не могу из файла вытянуть текст в массив=(
Студент 1 курса, изучаю C++ вот уже 2-3 дня.
Даже если существует функция "взять текст из файла и сдвинуть символы влево", суть твоего задания в том, чтобы написать аналог этой функции самостоятельно.
Читай учебник, хуесос тупой. Тут помогают с проблемами в програмном коде, а не генетическом.
Это верно. У меня нет намерения выполнить всё одной функцией. Ситуация такая, что я не знаю как подойти к вопросу. Я 2 раза перечитал методичку и какие-то кусочки мозаики имеются, но как реализовать их я не знаю. Мне до сдвига ещё нужно добраться. Сейчас пытаюсь понять, как вытянуть строку из файла, для того чтоб можно было дальше ей манипулировать. Как-то так.
Преподу передай что он тоже хуесос, раз по его ссаной методичке ничего не понятно. Хотя скорее всего вы оба долбоебы.
Сокращённая программа обучения, вечернего отделения. Около 20 часов лекций. Вот и думай.
Такая программа подразумевает, что ты будешь большую часть изучать самостоятельно. Учебник бери и приступай.
>сдвинуть буквы, в каждом слове, влево или вправо, на n символов
Что это значит? Движение относительное, если ты все сдвинешь на n символов, то нихуя не поменяется.
Думаю у него там циклический сдвиг, типа "huy" -> "uyh", хотя вообще да, не очень понятно, что ему надо.
Платиновый вопрос: как правильно начать сразу с c++11? Входные данные: достаточно глубокое понимание железа, программирования в целом, но большой опыт в основном пхп/питон/жабаскрипт. Трогал хаскель, даже что-то работало, немного делал коммиты на С++ в большие проекты, STL использовал, почему пойнтеры после realloc херятся знаю, сортировки написал. Вроде бы всё понятно и просто, функции-типы-классы, но нет уверенности, язык не стал инструментом, пока только как препятствие. Хотелось бы чтобы всё по хардкору, складно, непротиворечиво, внятно, коротко и по делу. Есть такие книги/туторы/волшебные таблетки? Стандарт читать нунахуй.
Он разве не tl;dr? Я как-то пытался вебстандарты читать, понял что гиблое дело.
http://rutracker.org/forum/viewtopic.php?t=4123652
Алсо, пикрелейтед - фичи C++11 относительно предыдущего стандарта.
А ну-ка поясни мне.
Почему ты возвращаешь ссылку? Нужно возвращать по значению. Ну вызовется один раз конструктор, да. Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти.
>Ну вызовется один раз конструктор, да.
Представь, что ты возвращаешь какой-нибудь контейнер с хулиардом элементов. Такой конструктор копирования будет очень долго работать. А если ты эту функцию ещё и в цикле вызываешь, а?
>Но зато не будет такой такого, что какой-нибудь пидор изменит значение в этой ячейке памяти.
Не изменит, там же возвращается константная ссылка.
Читать его нужно для прояснения спорных моментов и понимания устройства языка.
Обычно, такое нужно с уровня regular developer. Senior и выше уже хорошо ориентируются в стандарте.
По задачке из этого поста.
Считывать и записывать в файл научился. Вопрос: как вывести в string? Я пытался сделать тип char, но он так понял с ней не совместим. Записать в массив получилось(просто создал заведомо больший массив), но толку от этого на практике нету. Собственно вопрос: как записать из файла в строку?
Вот код. И сразу по поводу библиотек - знаю что тут 100% есть лишние, но старался подключать всё, что могло понадобиться.
Код добавлю в следующим посте, не получается из-за какого-то слова из спам листа.
\t\tfin.open("tfi.txt");
\t\tif (!fin.is_open())
\t\t{
\t\t\tcout << "Такого файла не существует!";
\t\t\treturn -1;
\t\t}
\t\t
Лучше в конструктор путь файла пихать сразу, читабельнее, и нет вероятность, что будет вызваны дефолтные конструкторы внутри класса.
Хотя я не знаю как реализован ifstream, думаю, нормальные С++ погроммисты поправят, если не прав.
Типа
ifstream file(path);
if (!file.is_open()) return -1;
fstream file("1.txt");
if (!file.is_open()) return -1;
string data((istreambuf_iterator<char>(file)), (istreambuf_iterator<char>()));
cout<<data<<endl;
Мне кажется, что это лучший вариант. И работает достаточно быстро.
Если не прав, то пофиксите, пожалуйста.
TvojaMamka++ и PHPStorm.
std::ifstream f("hooy");
if (!f.is_open()) return EXIT_FAILURE;
std::string s;
f >> s;
А у тебя какое-то раскоряченное нечитаемое говно.
студия
qt-creator и тот компилятор, который с ним поставляется (вроде g++)
f >> s; - чтение до пробела. А не всего файла, бро.
std::string s; - вызов дефолтного конструктора, к-й тебе нахуй не нужен тут.
Ок, с первым обосрался, не прочел доки. Даже представить не мог, что кто-то может придумать такое бредовое поведение.
А вот на второе глубоко насрать. Даже при использовании SSD затраты на вызов конструктора пренебрежимо малы по сравнению с чтением файла. Зато код читабельнее.
Ну а какой, по твоему, оптимально удобный и читаемый способ прочесть весь файл в строку?
Учитывай, что сначала потребуется узнать размер файла, дабы не перевыделять память сотню раз. В то время, как передавая в конструктор выделение будет сразу, через std::distance.
На самом деле можно поставить флаги на игнор пробелов и переходов на новые строки. Тогда будет читаться file>>string.
Но это медленней, чем istreambuf_iterator. Т.к. никаких проверок, типа пробелов и т.п. нет.
Ну и как бонус, используя istream_iterator к-й с проверками на пробелы и т.п. можно считать сразу в вектор, например.
vector<string> data((istream_iterator<string>(file)), (istream_iterator<string>()));
Вот так, например.
Может где-то не прав, но это быстро и читабельно вполне, при знании STL.
А так всегда рад узнать хорошие способы сделать что-то по другому.
Да глупо это, оператор >> должен тупо считать весь файл в строку без всяких проверок. Хз каким местом там думали.
Алсо, нахуя скобки вокруг istream_iterator<string>(file)?
Тут прости, не подскажу.
Есть вариант, что без скобочек он будет считать второй параметр (istreambuf_iterator<char>()) будет считаться как просто объявление переменной.
Но это мои догадки, может и не прав.
Чет ты хуйню городишь.
vector<string> data(istream_iterator<string>(file), istream_iterator<string>());
прекрасно работает.
С istreambuf_iterator<char> нет. Я про чтение в строку. С стрингом и так всё ок. Это да.
Чет я не догоняю, о чем ты говоришь. Я про скобки вокруг istream_iterator<string>(file) и istream_iterator<string>(), а ты про что?
http://ideone.com/XBKdid
Он же должен унаследовать все конструкторы.
Конструкторы не наследуются. Вообще никак. Надо их определять вручную в каждом классе-потомке. Самого это ужасно раздражает.
Т.е. в моем понимании, для С++98 должен вызываться в этой ситуации копи-конструктор, а для С++11 - move-конструктор.
http://pastebin.com/AkWcth1z
Кстати у тебя move конструктор не правильный. Его аргумент не должен быть константным.
Точно, а это еще в 11 году добавили.
Почему, блять, ебучий СТРУСТРУП и КОМПАНИЯ™ фокусируются на всяком говне, но не могут сделать нормальную линковку в языке? Почему у языка нету единой реализации? Почему С++ такое говно?
Это все для того, чтобы долбоебы типа тебя туда не лезли.
Согласен, спасибо. (например, чтобы менять на nulptrl указатели, которые мы перемещаем из rvalue-объекта).
Кстати, за второй пик.
Сегодня напоролся. Нормально за с++11 поясняет?
Первое издание читал, офк.
Нахуя вы эти книги пачками читаете? Больше практики и все само придет, ничего там такого уж охуенного нет, в книгах этих. Многие решения вообще крайне сомнительны. То, что их умеют грамотно и к месту применять авторы, не значит что другим они тоже подходят. У всех свой стиль, как и в литературе, например.
Ну, просто стандарт лучше детальнее прочту. Я читаю обычно только по тому, что интересует.
тем более там материал занимает 60 страниц(скачал только что).
Заранее прошу прощения за сажу, мне лень ее отключать. Спокойной ночи.
Это можно легко выключить, если тебе так не нравится.
потому что если хотел предсказуемого поведения, то надо было писать на Pure C.
Слишком жестоко.
Мне нужно из картинок получить .avi файл. DitrectShow подойдёт? Там есть всё нужное?
Автор пикчи вообще не шарит. return 0 - это мирное, удачное завершение.
При этом под виндой и линуксом вызов опенцвшного метода выдает разные результаты. Совсем чуть-чуть разные, отличаются в 14 знаке после запятой. Такое впечатление, что виндовая версия имеет чуть меньшую точность - разница как раз выглядит как округление. То есть под линуксом я получаю
1.07159721374511718750000000000000e+02
а под виндой
1.07159721374511720000000000000000e+002
Нужно чтобы результаты были одинаковы. Что может быть причиной?
Под виндой компилю 2010 студией, под линуксами gcc 4.6.3
OpenCV в обоих случаях собран из исходников там же.
ЧСХ, джава-версия, работающая с opencv через jni, выдает одинаковые результаты на обеих платформах. Так что я даже не знаю что думать, ведь если бы проблема была внутри нативного кода опенцв, то она проявлялась бы и под джавой.
Потому что Name Mangling делает линковку ущербной и ломает ABI, но кресты такие by design, откажись от перегрузки функций и операторов и будет тебе щастье
компилируй на винде с помощью MinGW, у студии компилятор древнее говно мамонта
ещё, кстати, в винде libc содержит сюрпризы, и ведёт себя не всегда в соответствии со стандартом(например, позволяет извлекать квадратные корни из отрицательных чисел, вместо того, чтобы вернуть EDOM)
Использует. Но если так, то, наверное, майкрософтовцы для чего-то так сделали, что libc не так работает? Может, так нужно для винапи.
А если нет винапи - то и с самым идеальным libc хочется заняться чем-то другим, кроме программирования.
>>432886
Нет, это ты пидорское говно, которое не умеет читать стандарт. Там явно перечислены случаи copy elision. И вообще если объект действительно не перемещается, то какого хуя он должен создавать побочные эффекты? Если ты на это рассчитываешь — у тебя проблема с дизайном. Алсо мув конструктор и прочие друзья будут вызваны если объект действительно будет перемещен.
С glib2/boost и OpenGL/SDL можно жить и без WinAPI.
Хотя, если честно, то WinAPI самый вменяемый из фреймворков что есть в стандартной поставке с виндой.
>glib2/boost
>OpenGL/SDL
Так нормальные люди идут в программирование не потому, что хотят заработать или это модно, а потому что им это интересно. И я совершенно не понимаю, что может быть интересного в программировании с теми библиотеками, что ты назвал. Да, жить можно, но это не жизнь, после часа хочется бросить программирование от безысходности.
Не, ну SDL няшен, просто делает что сказали. Остальное говно, да.
говарят типо библеотека есть utf8.h
И где?
Что-то подобное было, но там была другая библиотека, шарп (хотя внутри скорее всего те же плюсы) и шиндоус 7,8.
Не пойму как инициализировать в объекте статичный член 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
Сборка завершилась с ошибкой.
int A::b = 10;
т.е. static данные всегда публичные? Они существуют даже без инициализированного объекта? Я уже думал в стандарте какие изменения появились.
создатель Pythonа же.
Нет. Приватные тоже так иництализируются, но доступа к ним вне класса нет
компилю пустой консольный 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> заставляет вшить целиком какую-то откомпилированную библиотеку или типо того, но как тогда правильно вызвать заголовочный файл?
Может и нормально, что программа с "стандартным для с++ вводом/выводом" весит минимум пол метра, но может есть тогда схожие по удобству альтернативы?
Учи C++11 и STL. Пили свои реализации всяких структур данных, онанируй на красивый код.
class MOYKLACC : public NEMOYKLASS { public:
MOYKLACC(NEMOYKLASS RODICH = NULL) : NEMOYKLASS(RODICH) {}
~MOYKLACC() {}
/
VSE */
};
Хуле тебе мингвуша не нравиться?
Ты охуел что ли?
А как же свобода. А как же поебаться с make?
Ты чо, не труЪ что ли?
> Учи C++11 и STL
Это доки Страуструповские и иже с ним читать? Или есть что-то более научно-популярное?
С++11 у Страуструпа ты вряд ли найдешь.
Хотя точно не знаю.
Начни хотя бы с обзорной статьи на хабре или wiki.
Не, эти знания у меня уже есть. Всякие циклы, операторы ветвления я напишу без подсказок, но это же ни о чем, а дальше уже глаза разбегаются.
Ну что-то конкретно тебе интересно?
Мне вот графика. Я начинал сразу с OpenGL.
И кресты учитшь, и GLSL еще (который как бы диалект Си).
Окей. Допустим, я начинаю пилить графическую йобу на OpenGL. Банальный вопрос: есть что конкретное почитать или самому гуглить?
Ну тогда тебе в соседний тред к змеедушителям.
Они там тебя за утиную типизацию пояснят и по циклу в кортеже пустят. А потом еще и декораторов навесят, ну что бы совсем красиво.
Короч, есть книги по 2.0. Их мало, и ты найдешь их.
Но твоя цель - 3.0 минимум.
Инфы на русском очень мало.
Старой книги тебе хватит что бы понять за конвейер и как его программировать.
Дальше уже придется читать официальные доки на английском.
пойдёт. по-моему это перевод antongerdelan.net/opengl
Так вот, ну я создал тестовый файл .bmp 3 x 2 пикселя, открыл его HEX-редактором в notepad++ и ничего не понял, конечно же. Потом создал 2 монохромных файла из единственного пикселя 1 x 1, один чёрный, другой белый, два весёлых гуся. Отличаются, естественно, они на один один символ, который расположен ближе к концу файла.
Но это мне никак не помогает понять, что происходит. Кто-нибудь может привести кол для создания маленького bmp=файла?
Там же шапка-хуяпка-заголовок, задающая битность, наличие RLE-сжатия и т. д. С бинарными форматами обычно долго разбираться, лучше возьми готовую библиотечку.
>>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 в тексте только один раз встречается. Вот я и прошу помочь, туда я вообще копаю или нет. Наверняка же хоть кто-то занимался этим.
блять, ну вот и пользуйся opencv! или WinAPI. или еще хоть чем.
смотри, ты задаешь довольно тупые вопросы на дваче, но при этом надеешься самостоятельно реализовать чтение\запись формата bmp.
Я тебе ещё раз повторю, что 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. МОЖНО МНЕ ПРОСТО ПРИМЕР, ГОТОВЫЙ КУСОК КОДА? Уж как-нибудь разберусь, что там какая шапка значит.
http://en.wikipedia.org/wiki/BMP_file_format
http://lmgtfy.com/?q=c%2B%2B+bmp+loader+example
Какой же ты aутист все-таки...
Ну и? Куча говна по ссылке. Какие-то 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++, я бы сам написал.
Я неадекватный, потому что я банально не понимаю, что происходит. Ну вот приведу примеры ещё из гугления:
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? Вообще уже не воспринимаю.
тебе ссылку дали даже на википедию, там структура BITMAPINFOHEADER описана, блять, последнее поле - оффсет 50, размер 4, сколько байтов, сука?
нет, хочу жрать говно!
Ого, спасибки. Ну тогда разберём по частям, не мною написанное.
>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).
А потом на ассемблере.
Сложнее всего веб-парашная часть, кстати. Дизигн, CSS, вот это все. Больше всего времени потратил, и все равно кривовато отображается.
>>All of the integer values are stored in little-endian format (i.e. least-significant byte first).
целочисленные типы могут по-разному представляться в памяти - либо когда в нулевом байте целого старшие разряды числа, либо когда младшие. здесь в явном виде представляют число в little-endian формате. если просто записать число в файл в бинарном виде, оно запишется в соответствии с архитектурой компьютера, не обязательно литтл-ендиан.
последний раз тебя покормил.
Я не спрашивал, что такое формат записи числа, я спрашивал про синтаксис
>(unsigned char)( sizeAll ) (unsigned char)( sizeAll>> 8) (unsigned char)( sizeAll>>16) (unsigned char)( sizeAll>>24)
Что это вообще за >> и что оно делает.
Уточню вопрос: почему побитовый сдвиг идёт на чар, а не на унсигнед инт8. C++ у нас в конце-концов или что?
Ну и по синтаксису поясните, не лучше ли через касты делать?
Но на оп-пике не нормальное завершение.
>>436537
Вы, ребят, издеваетесь наверно. Ни оидн ещё не овтетил на мои вопросы. Сами придумываете вопросы и сами на них отвечаете. Я спрашиваю, не лучше ли uint8_t вместо unsigned char, а вы мне говорите, что это почти одно и то же. А то я не знаю. Но стандарт BMP-шный пишется в определённое количество 8-битных байт. Стало быть, uint8_t лучше?
И синтаксис непонятен. Это уже вопрос чисто по языку. Вопрос тоже по кастам.
>file[ 3] = (unsigned char) (sizeAll>> 8);
Не лучше ли написать:
>file[ 3] = static_cast<uint8_t>(sizeAll>> 8);
Это одно и тоже.
Си-каст сначала делает статик-каст.
Для uint8_t нужен отдельный хедер.
Чисто формально, для строгого указания на 8 бит нужно использовать uint8. Но общая практика показывает, что почти всюду используют unsigned char.
кудах
shared_ptr потоко-безопасен на чтение из разных потоков. Как и обычный указатель. Никаких мьютексов там нет.
Но если где то есть запись, то нужна внешняя синхронизация - мьютекс или atomic.
Так что при корректном использовании никакой потери производительности нет.
За подробностями можешь сходить в гугл с запросом c++ shared_ptr thread safety.
Как мне их лучше всего преобразовать в координаты элементов двумерного массива. На паскале бы я говнокод с ord'ами накатал, но ведь наверняка в таком классном языке есть короткие способы. Тем более под рукой сейчас только студия
Ну, банально. A1 - это [1][1]; C7 - это [7][3]
Кстати, встал еще один вопрос по ходу решения задачи. Как мне матрицу смежности для ходов коня по шахматной доске составить?
Ссылка это разыменованный всегда проиницализированный константный указатель.
Кастишь первый символ в char, вычитаешь 'А'. Второй символ можно преобразовать в инт через stoi и вычитаешь 1, а можно, как и первый, кастить в char и вычитать '1'.
Да, действительно. Спасибо
double (f)(double) = [](double x) { return xx; };
cout << f(3) << endl;
И это говно взлетело, чего я совсем не ожидал. Понятия не имею как это работает, такое вообще правомерно писать?
Исправьте/поясните как нужно делать. В идеале задача очень простая, создать массив из N указателей на функции многочлены вида 1, x, x2, x3...
Звёздочки проебались, кину лучше скрин.
Поясните, как это работает? Эта лямбда-функция (или как её там) остаётся где-то в памяти? А f на неё ссылается? Как тогда нормально удалить указатели и всё в таком духе.
Это лямба функция, ты прав.
А вот double (звезда f)(double) это указатель на адрес начала функции.
Т.е. какой-то вариант, типа:
https://ideone.com/AVWKBi тоже работает, ибо ты берёшь именно адрес функции.
Обычно их хорошо оборачивать в typedef.
Например так:
https://ideone.com/tDD40w
Если что-то не так сказал, то поправьте.
А лямбду почитай в вики всяких. Это по сути та же функция.
массив с динамической длиной
т.е. если добавляешь элемент, а места уже нет - выделяется новый кусок памяти (обычно по размеру равный текущему, умноженном на константу (1.5-2)), туда копируется все из текущей памяти, а потом все мочится в текущей и массив живет уже на новом месте, но со свободным хвостом. в stl-реализации capacity вектора никогда не уменьшается.
в остальном это обычный массив, непрерывным куском лежащий в памяти.
Спасибо
https://ololoepepe.me/board/b
https://github.com/ololoepepe/ololord
Норм. Не зря напилил.
Хоть и всем похуй, кроме твоего возросшего скилла и времени потраченного с интересом.
Я так же пили сайт для своего бота. Правда я пилил на апаче с CGI на крестах.
Пиши код, блять. Заебали читуны. Просто бери и пиши код, гугля все непонятное. Голая теория ничего хорошего не даст.
Я не хочу быть такой макакой как ты блядь, я хочу знать почему при создании new int() мы получаем переменную с нулем внутри, а при int x с говном внутри, и еще много подобных мелочей о которые ты будешь постоянно натыкатся и гуглить. Кокококудах теория нинужна иди нахуй.
Есть ли аналог функциям gets(%имя символьного массива%) или cin.getline(%имя массива%, %его размер%). для векторов? Иными словами: нужно, чтобы программа после запуска приглашала пользователя на ввод текста (с пробелами) и текст этот записывала в тот самый безразмерный на данный момент чаровый вектор.
Тебе нужно чтобы введенный текст посимвольно был в векторе, кроме пробелов? Говори нормально блджад.
не не, мне нужно, чтобы весь введенный текст (а текст может содержать пробелы), записывался в char'овый вектор, размер которого изначально не указан
товарищ, либо я тупорылый, либо MVS не едет. Чо то у меня не пашет. пачму? =(
ох нихуя себе, чо тут можно делать. спасибо за помощь
Ты не запомнишь все эти мелочи без практического применения. А я столкнусь, нагуглю и запомню. Теория нужна для практики, без практики она на хуй не нужна. В универах вас учат матану не для того, чтобы умничать на бордах, а чтобы решать вполне практические задачи. И тут так же.
Я не предлагаю учить все это наизусть. У всех подобных неочевидных мелочей есть органичное обьяснение, вытекающее из истории языка.
А матан вообще для души, практических применений я пока не вижу.
И еще, есть ли выгода объявлять переменные в кейсах switch'а, али память выделяется в процессе компиляции под все переменные, массивы и т.д вне зависимости от того, где они стоят??
Если у тебя выполняется несколько кейсов, то значит ты забыл про break;
Выделять память в кэйсах имеет смысл. Например для какого-то действия тебе нужен буффер.
Выделится она только в том случае, если этот кейс был активирован. По аналогии с функциями, только другая область видимости.
не не, break'и на месте, блок кейса, где объявляю массив char'овый и вызываю его заполнение gets'ом в фигурных скобках.
Когда создаешь свое консольное приложение, выбирай пустое, и создавай main.cpp сам. Без stdafx.h. Всегда гугли C++ way вместо сишки. Единственный верный main - int main. Используй <string> вместо параши с strlen. Нахуя windows.h?
После того как я все это исправил case заработал нормально.
Наверное, второе, предварительно string::reserve-ив длину склеенной строки.
Но не принимай на веру, я хуй.
Говорил же хуй.
Ну все ясно тогда с тобой. mp3 кодируется, конечно же, не на основе матана, а исключительно при помощи святого духа. Ну, манямирки это дело личное, хуй с ним.
А объяснения проще загуглить, чем читать субъективное мнение очередного пропиаренного старпера. Какой бы он ни был охуенный, у него свой подход, а у тебя свой, и для тебя твой подход всегда будет лучше.
Какой подход, какой mp3, поехавший? Обьяснения можно загуглить, а можно почитать людей, которые сами пилили этот язык. Второе всяко лучше первого.
И да, когда мне понадобится кодировать в mp3, я возьму готовую билиотеку.
http://www.cplusplus.com/reference/ostream/ostream/write/
>ostream& write (const char* s, streamsize n);
Вопрос следующий: если передать параметр n == 0, то:
1) просто ничего не запишется;
2) кинется какое-нибудь ебанутое исключение или ещё что-нибудь;
3) что-то другое (что именно?).
Спасибо.
Засчитано. Макака попытался оправдать подмену программирования чтением, но соснул, когда кукарекнул про неиспользование матана в жизни. Все, на хуй послан, чепуш.
>работаешь с первого курса
>какой то чепушила который НИЛЮБИТ ЧИТАТЬ доебался на реквест литературы
>фантазирует и называет макакой
Все ясно с тобой.
О, заебись, спасибо. Умеют же сделать для людей.
зачем задавать такие вопросы или рыться в документации
стандартная библиотека - это обычная библиотека
подключаешь ее отладочную версию, в ide ставишь брейкпойнт на функцию и смотришь что у нее там в потрохах
ну либо просто переход к определению делаешь
Так я тоже работаю, со второго правда, в этом году диплом. И читать люблю, но не бесполезные простыни ака учебники, а краткие и по делу написанные статьи. Твой аргумент инвалид. Кем работаешь?
тем, что std::string - это часть стандарта С++, а String - я хуй знает, что такое, скорее всего, ты про какой-нибудь класс из MSVC++.
вообще не вздумай учить ничего сверх стандарта, пока нормально хотя бы с ним не освоишься. отключай в компиляторе все свистоперделки, которые не являются стандартом.
Есть вариант решения: static перед объявлением. Рабочий вариант, но тут начинаются философствования на тему "оно же не сотрётся из памяти, как же не сберечь байтиков-то".
Имеются ещё тривиальные варианты, кроме хитровыебанных паттернов в стиле Александреску. Языка программирования, да что там, самого программирования не знаю, поэтому если предложите вариант, то с простым примером.
Надеюсь это ты ответил, а не кто-то за тебя. Так вот. А я успел и фронтендом позаниматься (HTML/CSS/JS), и жабовым бэкендом. Очень быстро перевелся на крестовый проект, в одного пилю. Так что тоже кое-что смыслю. Ты в общем не обижайся, я ж не со зла, просто реально мало толку с книг. Скачал как-то несколько модных, пролистал, понял, что многое и так уже сам использую, даже не зная названия паттернов/приемов.
В условиях задачи нет этого, иди на хуй. Смарты для слабаков, у меня и без них ничего не течет. Нехуй где попало в куче выделять, контейнеры и так за тебя это делают.
Ну смотри, ебана. Можно сделать char *govno = new char[9000];
А можно: std::string zebok;
Во втором случае тебе не надо думать о выделении памяти и удалении, потому что контейнер (string в данном случае) объявлен на стеке, а его содержимое уже в куче, но неявным для тебя образом. Понимаешь? Может, контейнер - не лучшее название, ну, обертка тогда, что ли. Но вообще это контейнер. std::vector туда же.
Прата (Prata) http://rutracker.org/forum/viewtopic.php?t=4123652
Потом решай, что ты хочешь: драйвера и прочее системное говно - задумайся лучше о сишке, десктоп - выбирай фреймворк (хули там выбирать, Qt вне конкуренции) и ебаш на нем очередной текстовый редактор/шахматы/мессенджер/что-то еще, чего тебе не хватает.
Попробую почитать Прату, как раз лежала в закромах эта книга. Читал Липпмана, но это просто какой то бред, там нечего делать, просто как обзор по языку, задания никакие. Я пока точно не знаю на каком API делать и так далее.
Не обижаюсь, это же сосач, лол. Отвечал я.
Просто мне ужасно повезло и у меня появился годный, толковый препод, который именно программист а не теоретик. И он, кроме всего прочего, советует читать книжки и зубрить стандарт.
зачем ты пишешь на этом говне? (я про VC++)
нужны гуй-библиотеки? родина им дала qt, нет, не хочу, хочу жрать говно.
Все могут ошибаться, и преподы тоже. Они к тому же обычно, даже если очень охуенные, все равно по роду деятельности привыкают давать советы так, чтобы они подошли как можно большему числу учащихся, но при этом результат может быть далеко не наилучшим, так как советы рассчитаны на массу. Но и я могу ошибаться, ясен хуй. В общем, не принимай на веру ни меня, ни препода, думай и оценивай сам. Попробуй прочитать книжку, потом написать какой-то проект. В другой раз попробуй писать другой проект, читая только гугл.
особо с гуей не работаю на плюсах, мне ок, я мазохист
Как из байта вывести биты, с этим ебучим сдвигом вправо, спасибо.
Эндаешь с единичкой, выводишь, затем сдвигаешь вправо на бит, эндаешь с единичкой, выводишь, затем снова и снова и снова, 8, 116, 32 или 64 раза в зависимости от разрядности.
Спасибо, робит.
Спасибо за советы, анон, постараюсь извлечь пользу.
Ух ты, круто. C++11 наконец-то. Объясни на пальцах, что это такое.
1) .get() -- выглядит как контейнер, поясни. Почему (технически) нет возможности прямого доступа a ?
2) Оно всегда убиваетcя на границе ближайшего скоупа, как и любая другая переменная, или есть другие варианты поведения?
Ну епта, это обертка вокруг указателя. Очевидно, что ты не можешь применять оператор [] к обертке, только к указателю, который и возвращает get().
Деструктор вызывается тогда, когда разрушается последний shared_ptr, содержащий ссылку на данный указатель.
О, вроде прояснило, спасибо. Правда забуду потом детали, но принцип понятен. Кстати, крутые парни не пишут без сеги?
Функция 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");
\tarray = (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}
Функция 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");
\tarray = (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}
братишка, переложи на http://pastebin.com/
Без перекладывания трудно будет понять, где одна звёздочка, где две.
Сначала сагал, потому что вопросы были тупые (да и щас большинство тупые), а потом как-то в привычку вошло.
http://pastebin.com/wscs7K1i
В общем вопрос в том, как обратиться к элементам двумерного массива, под который размечена память подобным образом.
Запутался. К двумерному массиву ты обращаешься http://pastebin.com/1qd5HPCX , где i - номер строки, j - номер столбца.
В чём собственно вопрос?
В общем если я правильно понял, то ответ на твой вопрос:
http://pastebin.com/3wdjVr0a
http://pastebin.com/dTQSVytT
Пробовал так, не взлетает.
Видимо, вылезаю куда-то за пределы дозволенного.
Если честно, у тебя здоровый код, в котором мне лень копаться. Поэтому: если хочешь не просто копипастить текст, а компилировать онлайн, имеются замечатльные онлайн-платформы для этого. Вон, православная 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.
Спасибо, буду разбираться.
Курил мануалы, и, судя по всему, память выделяется под одномерный массив, и некорректно обращаться к нему как к двумерному.
Тебе объяснить что ли, как двумерные массивы создавать в сишечке? Давай объясню.\tДвумерные массивы -- это массивы указателей типа на массивы типа. Покажу на примере создания матрицы int из трёх строк на пять столбцов (без инициализированных значений).
http://ideone.com/DIkq0A
P.S. Обрати внимание, сколь тщательно ведётся работа с освобождением памяти. Сначала освобождаем память в каждой строке, потом освобождаем сам массив указателей опустошённых строк.
Ну и да, с ходу забыл добавить #include <stdlib.h> , отредактировал, добавил.
Кроме того, ругается на unsigned int в цикле for. Значит тебе нужен или C99, или перепиши на инт или на что там там принято в сишечке, я без понятия. Ансигнед индекс это чисто плюсовая привычка, не очень хорошая, наверно.
Пожалуйста. А так, я бы вообще запретил все компиляторы, что ниже C99 и C++11. Как люди вообще писали код до их повсеместного распространения, ума не приложу.
Подумай, какая область тебе интересна. Сети, медиа, десктоп ui, сервера, хайлоад, много областей ещё. Читай, копай, изучай. Пробуй все. Базовые знания полезны во всех областях. Потом решишь куда углубляться.
Посмотри что требуют в вакансиях, потдягивай что не знаешь. Можно еще по собеседованиям походить, просто чтобы посмотреть, если ты нормально их переносишь.
>Bytes 29-30: Word. Bits per pixel.
ставлю 8.
А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков?
Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых.
Единственное, что удаётся найти:
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'.
>А теперь внимание вопрос: а как сделать именно градации серого, а не 256 цветных оттенков?
Никак, делай 8 бит + ч/б палитра.
>Гугля 8 bit bitmap grey header stackoverflow.com непосредственно хэдеров не нашёл для 8-битных серых.
Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать.
>Никак, делай 8 бит + ч/б палитра.
Я и спрашиваю, как сделать чёрно-белую палитру. В какие байты хэдера что проставить.
>Ну сохрани изображение из GIMP/Photoshop как черно-белое, да посмотри какие поля что будут содержать.
Под рукой только помирающий компьютер да MS Paint.
Нафига тебе BMP? Возьми лучше TGA - он гораздо проще. В примитивном варианте простой хидер на 18 байт, потом несжатые пиксели.
http://www.paulbourke.net/dataformats/tga/
Для градаций серого в третий байт пишешь тройку, в 16-й восьмерку, с палитрой не ебешься.
Хочу я BMP. Уже всё написал, осталось только проставить, чтоб в градациях серого было.
А вот уже нагуглил, в правильную сторону нагуглил?
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:
возлежание с виртуальной имманацией вычислителя
мимо 10 кривых реалтаймов с костылями
лол, тредом промахнулся
Допустим, у меня есть указатель на объект, созданный где-то в недрах чужого (библиотечного) кода. Указатель валидный, разыменовывается и все такое. Задача: "приделать" к объекту некие данные, скажем, int. В классе для этого средств никаких нет, он может быть вообще "пустым", типа class Yoba {}; Может, какие-то трюки с адресацией есть? Не могу загуглить, потому что не знаю, как описать это нормально. Нужно для оптимизации. Да, я отдаю себе отчет в том, что это в любом случае очень плохо, но я знаю, что делаю и для чего.
еще, желательно, перед этим память после Yoba как-то захватить, чтобы не потерли
>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
>указатель на объект, созданный где-то в недрах чужого (библиотечного) кода
А хотя, я жопой прочитал. Приношу свои извинения. Спасибо, попробую.
http://pastebin.com/Ueb57ywM
работает ТОЛЬКО если за объектом ничего нет.
агрегирование не подойдет?
чтобы не портить память под Yoba + размер класса (4), так как Hack не определен и размер его неизвестен. Но heap с такими манипуляциями портится все равно.
Моя идея заключается в том, чтобы создать обертку, которая, если транзакции нет, создает ее, а если уже есть, то увеличивает счетчик вложенности (чтобы не передавать в следующую функцию текущую транзакцию, там просто создается новая, которая по факту не начинает транзакцию ODB, а только увеличивает счетчик).
Соответственно, когда из функции выходим, счетчик уменьшается при разрушении моего объекта-обертки. Когда разрушается последний объект, счетчик становится снова равным нулю и транзакция ODB наконец завершается.
Ну а раз транзакция должна быть одна на поток, а thread_local я не использую, т.к. поддержка старого стандарта крестов, то использую мьютекс и map (ключ - указатель на транзакцию ODB, значение - счетчик). Но odb::transaction::current() (возаращает текущую транзакцию для данного потока) уже и так использует мьютекс, получается что надо дважды лочить, что есть оверхед.
Вот я и решил хранить счетчик сразу в транзакции ODB, если уж она гарантированно возвращается одна для данного потока.
Так то я думал сделать типа такого: http://pastebin.com/eJLKN2RZ
Но там же переменная, а не указатель (это я затупил сначала, да). Надо как-то заставить переменную думать, что ее адрес сменился. Что-то ничего в голову не приходит.
Сейчас пытаюсь читать Алгоритмы, построение и анализ.
Удваиваю Прату http://rutracker.org/forum/viewtopic.php?t=4123652
Алгоритмы пока отложи, только путать будут. Сначала с языком освойся.
Итак, есть у меня овердохуя проектов на крестах на близкую тематику. Соответственно, они часто используют одинаковые исходники. И я, как мудак, храню в папке каждого проекта копию этих исходников. Стоит ли говорить, какой это геморрой, когда нужно поменять один такой исходник во всех проектах? Но ещё хуже - могу забыть обновить их в других папках, что чревато глобальным пиздецом.
Как бы мне оптимально всё это организовать? Выделить отдельную папочку common, и туда пихать общие исходники?
А как потом конпелировать? У меня всё на простеньких самописных makefile-ах конпелируется.
Так напиши библиотеку свою. Я так и сделал. Берешь все свои повторяющиеся исходники, организуешь их в какую-то осмысленную архитектуру, пишешь библиотеку (не забывая о pimpl) и пользуешься.
Тогда жри говно и не выебывайся. Можешь еще все в одну папку положить и в мэйкфайлах прописывать путь для поиска хедеров в этой папке. Еще можешь ссылки создавать на файлы, лол. Больше нихуя тут не сделаешь.
>>439178
Нет, не фэйк. Пишу на этой дрисне, ибо в веб-параше без нее никуда. Постоянно проигрываю с дебилов, которые еще и бэкэнд на этом хуячат.
Засунь их в гитовую репу. Эту репу подключай как субмодуль к своим проектам. Профит.
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 стоит. Пробовал заменять её на гуарды - та же хуйня.
У тебя цикл инклюдов. Чтобы получить AbstractObject.h тебе нужно включить туда NioCore.h, но для того чтобы получить NioCore.h тебе нужно включить туда AbstractObject.h который ты не можешь получить потому что у теяб нет готового NioCore.h. Гварды там не помогут. Нужно избегать максимально инклюдов в хедерфайлах. По нормальному в хедерфайле должен быть только инклюд класов от которых наследуется клас которому принадлежит хедер, хедеры с константами и библиотечные (но их тоже лучше стараться избегать). Все остальные хедеры нужно пихать в файл реализации. Вместо инклудов в хедерах используй forward declarations. В твоем случае в NioCore.h вместо #include "AbstractObject.h" нужно сделать class AbstractObject.h;
> class AbstractObject;
конечно же
А если я захочу поменять имя класса, рефактор поймёт, что форвард декларейшены нужно тоже поменять?
Спасибо, буду делать так.
C - функциональный язык.
С++ - мультипарадигмовы, с НОРМАЛЬНЫМ, по сравнению с С, ООП. Ну и всякими плюшки.
Круглую крышку ОЧЕ сложно провалить в отверстие, которое она закрывает. Практически не возможно, не спилив рожки и не будучи суперменом.
У круга оптимальное соотношения периметр/площадь - экономия материала.
Это называется экстремальное собеседование. Жди и не парься, веди себя вежливо. Будет наезжать - отвечай тоже вежливо.
Та мне норм. Но вот наезды я вряд ли несколько выдержу. Начну язвить и САРКАСТИРОВАТЬ.
двач-помогач же
ты ебан?
кто тебе мешает в С передавать функции в функции и возвращать функции и не иметь побочных эффектов?
никто блять!
JavaScript же.
>>439437
Ты не прав.
>В чистом функциональном программировании оператор присваивания отсутствует, объекты нельзя изменять и уничтожать, можно только создавать новые путем декомпозиции и синтеза существующих. О ненужных объектах позаботится встроенный в язык сборщик мусора. Благодаря этому в чистых функциональных языках все функции свободны от побочных эффектов.
Так что сишка - не функциональный язык. С костылями и допущениями почти любой язык можно было бы называть функциональным.
Схуев ли она моя? Алсо, я тоже сначала так думал. Но потом разобрался, и понял, что все не так просто. Когда-нибудь и ты поймешь. Нет, не поймешь, слишком тупой и мелкобуквенный.
Съеби, вниманиеблядок.
>intarray=(int)malloc(20sizeof(int));
Зачем нужно (int*) после равно? Что он делает? Маллок это же просто разметка некой области в памяти.
Звёздочки проебались, но вы поняли что вторая звёздочка после 20.
C это язык со статической типизацией. Если ты объявил указатель на тип int то ты не можешь просто взять и поместить его на любую область памяти. Сначала ты должен пообещать компилятору что там записано именно int. (int *) это и есть такое обещание.
Malloc возвращает указатель на void. Здесь каст до указателя на инт
Ну и я добавлю ещё, что если это именно C, то каст здесь не нужен.
тебе нужны абстрактные классы, виртуальные функции, вот это всё
Я нихуя не понял, что ты хочешь. В крестах можно, например, вот так: http://pastebin.com/aiQ9XnkD Если это не то, изъясняйся лучше, а то хуйню какую-то несешь.
А если я вместо него передам какой-нибудь Ogre::String? Это же не будет работать. Чтобы это работало, T должен быть расширенным от AbstractObject.
В крестах все это на твоей совести. Никаких дженериков. Да и если ты укажешь Ogre::String, оно просто не скомпилируется.
Алсо, я уже советовал тебе бросать нахуй этот говнокодный огр.
Если ты не используешь никаких методов объекта этого класса, то конечно скомпилируется, но тогда нахуя его вообще передавать?
Unity, UE4
Всё, кажется понял.
Унити и уе4 - это конструкторы. Мне нужен движок, где я буду программировать, а не таскать ассеты.
Если ты используешь
method(T *t) {
t->huj()
}
и передаешь туда объект класса Zh без хуя, то не скомпилируется.
Ты бы попробовал хоть раз ими воспользоваться, диванный теоретик. Там и программировать можно не меньше, чем на говноогре. Купишь UE4 - у тебя все его исходники даже будут.
Нет, спасибо. Я делаю игры для идеи, а не для перетаскать-пачку-ассетов-выложить-в-апстор.
Всё, я понял. Спасибо.
Да у тебя мозги засраны пропагандой из /gd/, что с тобой спорить. Попробуешь - поймешь, что все далеко не так просто. А до тех пор верь во что хочешь.
Зачем верить? Я полтора года делал игры на джаве. Мне нравилось. Попробовал сделать что-нибудь на JMonkeyEngine - ощущения уже не те. И всё из-за системы ассетов, которые можно просто перетащить. Но там всё более хардкорно, нежели на юнити или в уече.
Я хочу его конвертнуть (в смысле создать новый, а старый ОСВОБОДИТЬ) в массив: 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 значений в "неполный байт"?
Впервые в подобной ситуации, онон. Сам студентота, нужна помощь. Есть система равенств вида пикрелейтед и ряд условий для нее (n=10). Задача - доказать, что показателей u, v будет определенное количество препод уже сжалился и сказал, что их должно быть 16. Причем сделать это нужно силами С++. Однако, я не в силах решить эту задачу даже на бумаге - хуй знает почему. Не получилось это и в маткаде - запутался и нихуя не сделал. Штудирую самоучитель по dev c++, на нем и пытаюсь написать, но пока на уровне "Hello, world". Словом, на тебя вся надежда, онон.
Как писал уже выше, впервые прошу помощи по учебе. Не знаю чем платить тут у вас принято. Могу разве что пак порногифок на 11 Гб залить.
Спасибо.
Препод дал времени максимум до следующей недели, но в крайнем случае попробую выкроить еще пару дней.
забыл еще проверку на if (i_n < n), ну разберешься
>квадратные скобки означают взятие целого?
Если как на твоей пикче, то
http://www.wolframalpha.com/input/?i=floor%283.8%29
мимо
для положительных чисел это равносильно взятию целого. спасибо за инфу.
u >> i, конечно же
нет таких пар в заданном интервале. надо как-то доказывать на бумаге, что данные условия исключают существование таких пар.
смотри какая штука. такому решению удовлетворяет только (0,0)
но оно не удовлетворяет первому условию (-1 + 0 =-0 + 0)
противоречие. нет решений.
И вообще, го все на мой /pr/, там прикольная капча и тег [code] работает (да еще и с подсветкой).
Семантику ++ погугли, даун.
a = x++ преобразовывается компилятором в
a = x;
x += 1;
Поэтому тот tmp, что передастся в if будет равен 0
А мне нра))
Хинт 1: можно выбрать другой язык (там кнопочка внизу).
Хинт 2: если перевыбрать тот же язык еще раз, появится другое задание.
Хинт 3: один раз введя капчу, можно оставить 10 постов ()включая тот, во время которого вводилась капча).
неполучается(
compilation error
> один раз введя капчу, можно оставить 10 постов ()включая тот, во время которого вводилась капча).
а вот это клёво
В том-то и дело, онон. Я тоже уверен, что нет решений (на VB так и получилось). Но преподу я так и не сумел эту мысль донести У ВАС ГДЕ-ТО ОШИБКА БЛА БЛА БЛА. Решал по следующей схеме, но ни черта не вышло. Просто нет таких пар, удовлетворяющих данным условиям.
Кинь, пожалуйста код для плюсов, хоть покажу преподу, что мол и так и так невыходит.
ну я же тебе пояснил по условиям. там противоречие. не может быть там решений.
http://ideone.com/wpJ3ZB
Да, это округление в меньшую сторону.
Я так и понял. В любом случае спасибо, анон. Думаю, ошибка в самом условии (может знак неправильно где-то стоит, может еще что), но буду долбать уже препода. В случае чего можно найти тебя здесь?
Пусть эти шлюшки хорошо на тебя поработают
Нужно узнать меньшее число из последовательности, которую вводит пользователь, последовательность не ограничена (Для окончания ввода нужно нажать 0).
Без массивов, только через while.
Я не понимаю, как организовать ввод последовательности? Куда записывать все числа, последовательность ведь бесконечной может быть, а нужно узнать меньшее число. Нужно где-то держать их
Зачем записывать все числа, если с каждым введённым можно выбирать меньшее и сохранять только его?
> последовательность ведь бесконечной
ололо
держи в переменной вне цикла минимальное на текущий момент число, обновляй его в цикле
Не понял немного тебя
У нас вводится ведь сразу over9999 чисел и из них нужно выбрать меньшее.
Чтобы узнать какое из них меньшее, нам нужно все их сравнить ведь
Да, возвращайся с новыми данными. Самому интересно, что там неправильно.
Ну и рабочий код у тебя уже есть. Если нужны ответы, обращайся, распишу по пунктам.
Откуда вы берете такие видео, я понимаю в интернете все есть, но где?
Это замечательное видео, встал. На жену и дочь уже не встает, да и старые они уже и много крови мне попили
читаешь каждое число, сравниваешь с текущим. не нужно ВСЕ числа вычитывать сразу.
>читаешь каждое число, сравниваешь с текущим. не нужно ВСЕ числа вычитывать сразу.
Спасибо
\twhile (n % 10 != 0){
\tcout << "Последовательность \n";
\tcin >> n;
\tif (n<a) n=a;
Так?
Тогда с чем сравнивать в первый раз
с максимально возможным.
Ну хули тут поделать, значит тебе не дано. Иди читай учебники пока не поймешь.
> while (n % 10 != 0)
Это зачем? Тебе с нулём надо сравнивать само введённое число. И сделай цикл с постусловием.
В хачкиле не шарю, не знаю, что там не так. Думаю, ты используешь функции, которые надо импортить.
а, ну ок.
кастить signed в unsigned - быстрый способ получить по ебалу. numeric_limtis для кого придумали?
Там ведь не написано, что при вводе нуля, там о нажатии только.
Вот что получилось в итоге.
Спасибо
#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;
}
>using namespace std;
>setlocale(LC_ALL, "Russian");
>unsigned long long
>a = 18446744073709551615;
>while (n%10!= 0)
что за хуйня, блядь? гори в аду
Считай первое вручную, а while фигачь для ввода начиная со второго. Тогда нумерик_лимитс не нужны.
Тут можно ещё позанудствовать, а сколдько чисел будет введено: 0, 1 или больше.
все норм в этом случае, я ошибся.
В общемвот тебе работающая программа, делающая то, что тебе нужно.
http://pastebin.com/SuUGYAJG
>>using namespace std;
>>setlocale(LC_ALL, "Russian");
>>unsigned long long
>>while (n%10!= 0)
Поясните долбоебу, что здесь не так?
ничего не надо импортировать
думаю создатели этой капчи тоже не шарят в хчк джява тоже не работает kek
хорошо хоть в рнр шарят
Хуй его знает, что там в спам-листе. Тупая макака не понимает, что спам-лист филтрует, в первую очередь, простыни текста, а не спам.
Понял, спасибо.
Это на их совести. Потом попробую порешать, может найду в чем проблема. А вообще, проще выбрать новую задачу. Или вообще ни одна не работает?
Собственно вопрос: как не просто изучить переменные и инструменты языка, но и научиться быстро разбираться в чужом коде, а так же править его с минимумом анальной боли от 100500 ошибок внесённых мною из-за непонимания устройства программы. Я так понимаю, помимо языка нужно изучить принципы построения алгоритмов, основной погроммный базис и принципы работы С++? Какие источники в этом помогут? Можно ли совместить усвоение базы с изучением языка? С чего вообще начинать, учитывая мои намерения, если я не планирую идти в специалисты, а язык мне нужен только для этого хобби?
Изучи базовый синтаксис языка. Это позволит менять значения переменных. Если менять логику, то уже надо видеть алгоритмы, понимать их. Меняешь что-то, смотришь что сломалось/изменилось. Паралельно пишешь свои маленькие програмки с таким же алгоритмом. За полгода сможешь сносно читать код, понимать его. Остальное только с опытом разработки.
Другие люди? Какие другие люди? БЫСТРО - никак, только практика и опыт, сын багов трудных. Читать то ты умеешь, а написать войну и мир? Вот то-то.
Что другие люди делают? Другие люди ещё в школе пишут программки на паскале, на первом курсе пишут программы на си, на втором курсе идут работать кресто-джунами, и к концу 5 курса всё равно задают вопросы вида... ну я не знаю, почитай тред.
Не на тот язык ты замахнулся, чтобы быстро править чужой код. Чужой код в крестах может быть чем угодно. Я вот пытаюсь какие-то маленькие программки писать, и у меня примерно 10 вопросов на каждые 10 строчек кода: "Почему так? Что за говно! А нельзя было так?" и т.д.
Особенно с учётом того, что одну и ту же идею можно выразить чисто процедурно и байтоёбно, а можно нагородить каких-то непонятных структур, а есть ещё мамины функциональщики.
Вообще, на самом деле, изучить малую часть языка можно, написав свои laba2. Но я так понял, ты хочешь полистать две-три книженции и читать чужой код. Так вот, ХУЙ ТАМ ПЛАВАЛ.
Ты сравни исходники, к примеру, Qt и какой-нибудь сишной либы. Охуеешь, насколько сишный код тяжелее понимать. (Я про архитектуру приложения, если что, а не отдельно взятые statement'ы).
>>но я знаю, что делаю и для чего.
Полагаю, что таки нет, ведь в божественном С++ нет (и не будет) стандартизованного ABI, а это значит, что тебе очень повезёт, если в ходе твоих манипуляций с этим указателем программа упадёт сразу, а не начнёт себя забавно вести когда-нибудь потом. Исключение составляют случаи, когда ты компилишь библиотеку на том же компиляторе и с тем же набором флагов, но и там с оговорками.
>>setlocale(LC_ALL, "Russian");
>>unsigned long long
Бля, ну это просто праздник какой-то. Документацию не читай @ на удачу вызывай.
Pardon moi. Объебался я сам, как минимум в реализации crt от ms такой код вполне легитимен.
Realloc может (и часто это делает) переместить блок памяти. Все указатели на начало/тело этого блока, которые ты конечно же рассовал по своей программе то тут, то там начинают указывать неизвестно куда.
Ну, хорошо,
>знаю, для чего делаю
А не просто потому что могу. Хотя уже не актуально, в любом случае.
http://ideone.com/5iD2p7
Лямбда функция - это не обычная функция, а по сути дела объект некоторого анонимного класса с перегруженным operator(). Поэтому лучше использовать auto или std::function.
Как правило, читать чужой код труднее чем писать свой. Особенно на C++.
Полагаю, что имеется в виду смещение от предыдущего указателя стека (до вызова процедуры). В таком случае, если процедура объявлена с соглашением cdecl, то да, 13 байт - очень даже реально.
В деструкторе shared_ptr будет вызван delete или delete с квадратными скобками?
Обычный delete, квадратные скобки будут вызваны в shared_array.
void print_in_binary(int x)
{}
Дело в том, что нельзя использовать массивы, а только простенькие пизденки, такие как ifelse, while;
Интересует не столько вопрос написания кода, как сам алгоритм. Вот например брем число 100, while <деление на 2, вывод 1, если есть остаток, вывод 0, если нет остатка> в принципе число есть, но его необходимо перевернуть, опять же, элементарными средствами. И тут я проебан.
Поклонникам функционального программирования и всяческих рекурсий напоминаю, что здесь вам не тут. Только императив, только хардкор.
http://ideone.com/zaVlMv
А ну да, объебался с ордером. Тебе надо взять маску вида (1 << ((sizeof(int) * 8) - 1)) и двигать влево, а не вправо.
тебе надо reverse результат
Как задать одномерный динамический массив вещественных чисел?
Нагуглил
float a = (float ) malloc(nsizeof(float));
но при компиляции выдает
Ошибка\t1\terror C2040: a: "float " отличается по уровням косвенного обращения от "float"
Мудак, обосрался, бывает.
Скорее всего нет и компилер С думает, что malloc возвращает int, а не void*.
Спасибо, но не помогло.
Может еще нужно что-нибудь подключить?
#include <iostream>
#include <stdlib.h>
Хуиша.
Знаешь, бро, сначала я открыл ideone, дабы накидать тебе код и пояснить нормально.
Но потом я понял, что ты блядский петух, не способный ввести в гугл один запрос. Чтобы кликнуть на первую же ссылку.
Пидор, блядь.
А теперь у меня полыхает от погромиздов, блядь. ХОЧУ БЫТЬ ПОГРОММИСТОМ ПОСОВЕТУЙТЕ ЛИТЕРАТУРЫ. Я ПОГРОМИЗД КАК СОЗДАТЬ МАССИВ?. Тратишь на вас, уёбков, время, а вы одну строку в гугл вбить не можете, уёбки.
а у меня не полыхает)
Перед тем как пойти сюда, я гуглил и пытался делать то, что там описано
В итоге обосрался с тем, что я объявил переменную, которой обозначал массив.
Качаю, стало быть, исходники, распаковываю, соснольку открываю, перехожу в нужную папку. Открываю ридми, и... начинается. Чтобы собрать эту библиотеку, используйте систему сборки такую-то. Ну, хорошо. А вот тут используйте систему сборки уже другую. А здесь, чтобы все заработало, встаньте под углом 43.5 градуса к горизонту, начните дрочить и напевать гимн СССР. А вот тут можете даже не пытаться что-то сделать - не заработает все равно, и никакие CPPFLAGS="-Lc:/путь/к/очередной/параше/ -lparasha" не поможет: библиотеку мы видеть отказываемся.
Кстати, о библиотеках. Мы, авторы охуенной библиотеки, которая так востребована, что была скачана целых три раза за последний год, ебали всех в жопу, и потому наше говно компилится в .dll + .def (хуярьте свои ссаные .a сами). А мы, авторы еще более охуенной библиотеки, ебали ту библиотеку и ее авторов, и нахуярим .lib и .exp (что это блять вообще?), просто потому, что можем.
Больше не могу писать, полнейшее расстройство и апатия из-за всех этих дегенератов. Почему нельзя, сука, мать его, ПРОСТО сделать нормальный рабочий configure.exe, который, мать его, будет понимать CPPFLAGS? А потому что ебали мы в рот тебя, пользователь, пердолься с очередной высранной школьником нитакойкаквсе системой сборки вместо написания кода.
Закончилось, кстати, тем, что curlpp то ли не слиноквалась, то ли собралась без экспорта символов. Тут мое терпение лопнуо, и я нажал кнопку выключения.
Благодарю за ваше ебаное внимание.
> не может сам собрать статическую либу
> не знает, что .lib - по сути тот же .a (хотя пользоваться ей в mingw не желательно)
> не осилил поставить msys
> configure.exe
Привет, пердолик. Вообще-то мсис идет с мингв в комплекте, а .либ не линкуется мингв. Но дело не в этом. Нахуя мне пердолиться с мсис и прочими анальными игрушками? Мне надо как можно быстрее собрать это говно и заняться делом.
Линкуются и статические, и динамические - формат тот же. Бывают проблемы из-за ABI и всяких внутренних функций, но в простых случаях все работает.
> Нахуя мне пердолиться
> Мне надо как можно быстрее
> Не осилил запустить sh из MSYS и сделать ./configure; make. Вместо этого долго пердолится.
>Стандарт читать нунахуй.
Ну вот есть православные ресурсы для лентяев вроде тебя и меня.
http://en.cppreference.com/w/cpp -- официальный сайт, но пишется дебилами индусами. Они составляют английские предложения так, что смысл иногда противоположный. Но зато полная спецификация.
http://www.cplusplus.com/info/faq/ -- неофициальный сайт, но очень внятный и наглядный. Всё сразу разбито по категориям: что к какой библиотеке написано прямо в шапке, описаны отличия C++11 и старого стандарта (там в шапке переключаешь, по умолчанию описывается старый стандарт).
В общем, в сумме эти два ресурса исчерпывают все твои потребности.
>С++11 у Страуструпа ты вряд ли найдешь.
http://www.stroustrup.com/Programming/ -- для новичков
http://www.stroustrup.com/4th.html -- для крутых парней
Вообще-то осилил, из него и запускал. А ты хуесос простой, попробуй сначала слинковать, потом кудахчи.
Алсо, со всем этим я так или иначе разобрался. Проблема вот в чем:
>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. И получил хуем в жопу.
У меня на венде буста нет. Ты бы лучше сказал, какие конкретно reference у тебя undefined.
Лень опять включать это говно. Скорее всего на curlpp::Cleanup, curlpp::Easy, curlpp::options::Url, curlpp::RuntimeError, curlpp::LogicError (это то, что у меня используется). Хедеры curlpp/cURLpp.hpp, curlpp/Easy.hpp, curlpp/Options.hpp.
На пинусе все идеально собралось и слинковалось, а тут пердольство какое-то, нихуя не приспособлено для работы.
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.
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.
Братишка, один вопрос.
http://pastebin.com/SuUGYAJG
>uint8_t compressed = (uint8_t)calloc(k, sizeof(uint8_t));
>sizeof(uint8_t)
Почему не написать единицу в качестве второго аргумента? uint8_t разве может занимать не один байт?
Можно написать. Но так не нужно задумываться, что же такое 1 в этом контексте. А правильнее писать вообще так:
uint8_t∗ compressed = calloc(k, sizeof(∗compressed));
Во-первых, каст в Си не нужен, потому что calloc возвращает void∗, а во-вторых, если потребуется сменить тип compressed, не придется править еще и вызов calloc.
потому что Си?
Дан массив из N элементов(вещественных чисел). И нужно провести с элементами разные действия..
Как заполнить массив вещественными числами?
Нагуглил
(rand()) / float((rand()))
Но он выводит только положительные числа, а нужны еще и отрицательные
Да, ты действительно тупой. Уёбывай отсюда и никогда не возвращайся.
(abs(arr))
Нужно заменить отрицательные элементы массива их квадратами и вывести элементы по возрастанию.
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}
Такая "сортировка" не сработает.
Продолжение банкета.
Решил я, значит, еще раз попытаться. Делал в этот раз все по уму. Поудалял все говно, распаковал чистенькие исходники заново, запустил msys. Чтобы избежать проблем с указанием путей к либам, решил ставить все в папку с mingw, в которой при конпеляции все ищется. И что же? Буст поставил нормально. zlib нормально. Openssl тоже. Начал ставить curl, а он openssl не видит. Продублировал в CPPFLAGS, не помогло. Плюнул и собрал так. Начал собирать curlpp, а он не видит curl. Причем, заметьте, буст видно, а курл нет. Так может все же не я виноват, а?
Помогите, почему иногда крашится???
Еще что-то крашит до этих строк, т.к выводится только список элементов перед крашем.
18 строка. Может rand() возвращает 0?
и вообще, что за адская смесь Си-стиля и С++-стиля? используй std::vector, std::swap, std::sort
За такой код на ревью убил бы.
Кстати, у тебя с приоритетами вроде здесь наёбка.
>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;
Что почитать, чтобы понять твой код?
Нам препод книжку дал, но там очень поверхностно описано, больше половины гуглить приходится.
Cppreference.com
[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]
Еще раз спасибо за помощь. Про тебя я не забыл, анон. Препода напряг, думает. Как будет новая инфа - отпишусь.
Это копия, сохраненная 13 марта 2015 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.