Это копия, сохраненная 24 июля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
надо посмотреть на строку ниже 10 секунд и объяснить, что она делает.
auto _=<::>(auto&_)<%_%=_;%>;
ЗЫ для компиляции достаточно 14 стандарта.
Нет.
Правильно, в 17 уже не скомпилируется
Иди на хуй, ретард-фокусник. Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров. Так-то для большинства задач хватит PureBasic с ассемблерными вставками и годным оптимизирующим конпелятором. Как максимум - сишка. Все остальное - выбросы современного общества с изобилием хуйни для говноедов всех мастей.
>тест на синьора помидора
Merge request denied. Reason: "Пиши код без изъёбств. Третий раз за неделю пытаешься что-то в таком духе написать, ну нахуй уже."
Синтаксические обезьяны же. Уебки не знают, как виртуальный адрес транслируется в физические или что уровень привилегий это не что-то в процессоре, а свойство сегмента, но выебываются друг перед другом синтаксическими извращениями, ебучими liftM, темплейтным говном, тайпклассами (типичный любитель тайпклассов на работе осваивает новый логгер для записи в базу) и прочим. Как меня баттхертит с современной индустрии, пиздец.
>Уебки не знают, как виртуальный адрес транслируется в физические
Да ладно, не настолько же всё плохо.
Блядь. А сам подумать не можешь? На нажатие мыши у тебя скорее всего стоит перерисовка и рисовальщик знать не знает про твой первый круг. Поэтому храни его где-то и рисовальщику скажи, что его нужно рисовать.
Я же код рядом оставил. Сейчас там просто стоит Show скрытого до этого элемента, на месте нажатия мышкой. Как хранить и как рисовать заново я не знаю, где-то есть какое-то гайды по этому поводу?
C++ умрёт? У него же нет ниши, ембедед на си, бизнес на джаве, десктоп си шарп, в остальных местах раст и го в спину дышат.
В нише кодинга втупую кресты останутся только для легаси. В рокет саенс (не эмбед байтоебля, а computer vision, HFT или low-latency, графические движки, обработка звука/видео) может немного уступить Rust, но в целом будет цвести.
Возможно. Если хочешь быть высокоплачиваемым и востребованным в C++, стоит в первую очередь учить математику и алгоритмы. Если по жизни интересует только кодинг (хотя ты еще не знаешь), стоит вкатываться в что-нибудь помоднее типа котлина.
С математикой дружу. Да и доставляет с алгоритмами дрочиться. Вернее доставляет результат. Спасибо. Надо будет обдумать.
Не он, а я. Но я согласен с этим байтоебом. Алсо, нахуй кьюти, каллбэки им не нравятся, ахуеть теперь. Только неосилятор не может в каллбеки с 17 стандартом.
Машина нужна только чтобы запускать браузер. Ты занимаешься разработкой ОС и браузерных движков? Вряд ли.
Скриншот рабочего стола сделай. Уверен что там только 1-2 браузера и тонны всего остального. Какая блять веб-эпоха, дебил? Она в нулевых еще закончилась.
Я про автомобиль, макака.
>Только неосилятор не может в каллбеки с 17 стандартом.
Что там особенного в 17 стандарте для колбеков, чего нет в 11?
>Уебки не знают, как виртуальный адрес транслируется в физические
Рассказывай, послушаем тебя.
>как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров
"я продолжаю утверждать, что семантика языка важнее его синтаксиса"
страуструп
>Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров.
чувак, сегодня черного софта, работающего на нулевом уровне (как инфраструктурные вещи, так и боевую нагрузку), пишут не меньше чем тогда, просто этот "бизнес" сильно посерьезнел - по сути, это уже кибер-оружие как бы ни пафосно звучало, пишется это спецслужбами государств либо своими силами либо частным подрядом у провереных фирм и лиц; те же кто этим занимаются, щас молчат в тряпочку, ибо светит просто снос башки за треп
"коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерах, ворде и офиса в целом, pdf-документов и прочего
и да, тк все это коммерциализировалось, то никто не спешит писать статьи и вообще хвастаться всем этим в интернетах
вот и кажется что нет движухи
>"коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерах
Вот, я знаю что я буду копать если не вкачусь в фронт, с детства мечтал стать хакером (:
Делает лямбду, которая принимает x по ссылке и заменяет на x%x.
atomic<bool> locked {false};
lock() {
while (locked.exchange(true, ...));
}
unlock() {
locked.store(false, ...);
}
>Пока единственное что нашел из годного - это https://www.tutorialspoint.com/makefile/
Что там годного?
Устаревший синтаксис записи правил (которые и так неявно определены), закат солнца вручную (прописывание зависимостей от хедеров, вместо автогенерации зависимостей) и т.д.
>https://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html
> http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
Туториалы про "как закатывать солнце вручную."
При локе: acquire при удачном CAS, relaxed при неудачном.
При анлоке: release.
Объяснение: acquire-release поведения требует стандарт. Почему relaxed — очевидно.
Это не кас, ну да ладно, правильно. Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно. Жду указания на нужный абзац стандарта, который говорит, что таки можно.
Поведай, чем же кас будет лучше чем эксчендж вот конкретно здесь. Про ещё один цикл с лоадом внутри для ублажения кэшей знаю, для простоты опустил.
>Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно.
Вообще ни разу не очевидно почему надо начинать с acq_rel и доказывать, что одного acquire достаточно.
>>14532
>Уточню, почему при твоей расстановке порядков будет выполняться взаимное исключение?
Не понимаю, что ты хочешь услышать.
То, что успешные RMW-операции всегда читают последнее значение (в смысле modification order) атомарного объекта?
>То, что успешные RMW-операции всегда читают последнее значение (в смысле modification order) атомарного объекта?
Да, именно это. Для меня до сих пор загадка, почему оно сделано
так.
Типа
cout << "В лесу родилась ёлочка
...
14 строк
...
В лесу она росла"
?
внутри string.h
То есть если я скопирую текст из Википедии мне его нужно где то в блокноте собрать в одну строку и потом в коде разделять через /n?
Скопируй в текстовый файл, потом из файла через поток fstream можно построчно в цикле выводить getline'ом.
А как иначе?
Raw strings тебе в помощь
Куда вывести то?
const char* s1 = R"(
В лесу родилась ёлочка
...
14 строк
...
В лесу она росла
)";
и выводишь как обычно.
А в качестве обучения с++ пойдет? Я прошел уже половину курса
Зачем нужно вот это конст чар? Я по урокам на Ютюбе сделал вот так.
Рекомендую самоучитель по C++ от Джеффа Кента, там все очень разжевано хорошо, даже я понял(вроде).
У тебя была какая-то переменная х, ты ее передал в функцию. По умолчанию копируется просто значение, а само значение х не изменится после манипуляций над ним в функции. Когда по ссылке (&) передаешь, то соответственно значение поменяется при манипуляциях внутри функции.
Ты обычно будешь пользоваться оператором return все равно, не зацикливайся пока, потом вернешься и разберешься получше.
Если это на половине курса, то курс хуевый.
меня нет
столько лишних знаний и все впустую
мозг - всего лишь килограмм жира и воды
Я не понимаю, какие еще могут быть вопросы. Вот по значению передача, по ссылке добавь амперсанд в прототип и заголовок функции.
Просто создание строковой константы, мало ли куда тебе надо выдать её.
Да, но вряд ли для того, что ты подразумеваешь.
Он быстро распарсевает хуево сделанные (некорректные отступы в основном) мегабайтные конфиг файлы на ксамеэле, за секунды, где нотепад++ будет пару минут скрежетать.
Для собственно кодинга не использую.
Именно для этого. Вроде если допилить плагинами должно быть сносно. Нужно перекатиться из ламповой студии в кроссплатформу без моральных потерь.
Тут же пробелы/табы лишние выводятся
Нихрена не понял.
Вот у меня указатель x
У него значение 100
Указатель указывает на ячейку в памяти, которая хранит значение 100.
Далее
Создаётся переменная var со значением 20
myFunc(x) => myFunc(&var)
И как понять эту хуйню? Что сейчас произошло? Теперь функция выглядит как
myFunc(&var) - это выводит 20
Или myFunc(var) - это выводит что? Номер ячейки?
Или muFunc(&var) - это выводит что?
Ну и ты сначала прототипировал функцию от указателя.
Потом вызвал функцию прочитав var. И получил 20.
Может все таки питон?
Код в прикрепленной пикче выводит 100. Я не понимаю последовательность махинаций этого кода как это пришло к выводу 100.
Ты не производишь никаких действий при вызове функции указывающей на х=100.
Анонас не понимает указатели, не понимает что такое память на низком уровне и как она работает. Я ему предложил питон, он не хочет.
Я читал Герберта Шилдта "C++ шаг за шагом". Попробуй почитать. Все детально разжевано и простым языком. про указатели на 164 странице
Теперь я ближе к пониманию, наверное.
"х" указывает на номер ячейки , где лежит значение 100.
Я адрес значения var кладу в номер ячейки?
То есть я номер ячейки (например 315) переименовал на адрес переменной (например f594g7) и теперь у меня в ячейке f594g7 лежит 100.
По этому когда я пишу cout var он выводит мне значение из ячейки f594g7 то есть 100.
Так это работает?
На самом деле способ передачи всегда один.
Параметр в теле функции - это всегда копия аргумента, который передан в функцию.
Если параметр имеет ссылочный тип (указатель или ссылка), то в теле функции у тебя будет копия этого указателя/ссылки со всеми вытекающими.
Типа того.
Никакого выбора одного из двух способов передачи у тебя нет.
Аргументы всегда передаются одним способом - копированием.
Различие есть в том, что из себя представляет параметр функции (ссылочный или не), а не как он был передан.
>Существует ... при ее вызове
Это поведение задается не при вызове функции, а при ее объявлении.
Можешь еще обратить внимание на sublime. VSCode по функционалу намного ближе к легковесным текстовым редакторам вот только он нихуя не легковесный, чем к IDE.
lower_case или camelСase? Венгерская нотация все? Или еще актуально? Как определиться со стилем написания кода и какой более правильный?
Написать другую функцию с таким же именем, но другим типом аргумент это называется перегрузка функции
void f( float x );
void f( bool x );
И так далее
В том случае написан оператор преобразования структуры к инту.
И вообще, какой лучше на сегодняшний день, в c++17, способ хранить строки в human-readable формате, с поддержкой максимально большого числа символов?
#ifdef _WIN32
Я думаю ответ был дан на оба вопроса вместе.
Не умрет. Кроме того, язык активно развивается во всех направлениях, то есть укрепляет свои позиции. Раст никогда не догонит кресты, к сожалению.
Ну ты и тупой дегенерат, пиздец. Что, сложно когда нельзя просто спиздить код у другого человека? Пиздуй в справку, мразь.
Мне просто нужно показать как это делается, я не знаю как создать множество объектов во время выполнения, а умею только изменять уже готовые.
PictureBox^ pic = gcnew PictureBox или типа того что-то
Дальше добавляешь pic в какой-нибудь массив
Видимо потому что можно приколхозить тупа qt формочки склепанные абы как за 10 минут .
Есть чо в крестах для этого, желательно без сторонних библиотек?
Умею только fstream.
Ага, то, что надо
шо, студентик, поплакаться пришел? а нам тебя не жалко, потому что мы и себя не жалеем!
template<typename... Types>
class Variant
: private VariantStorage<Types...>,
private VariantChoice<Types, Types...>...
{
...
using VariantChoice<Types, Types...>::VariantChoice...;
...
}
Так вот это выражение с using не компилится. Я так понял, тут мы просто объявляем конструкторы всех базовых классов VariantChoice в Variant, раскрывая Types. Однако, компилятор пишет "Types: пакет параметров должен раскрываться в этом контексте". Памагите, пожалуйста, я запутался.
>Так вот это выражение с using
Ето не выражение.
>не компилится
C++17 не завезли в компилятор. Или оно не включено.
>C++17 не завезли в компилятор
Не правда, у меня включен c++17. Точно помню, что подключал его, когда не компилились fold expressions. Даже перепроверял перед тем, как постить в тред. Так что дело точно не в этом.
Видимо, это баг MS-компилятора. С `VariantChoice<Types, Types...>...` в списке базовых классов у него проблем нет, кстати.
GCC и Clang нормально переносят такой using.
> С `VariantChoice<Types, Types...>...` в списке базовых классов у него проблем нет, кстати.
Да, здесь глухо, ни ошибок, ни предупреждений.
> GCC и Clang нормально переносят такой using.
Что ж, спасибо, сам бы попробовал на gcc, но у меня тут, блджад, сочетание отдыха с древним ноутом с виндой и изучением шаблонов.
Полноценная поддержка 17 стандарта у msvc появилась только в версии 19.15. Пруф: https://en.cppreference.com/w/cpp/compiler_support
Так что выкидывай нахуй свое устаревшее говно.
>Полноценная поддержка 17 стандарта у msvc появилась только в версии 19.15. Пруф
Пруф не стоит выеденного яйца.
Код с pack expansion в using-declaration не компилится даже в 19.20 https://godbolt.org/z/XMAy0d
Как я понимаю - это когда виртуальные функции переопределяются в производных классах. Но где-то видел что это дескать просто "наследование", а полиморфизм это когда конкретно абстрактные классы и чисто виртуальные функции.
> Объясните все-таки, что такое полиморфизм
Короче, когда один тип "мимикрирует" под другого.
Например, базовый класс "Сущность" игровая какая-нибудь, у них есть функции Update, Draw и тд.
В наследниках ты пишешь свои определения этих функций и в итоге всё работает единообразно.
полиморфизм в с++ - это очень просто, в отличие от других языков, всего 3 разновидности:
есть зашитый в язык динамический полиморфизм через виртуальные функции классов
есть статический полиморфизм через шаблоны
есть так называемый ad hoc полиморфизм (не путать с функциональщиками, они в этот термин другое вкладывают) в виде перегрузки функций и функций-членов
все просто
> Наследование в С++ реализуется набором ad-hoc-механизмов, однако, его использование называется в сообществе языка «полиморфизмом» (а сокрытие полей — «абстракцией»)
Ну теперь я вообще запутался.
Сокрытие полей это же ведь инкапсуляция? А ad-hoc в C++ вон выше анон тоже писал, что это перегрузка функций.
проблема в другом: кое кто не понимает разницу между присваиванием и инициализацией
>Наследование в С++ реализуется набором ad-hoc-механизмов
я ж говорю, термин ad-hoc в различном контексте имеет отличающиеся коннотации
в данном случае имеется ввиду что ты в крестах явно задаешь связи наследования между классами, выстраивая тем самым иерархию классов, в других же языках механизм наследования может быть по другому сделан
>>1008826 (OP)
Здравия, изучаю C++ несколько лет, но с большими перерывами, вот недавно опять начал, для того чтобы освежить знания прошел на edx курсы: Introduction to C++, Intermediate C++ и Advanced C++. Вопрос в том что делать дальше? Понятно что можно(и наверное так и нужно бы сделать) начать изучать stl. НО! Скорее всего мне опять не хватит мотивации это сделать, потому что я не знаю где это все применять. Аноны, покидайте области в которых применяется С++ и ресурсы или книги с помощью которых их можно начать изучать.
То есть мне кажется моя проблема в том что я не знаю где в принципе применяется программирование, поэтому нет мотивации, так как не знаю куда развиваться.
P.S ХЗ куда писать этот вопрос, если написал не туда подскажите куда лучше его написать.
Забыл добавить. Сейчас у меня есть идея начать изучать математику и реализовывать штуки оттуда на плюсах. Еще можно физику наверное ХЗ.
Да, как уже написали разберись что такое присваивание, а что такое инициализация. Если ты именно про присваивание то 2 и 3 вариант не работают. Если про инициализация то, насколько я знаю, предпочтителен последний вариант, так как он исключает неявное привидение типов, что исключает неявные ошибки.
Есть ли готовые дебильники для отсеивания джунов или студентов на отборе?
Если бы. Мне как-то на собеседовании на ждуна(наверное) подсовывали вопросы прям с cppquiz. Это вообще нормально?
нормально
но щас делают проще: кидают тебе тест на литкоде, ты его прорешиваешь
дальше уже разговаривают по результатам
имхо, вполне годный способ
Ну а что, имхо, чтобы пройти на ждуна в 2019 нужно дохера чего знать
>...не знаю где это все применять
>начать изучать математику
Не еш, подумой.
Для математика самое зашкварное - это задаваться вопросами в стиле "а где это в жизни пригодится?". Это противоречит самым основам математики.
Судя по твоим вопросам, тебе лучше начать с научно-популярных книжек.
Не не не. Математика мне сама по себе нравиться, я про C++.
А ты сам себя к кому причисляешь?
Прост забавно как-то, если ты очуччаешь себя выше джуна или студента, но при этом не в состоянии самостоятельно сформулировать, чем ты круче их.
>cppquiz
Спасибо за наводку. Только я что-то не понял тут подвоха у этого вопроса "повышенной сложности". Без задний мысли сначала ответил ошибка компилятора, что у него int main() ничего не возвращает(хотя это ок оказывается, всегда так было?), потом ответил "1" ну как если бы я вообще первый день читал о С++ и прокатило.
Что за триграф вообще, это какая-то управляющая последовательность?
3 4, не?
Нет, 3 затем 4. Потому что постфиксный вариант инкремента. Сначала в функцию отправляется 3 затем i увеличивается на 1. Как вообще может получится 4, 3?? Даже при ++i будет 4 4.
Надеюсь такую хуйню на собесах не спрашивают. Зачем мне вообще это нужно в голове держать? У меня есть иде и дебаггер. Только не говорите, что на собеседованиях заставляют еще на листочке что-то писать без подсказок.
Это чё троллинг тупостью? Ты боишься что тебя завалят на собеседке инфой со второй главы любого учебника по си/сипп? Если захотят тебе задать задать сложный вопрос по фишкам языка то спросят чё посложнее чем хуйню с пика. Но судя по тому что ты откуда-то аутпут 4 3 надумал, тебе ещё рано на собеседки.
Да я это знаю, просто char массив хранится по-моему по разному в памяти, там как символьная константа если, он не модифицируется при передаче в функцию.
У меня было что-то вроде
char a="hello";
foo(a);функция что-то делала с массивом, меняла регистр по-моему
И был access violation.
А вот когда char[6]="hello";
Все работало.
Ну и ответ примера, typeid(int)==typeid(int[]) возвращает ложь в ответе, это не совсем одно и то же.
Ну ты понял где указатели, судя по курсиву.
Одинаково они хранятся. char *a = "hello"; - это указатель на символьную константу и попытка ее изменения - UB. А char a[6] "hello"; - это массив с копией символьной константы и его ты можешь менять сколько хочешь.
Ну я же говорю, не одинаково же. В описании к тому вопросу на ccpquiz написано, что массив преобразуется к указателю все равно для компилятора.
UB потому что размер не задан четко в случае *a?
>>16706
Это вы толстите видимо. Такие вопросы задавать, это тоже самое если тебя сейчас спросить какую-нибудь хитровыебанную хуйню из программы матана 6 класса, которой вы посветили пару уроков. Ответишь правильно? Сомневаюсь. Такие вопросы никак не отражают действительности о знании предмета. Из таких контор надо бежать.
> программы матана 6 класса
Это где в 6-м классе проходят матанализ?
> Такие вопросы никак не отражают действительности о знании предмета.
Да. Такие вопросы проверяют элементарную вменяемость.
Если ты проваливаешь такой тест, то о знании предмета спрашивать смысла нет.
> заставляют еще на листочке что-то писать без подсказок
Конечно, а потом обмазываются своими инструментами для программированию и рассказываю как всё охуенно.
Ты, кажется, не понимаешь, что это - основы и эти основы надо знать. Скажи ещё, лол, что "зачем мне уметь считать, есть же калькулятор".
А вообще, с там подходом, пиздуй-ка ты во фронтенд.
Поясните, плиз, за file system в с++. create_directories, если ему передать путь типа "\1\4\8\8", создает папки в корне (например "С:\1\4\8\8"). Если создать файл ofstream'ом, передав open'у неполный путь, файл будет в папке проекта. Почему fs remove, которому передали неполный путь, находит то, что создавалось ofstream'ом? Я не понимаю, почему у меня работает то, что работать не должно.
в js треде тебя сначала выебут, а потом обоссут
у крестопетухов сначала обоссут, потом - выебут
Потому что так работают системные вызовы в операционной системе - если ты передал неполный путь, то путь будет считаться относительно текущей директории приложения. Текущую директорию можно поменять через chdir/std::filesystem::current_path
Текущая директория — это понятно. Непонятно вот что:
Проверяю current_path — все как ожидалось, путь до папки с исходниками проекта.
fs::create_directories(неполный_путь) создает папки в C:\
fs::remove_all(первая_папка_неполного_пути) находит их там и удаляет.
Через ofstream создаю файл, передав open(), опять же, неполный путь.
Файл лежит в рядом с исходниками.
fs::remove(неполный_путь_к_файлу) находит его и там и удаляет.
Нет. Проект лежит в папке пользователя. Полтзователь на русском. Из-за этого возникала другая ошибка. Переименовал на английский. Теперь вот что
Странно, кстати - обещают, что create_directory вызывает mkdir, а тот должен нормально работать с относительными путями.
Ты чем компилишь? Может, это играет роль.
Но я не уверен, поскольку я везде в своем проекте при использовании filesystem писал через current_path, т.е. абсолютными путями пользовался, можешь делать так же - только храни путь не в string, а в path, чтобы правильно слеши разруливались.
Блядь, не тот 2 скрин
Если убрать акробатику вокруг current_path и передавать просто стринг с относительным путем, то пишет в C:\
>fs::create_directories(неполный_путь) создает папки в C:\
"\1\4\8\8" это полный путь, т.к. начинается с root directory.
И да, у filesystem::path есть метод exists, чтобы проверить, есть ли такая директория или нет.
Хорошие прогеры разбежались на нормальные зарплаты в современные языки и технологии. Остались только свитерки, пишущие процедурную лапшу за гроши.
нихуя
я есть
у меня сантиметровые очки-лупы и я прочитал больше 10 книг по крестам
поднялся так сказать над вами, червяками
Пришло время переустанавливать шиндовс. У тебя система по пизде пошла. Тебе вместо переименовая нужно было просто перенести папку прокта в другую. Возможно получится обойтись только переустановкой Qt, но я бы рекомендовал ресет всей системы.
А ты вообще читал, на кой хер это ввели в стандарт?
string_view - замена const string& в аргументах функции, да ещё и без нулевого символа.
>переустанавливать шиндовс
Еще рекомендовал бы сменить сам компьютер, страну проживания и пол.
>@fizzbuzz
( ⚆ ʖ ⚆), [08.03.19 22:26]
a1 = 1
if a1 % 15 == 0:
print('FizzBuzz')
elif a1 % 5 == 0:
print('Buzz')
elif a1 % 3 == 0:
print('Fizz')
else:
print('1')
a2 = 2
if a2 % 15 == 0:
print('FizzBuzz')
elif a2 % 5 == 0:
print('Buzz')
elif a2 % 3 == 0:
print('Fizz')
else:
print('2')
a3 = 3
if a3 % 15 == 0:
print('FizzBuzz')
elif a3 % 5 == 0:
print('Buzz')
elif a3 % 3 == 0:
print('Fizz')
else:
print('3')
a4 = 4
if a4 % 15 == 0:
print('FizzBuzz')
elif a4 % 5 == 0:
print('Buzz')
elif a4 % 3 == 0:
print('Fizz')
else:
print('4')
a5 = 5
if a5 % 15 == 0:
print('FizzBuzz')
elif a5 % 5 == 0:
print('Buzz')
elif a5 % 3 == 0:
print('Fizz')
else:
print('5')
a6 = 6
if a6 % 15 == 0:
print('FizzBuzz')
elif a6 % 5 == 0:
print('Buzz')
elif a6 % 3 == 0:
print('Fizz')
else:
print('6')
a7 = 7
if a7 % 15 == 0:
print('FizzBuzz')
elif a7 % 5 == 0:
print('Buzz')
elif a7 % 3 == 0:
print('Fizz')
else:
print('7')
a8 = 8
if a8 % 15 == 0:
print('FizzBuzz')
elif a8 % 5 == 0:
print('Buzz')
elif a8 % 3 == 0:
print('Fizz')
else:
print('8')
a9 = 9
if a9 % 15 == 0:
print('FizzBuzz')
elif a9 % 5 == 0:
print('Buzz')
elif a9 % 3 == 0:
print('Fizz')
else:
print('9')
a10 = 10
if a10 % 15 == 0:
print('FizzBuzz')
elif a10 % 5 == 0:
print('Buzz')
elif a10 % 3 == 0:
print('Fizz')
else:
print('10')
a11 = 11
if a11 % 15 == 0:
print('FizzBuzz')
elif a11 % 5 == 0:
print('Buzz')
elif a11 % 3 == 0:
print('Fizz')
else:
print('11')
a12 = 12
if a12 % 15 == 0:
print('FizzBuzz')
elif a12 % 5 == 0:
print('Buzz')
elif a12 % 3 == 0:
print('Fizz')
else:
print('12')
a13 = 13
if a13 % 15 == 0:
print('FizzBuzz')
elif a13 % 5 == 0:
print('Buzz')
elif a13 % 3 == 0:
print('Fizz')
else:
print('13')
a14 = 14
if a14 % 15 == 0:
print('FizzBuzz')
elif a14 % 5 == 0:
print('Buzz')
elif a14 % 3 == 0:
print('Fizz')
else:
print('14')
a15 = 15
if a15 % 15 == 0:
print('FizzBuzz')
elif a15 % 5 == 0:
print('Buzz')
elif a15 % 3 == 0:
print('Fizz')
else:
print('15')
a16 = 16
if a16 % 15 == 0:
print('FizzBuzz')
elif a16 % 5 == 0:
print('Buzz')
elif a16 % 3 == 0:
print('Fizz')
else:
print('16')
a17 = 17
if a17 % 15 == 0:
print('FizzBuzz')
elif a17 % 5 == 0:
print('Buzz')
elif a17 % 3 == 0:
print('Fizz')
else:
print('17')
a18 = 18
if a18 % 15 == 0:
print('FizzBuzz')
elif a18 % 5 == 0:
print('Buzz')
elif a18 % 3 == 0:
print('Fizz')
else:
print('18')
a19 = 19
if a19 % 15 == 0:
print('FizzBuzz')
elif a19 % 5 == 0:
print('Buzz')
elif a19 % 3 == 0:
print('Fizz')
else:
print('19')
a20 = 20
if a20 % 15 == 0:
print('FizzBuzz')
elif a20 % 5 == 0:
print('Buzz')
elif a20 % 3 == 0:
print('Fizz')
else:
print('20')
a21 = 21
if a21 % 15 == 0:
print('FizzBuzz')
elif a21 % 5 == 0:
print('Buzz')
elif a21 % 3 == 0:
print('Fizz')
else:
print('21')
a22 = 22
if a22 % 15 == 0:
print('FizzBuzz')
elif a22 % 5 == 0:
print('Buzz')
elif a22 % 3 == 0:
print('Fizz')
else:
print('22')
a23 = 23
if a23 % 15 == 0:
print('FizzBuzz')
elif a23 % 5 == 0:
print('Buzz')
elif a23 % 3 == 0:
print('Fizz')
else:
print('23')
a24 = 24
if a24 % 15 == 0:
print('FizzBuzz')
elif a24 % 5 == 0:
print('Buzz')
elif a24 % 3 == 0:
print('Fizz')
else:
print('24')
a25 = 25
if a25 % 15 == 0:
print('FizzBuzz')
elif a25 % 5 == 0:
print('Buzz')
elif a25 % 3 == 0:
print('Fizz')
else:
print('25')
a26 = 26
if a26 % 15 == 0:
print('FizzBuzz')
elif a26 % 5 == 0:
print('Buzz')
elif a26 % 3 == 0:
print('Fizz')
else:
print('26')
a27 = 27
if a27 % 15 == 0:
print('FizzBuzz')
elif a27 % 5 == 0:
print('Buzz')
elif a27 % 3 == 0:
print('Fizz')
else:
print('27')
a28 = 28
if a28 % 15 == 0:
print('FizzBuzz')
elif a28 % 5 == 0:
print('Buzz')
elif a28 % 3 == 0:
print('Fizz')
else:
print('28')
a29 = 29
if a29 % 15 == 0:
print('FizzBuzz')
elif a29 % 5 == 0:
print('Buzz')
elif a29 % 3 == 0:
print('Fizz')
else:
print('29')
a30 = 30
if a30 % 15 == 0:
print('FizzBuzz')
elif a30 % 5 == 0:
print('Buzz')
elif a30 % 3 == 0:
print('Fizz')
else:
print('30')
a31 = 31
if a31 % 15 == 0:
print('FizzBuzz')
elif a31 % 5 == 0:
print('Buzz')
elif a31 % 3 == 0:
print('Fizz')
else:
print('31')
a32 = 32
if a32 % 15 == 0:
print('FizzBuzz')
elif a32 % 5 == 0:
print('Buzz')
elif a32 % 3 == 0:
print('Fizz')
else:
print('32')
a33 = 33
if a33 % 15 =
( ⚆ ʖ ⚆), [08.03.19 22:26]
= 0:
print('FizzBuzz')
elif a33 % 5 == 0:
print('Buzz')
elif a33 % 3 == 0:
print('Fizz')
else:
print('33')
a34 = 34
if a34 % 15 == 0:
print('FizzBuzz')
elif a34 % 5 == 0:
print('Buzz')
elif a34 % 3 == 0:
print('Fizz')
else:
print('34')
a35 = 35
if a35 % 15 == 0:
print('FizzBuzz')
elif a35 % 5 == 0:
print('Buzz')
elif a35 % 3 == 0:
print('Fizz')
else:
print('35')
a36 = 36
if a36 % 15 == 0:
print('FizzBuzz')
elif a36 % 5 == 0:
print('Buzz')
elif a36 % 3 == 0:
print('Fizz')
else:
print('36')
a37 = 37
if a37 % 15 == 0:
print('FizzBuzz')
elif a37 % 5 == 0:
print('Buzz')
elif a37 % 3 == 0:
print('Fizz')
else:
print('37')
a38 = 38
if a38 % 15 == 0:
print('FizzBuzz')
elif a38 % 5 == 0:
print('Buzz')
elif a38 % 3 == 0:
print('Fizz')
else:
print('38')
a39 = 39
if a39 % 15 == 0:
print('FizzBuzz')
elif a39 % 5 == 0:
print('Buzz')
elif a39 % 3 == 0:
print('Fizz')
else:
print('39')
a40 = 40
if a40 % 15 == 0:
print('FizzBuzz')
elif a40 % 5 == 0:
print('Buzz')
elif a40 % 3 == 0:
print('Fizz')
else:
print('40')
a41 = 41
if a41 % 15 == 0:
print('FizzBuzz')
elif a41 % 5 == 0:
print('Buzz')
elif a41 % 3 == 0:
print('Fizz')
else:
print('41')
a42 = 42
if a42 % 15 == 0:
print('FizzBuzz')
elif a42 % 5 == 0:
print('Buzz')
elif a42 % 3 == 0:
print('Fizz')
else:
print('42')
a43 = 43
if a43 % 15 == 0:
print('FizzBuzz')
elif a43 % 5 == 0:
print('Buzz')
elif a43 % 3 == 0:
print('Fizz')
else:
print('43')
a44 = 44
if a44 % 15 == 0:
print('FizzBuzz')
elif a44 % 5 == 0:
print('Buzz')
elif a44 % 3 == 0:
print('Fizz')
else:
print('44')
a45 = 45
if a45 % 15 == 0:
print('FizzBuzz')
elif a45 % 5 == 0:
print('Buzz')
elif a45 % 3 == 0:
print('Fizz')
else:
print('45')
a46 = 46
if a46 % 15 == 0:
print('FizzBuzz')
elif a46 % 5 == 0:
print('Buzz')
elif a46 % 3 == 0:
print('Fizz')
else:
print('46')
a47 = 47
if a47 % 15 == 0:
print('FizzBuzz')
elif a47 % 5 == 0:
print('Buzz')
elif a47 % 3 == 0:
print('Fizz')
else:
print('47')
a48 = 48
if a48 % 15 == 0:
print('FizzBuzz')
elif a48 % 5 == 0:
print('Buzz')
elif a48 % 3 == 0:
print('Fizz')
else:
print('48')
a49 = 49
if a49 % 15 == 0:
print('FizzBuzz')
elif a49 % 5 == 0:
print('Buzz')
elif a49 % 3 == 0:
print('Fizz')
else:
print('49')
a50 = 50
if a50 % 15 == 0:
print('FizzBuzz')
elif a50 % 5 == 0:
print('Buzz')
elif a50 % 3 == 0:
print('Fizz')
else:
print('50')
a51 = 51
if a51 % 15 == 0:
print('FizzBuzz')
elif a51 % 5 == 0:
print('Buzz')
elif a51 % 3 == 0:
print('Fizz')
else:
print('51')
a52 = 52
if a52 % 15 == 0:
print('FizzBuzz')
elif a52 % 5 == 0:
print('Buzz')
elif a52 % 3 == 0:
print('Fizz')
else:
print('52')
a53 = 53
if a53 % 15 == 0:
print('FizzBuzz')
elif a53 % 5 == 0:
print('Buzz')
elif a53 % 3 == 0:
print('Fizz')
else:
print('53')
a54 = 54
if a54 % 15 == 0:
print('FizzBuzz')
elif a54 % 5 == 0:
print('Buzz')
elif a54 % 3 == 0:
print('Fizz')
else:
print('54')
a55 = 55
if a55 % 15 == 0:
print('FizzBuzz')
elif a55 % 5 == 0:
print('Buzz')
elif a55 % 3 == 0:
print('Fizz')
else:
print('55')
a56 = 56
if a56 % 15 == 0:
print('FizzBuzz')
elif a56 % 5 == 0:
print('Buzz')
elif a56 % 3 == 0:
print('Fizz')
else:
print('56')
a57 = 57
if a57 % 15 == 0:
print('FizzBuzz')
elif a57 % 5 == 0:
print('Buzz')
elif a57 % 3 == 0:
print('Fizz')
else:
print('57')
a58 = 58
if a58 % 15 == 0:
print('FizzBuzz')
elif a58 % 5 == 0:
print('Buzz')
elif a58 % 3 == 0:
print('Fizz')
else:
print('58')
a59 = 59
if a59 % 15 == 0:
print('FizzBuzz')
elif a59 % 5 == 0:
print('Buzz')
elif a59 % 3 == 0:
print('Fizz')
else:
print('59')
a60 = 60
if a60 % 15 == 0:
print('FizzBuzz')
elif a60 % 5 == 0:
print('Buzz')
elif a60 % 3 == 0:
print('Fizz')
else:
print('60')
a61 = 61
if a61 % 15 == 0:
print('FizzBuzz')
elif a61 % 5 == 0:
print('Buzz')
elif a61 % 3 == 0:
print('Fizz')
else:
print('61')
a62 = 62
if a62 % 15 == 0:
print('FizzBuzz')
elif a62 % 5 == 0:
print('Buzz')
elif a62 % 3 == 0:
print('Fizz')
else:
print('62')
a63 = 63
if a63 % 15 == 0:
print('FizzBuzz')
elif a63 % 5 == 0:
print('Buzz')
elif a63 % 3 == 0:
print('Fizz')
else:
print('63')
a64 = 64
if a64 % 15 == 0:
print('FizzBuzz')
elif a64 % 5 == 0:
print('Buzz')
elif a64 % 3 == 0:
print('Fizz')
else:
pr
( ⚆ ʖ ⚆), [08.03.19 22:26]
int('64')
a65 = 65
if a65 % 15 == 0:
print('FizzBuzz')
elif a65 % 5 == 0:
print('Buzz')
elif a65 % 3 == 0:
print('Fizz')
else:
print('65')
a66 = 66
if a66 % 15 == 0:
print('FizzBuzz')
elif a66 % 5 == 0:
print('Buzz')
elif a66 % 3 == 0:
print('Fizz')
else:
print('66')
a67 = 67
if a67 % 15 == 0:
print('FizzBuzz')
elif a67 % 5 == 0:
print('Buzz')
elif a67 % 3 == 0:
print('Fizz')
else:
print('67')
a68 = 68
if a68 % 15 == 0:
print('FizzBuzz')
elif a68 % 5 == 0:
print('Buzz')
elif a68 % 3 == 0:
print('Fizz')
else:
print('68')
a69 = 69
if a69 % 15 == 0:
print('FizzBuzz')
elif a69 % 5 == 0:
print('Buzz')
elif a69 % 3 == 0:
print('Fizz')
else:
print('69')
a70 = 70
if a70 % 15 == 0:
print('FizzBuzz')
elif a70 % 5 == 0:
print('Buzz')
elif a70 % 3 == 0:
print('Fizz')
else:
print('70')
a71 = 71
if a71 % 15 == 0:
print('FizzBuzz')
elif a71 % 5 == 0:
print('Buzz')
elif a71 % 3 == 0:
print('Fizz')
else:
print('71')
a72 = 72
if a72 % 15 == 0:
print('FizzBuzz')
elif a72 % 5 == 0:
print('Buzz')
elif a72 % 3 == 0:
print('Fizz')
else:
print('72')
a73 = 73
if a73 % 15 == 0:
print('FizzBuzz')
elif a73 % 5 == 0:
print('Buzz')
elif a73 % 3 == 0:
print('Fizz')
else:
print('73')
a74 = 74
if a74 % 15 == 0:
print('FizzBuzz')
elif a74 % 5 == 0:
print('Buzz')
elif a74 % 3 == 0:
print('Fizz')
else:
print('74')
a75 = 75
if a75 % 15 == 0:
print('FizzBuzz')
elif a75 % 5 == 0:
print('Buzz')
elif a75 % 3 == 0:
print('Fizz')
else:
print('75')
a76 = 76
if a76 % 15 == 0:
print('FizzBuzz')
elif a76 % 5 == 0:
print('Buzz')
elif a76 % 3 == 0:
print('Fizz')
else:
print('76')
a77 = 77
if a77 % 15 == 0:
print('FizzBuzz')
elif a77 % 5 == 0:
print('Buzz')
elif a77 % 3 == 0:
print('Fizz')
else:
print('77')
a78 = 78
if a78 % 15 == 0:
print('FizzBuzz')
elif a78 % 5 == 0:
print('Buzz')
elif a78 % 3 == 0:
print('Fizz')
else:
print('78')
a79 = 79
if a79 % 15 == 0:
print('FizzBuzz')
elif a79 % 5 == 0:
print('Buzz')
elif a79 % 3 == 0:
print('Fizz')
else:
print('79')
a80 = 80
if a80 % 15 == 0:
print('FizzBuzz')
elif a80 % 5 == 0:
print('Buzz')
elif a80 % 3 == 0:
print('Fizz')
else:
print('80')
a81 = 81
if a81 % 15 == 0:
print('FizzBuzz')
elif a81 % 5 == 0:
print('Buzz')
elif a81 % 3 == 0:
print('Fizz')
else:
print('81')
a82 = 82
if a82 % 15 == 0:
print('FizzBuzz')
elif a82 % 5 == 0:
print('Buzz')
elif a82 % 3 == 0:
print('Fizz')
else:
print('82')
a83 = 83
if a83 % 15 == 0:
print('FizzBuzz')
elif a83 % 5 == 0:
print('Buzz')
elif a83 % 3 == 0:
print('Fizz')
else:
print('83')
a84 = 84
if a84 % 15 == 0:
print('FizzBuzz')
elif a84 % 5 == 0:
print('Buzz')
elif a84 % 3 == 0:
print('Fizz')
else:
print('84')
a85 = 85
if a85 % 15 == 0:
print('FizzBuzz')
elif a85 % 5 == 0:
print('Buzz')
elif a85 % 3 == 0:
print('Fizz')
else:
print('85')
a86 = 86
if a86 % 15 == 0:
print('FizzBuzz')
elif a86 % 5 == 0:
print('Buzz')
elif a86 % 3 == 0:
print('Fizz')
else:
print('86')
a87 = 87
if a87 % 15 == 0:
print('FizzBuzz')
elif a87 % 5 == 0:
print('Buzz')
elif a87 % 3 == 0:
print('Fizz')
else:
print('87')
a88 = 88
if a88 % 15 == 0:
print('FizzBuzz')
elif a88 % 5 == 0:
print('Buzz')
elif a88 % 3 == 0:
print('Fizz')
else:
print('88')
a89 = 89
if a89 % 15 == 0:
print('FizzBuzz')
elif a89 % 5 == 0:
print('Buzz')
elif a89 % 3 == 0:
print('Fizz')
else:
print('89')
a90 = 90
if a90 % 15 == 0:
print('FizzBuzz')
elif a90 % 5 == 0:
print('Buzz')
elif a90 % 3 == 0:
print('Fizz')
else:
print('90')
a91 = 91
if a91 % 15 == 0:
print('FizzBuzz')
elif a91 % 5 == 0:
print('Buzz')
elif a91 % 3 == 0:
print('Fizz')
else:
print('91')
a92 = 92
if a92 % 15 == 0:
print('FizzBuzz')
elif a92 % 5 == 0:
print('Buzz')
elif a92 % 3 == 0:
print('Fizz')
else:
print('92')
a93 = 93
if a93 % 15 == 0:
print('FizzBuzz')
elif a93 % 5 == 0:
print('Buzz')
elif a93 % 3 == 0:
print('Fizz')
else:
print('93')
a94 = 94
if a94 % 15 == 0:
print('FizzBuzz')
elif a94 % 5 == 0:
print('Buzz')
elif a94 % 3 == 0:
print('Fizz')
else:
print('94')
a95 = 95
if a95 % 15 == 0:
print('FizzBuzz')
elif a95 % 5 == 0:
print('Buzz')
elif a95 % 3 == 0:
print('Fizz')
else:
print('95')
a96 = 96
if a96 % 15 == 0:
print('FizzBuzz')
elif a96 % 5 == 0:
print('Buzz')
elif a96
( ⚆ ʖ ⚆), [08.03.19 22:26]
% 3 == 0:
print('Fizz')
else:
print('96')
a97 = 97
if a97 % 15 == 0:
print('FizzBuzz')
elif a97 % 5 == 0:
print('Buzz')
elif a97 % 3 == 0:
print('Fizz')
else:
print('97')
a98 = 98
if a98 % 15 == 0:
print('FizzBuzz')
elif a98 % 5 == 0:
print('Buzz')
elif a98 % 3 == 0:
print('Fizz')
else:
print('98')
a99 = 99
if a99 % 15 == 0:
print('FizzBuzz')
elif a99 % 5 == 0:
print('Buzz')
elif a99 % 3 == 0:
print('Fizz')
else:
print('99')
a100 = 100
if a100 % 15 == 0:
print('FizzBuzz')
elif a100 % 5 == 0:
print('Buzz')
elif a100 % 3 == 0:
print('Fizz')
else:
print('100')
Я принят?
>@fizzbuzz
( ⚆ ʖ ⚆), [08.03.19 22:26]
a1 = 1
if a1 % 15 == 0:
print('FizzBuzz')
elif a1 % 5 == 0:
print('Buzz')
elif a1 % 3 == 0:
print('Fizz')
else:
print('1')
a2 = 2
if a2 % 15 == 0:
print('FizzBuzz')
elif a2 % 5 == 0:
print('Buzz')
elif a2 % 3 == 0:
print('Fizz')
else:
print('2')
a3 = 3
if a3 % 15 == 0:
print('FizzBuzz')
elif a3 % 5 == 0:
print('Buzz')
elif a3 % 3 == 0:
print('Fizz')
else:
print('3')
a4 = 4
if a4 % 15 == 0:
print('FizzBuzz')
elif a4 % 5 == 0:
print('Buzz')
elif a4 % 3 == 0:
print('Fizz')
else:
print('4')
a5 = 5
if a5 % 15 == 0:
print('FizzBuzz')
elif a5 % 5 == 0:
print('Buzz')
elif a5 % 3 == 0:
print('Fizz')
else:
print('5')
a6 = 6
if a6 % 15 == 0:
print('FizzBuzz')
elif a6 % 5 == 0:
print('Buzz')
elif a6 % 3 == 0:
print('Fizz')
else:
print('6')
a7 = 7
if a7 % 15 == 0:
print('FizzBuzz')
elif a7 % 5 == 0:
print('Buzz')
elif a7 % 3 == 0:
print('Fizz')
else:
print('7')
a8 = 8
if a8 % 15 == 0:
print('FizzBuzz')
elif a8 % 5 == 0:
print('Buzz')
elif a8 % 3 == 0:
print('Fizz')
else:
print('8')
a9 = 9
if a9 % 15 == 0:
print('FizzBuzz')
elif a9 % 5 == 0:
print('Buzz')
elif a9 % 3 == 0:
print('Fizz')
else:
print('9')
a10 = 10
if a10 % 15 == 0:
print('FizzBuzz')
elif a10 % 5 == 0:
print('Buzz')
elif a10 % 3 == 0:
print('Fizz')
else:
print('10')
a11 = 11
if a11 % 15 == 0:
print('FizzBuzz')
elif a11 % 5 == 0:
print('Buzz')
elif a11 % 3 == 0:
print('Fizz')
else:
print('11')
a12 = 12
if a12 % 15 == 0:
print('FizzBuzz')
elif a12 % 5 == 0:
print('Buzz')
elif a12 % 3 == 0:
print('Fizz')
else:
print('12')
a13 = 13
if a13 % 15 == 0:
print('FizzBuzz')
elif a13 % 5 == 0:
print('Buzz')
elif a13 % 3 == 0:
print('Fizz')
else:
print('13')
a14 = 14
if a14 % 15 == 0:
print('FizzBuzz')
elif a14 % 5 == 0:
print('Buzz')
elif a14 % 3 == 0:
print('Fizz')
else:
print('14')
a15 = 15
if a15 % 15 == 0:
print('FizzBuzz')
elif a15 % 5 == 0:
print('Buzz')
elif a15 % 3 == 0:
print('Fizz')
else:
print('15')
a16 = 16
if a16 % 15 == 0:
print('FizzBuzz')
elif a16 % 5 == 0:
print('Buzz')
elif a16 % 3 == 0:
print('Fizz')
else:
print('16')
a17 = 17
if a17 % 15 == 0:
print('FizzBuzz')
elif a17 % 5 == 0:
print('Buzz')
elif a17 % 3 == 0:
print('Fizz')
else:
print('17')
a18 = 18
if a18 % 15 == 0:
print('FizzBuzz')
elif a18 % 5 == 0:
print('Buzz')
elif a18 % 3 == 0:
print('Fizz')
else:
print('18')
a19 = 19
if a19 % 15 == 0:
print('FizzBuzz')
elif a19 % 5 == 0:
print('Buzz')
elif a19 % 3 == 0:
print('Fizz')
else:
print('19')
a20 = 20
if a20 % 15 == 0:
print('FizzBuzz')
elif a20 % 5 == 0:
print('Buzz')
elif a20 % 3 == 0:
print('Fizz')
else:
print('20')
a21 = 21
if a21 % 15 == 0:
print('FizzBuzz')
elif a21 % 5 == 0:
print('Buzz')
elif a21 % 3 == 0:
print('Fizz')
else:
print('21')
a22 = 22
if a22 % 15 == 0:
print('FizzBuzz')
elif a22 % 5 == 0:
print('Buzz')
elif a22 % 3 == 0:
print('Fizz')
else:
print('22')
a23 = 23
if a23 % 15 == 0:
print('FizzBuzz')
elif a23 % 5 == 0:
print('Buzz')
elif a23 % 3 == 0:
print('Fizz')
else:
print('23')
a24 = 24
if a24 % 15 == 0:
print('FizzBuzz')
elif a24 % 5 == 0:
print('Buzz')
elif a24 % 3 == 0:
print('Fizz')
else:
print('24')
a25 = 25
if a25 % 15 == 0:
print('FizzBuzz')
elif a25 % 5 == 0:
print('Buzz')
elif a25 % 3 == 0:
print('Fizz')
else:
print('25')
a26 = 26
if a26 % 15 == 0:
print('FizzBuzz')
elif a26 % 5 == 0:
print('Buzz')
elif a26 % 3 == 0:
print('Fizz')
else:
print('26')
a27 = 27
if a27 % 15 == 0:
print('FizzBuzz')
elif a27 % 5 == 0:
print('Buzz')
elif a27 % 3 == 0:
print('Fizz')
else:
print('27')
a28 = 28
if a28 % 15 == 0:
print('FizzBuzz')
elif a28 % 5 == 0:
print('Buzz')
elif a28 % 3 == 0:
print('Fizz')
else:
print('28')
a29 = 29
if a29 % 15 == 0:
print('FizzBuzz')
elif a29 % 5 == 0:
print('Buzz')
elif a29 % 3 == 0:
print('Fizz')
else:
print('29')
a30 = 30
if a30 % 15 == 0:
print('FizzBuzz')
elif a30 % 5 == 0:
print('Buzz')
elif a30 % 3 == 0:
print('Fizz')
else:
print('30')
a31 = 31
if a31 % 15 == 0:
print('FizzBuzz')
elif a31 % 5 == 0:
print('Buzz')
elif a31 % 3 == 0:
print('Fizz')
else:
print('31')
a32 = 32
if a32 % 15 == 0:
print('FizzBuzz')
elif a32 % 5 == 0:
print('Buzz')
elif a32 % 3 == 0:
print('Fizz')
else:
print('32')
a33 = 33
if a33 % 15 =
( ⚆ ʖ ⚆), [08.03.19 22:26]
= 0:
print('FizzBuzz')
elif a33 % 5 == 0:
print('Buzz')
elif a33 % 3 == 0:
print('Fizz')
else:
print('33')
a34 = 34
if a34 % 15 == 0:
print('FizzBuzz')
elif a34 % 5 == 0:
print('Buzz')
elif a34 % 3 == 0:
print('Fizz')
else:
print('34')
a35 = 35
if a35 % 15 == 0:
print('FizzBuzz')
elif a35 % 5 == 0:
print('Buzz')
elif a35 % 3 == 0:
print('Fizz')
else:
print('35')
a36 = 36
if a36 % 15 == 0:
print('FizzBuzz')
elif a36 % 5 == 0:
print('Buzz')
elif a36 % 3 == 0:
print('Fizz')
else:
print('36')
a37 = 37
if a37 % 15 == 0:
print('FizzBuzz')
elif a37 % 5 == 0:
print('Buzz')
elif a37 % 3 == 0:
print('Fizz')
else:
print('37')
a38 = 38
if a38 % 15 == 0:
print('FizzBuzz')
elif a38 % 5 == 0:
print('Buzz')
elif a38 % 3 == 0:
print('Fizz')
else:
print('38')
a39 = 39
if a39 % 15 == 0:
print('FizzBuzz')
elif a39 % 5 == 0:
print('Buzz')
elif a39 % 3 == 0:
print('Fizz')
else:
print('39')
a40 = 40
if a40 % 15 == 0:
print('FizzBuzz')
elif a40 % 5 == 0:
print('Buzz')
elif a40 % 3 == 0:
print('Fizz')
else:
print('40')
a41 = 41
if a41 % 15 == 0:
print('FizzBuzz')
elif a41 % 5 == 0:
print('Buzz')
elif a41 % 3 == 0:
print('Fizz')
else:
print('41')
a42 = 42
if a42 % 15 == 0:
print('FizzBuzz')
elif a42 % 5 == 0:
print('Buzz')
elif a42 % 3 == 0:
print('Fizz')
else:
print('42')
a43 = 43
if a43 % 15 == 0:
print('FizzBuzz')
elif a43 % 5 == 0:
print('Buzz')
elif a43 % 3 == 0:
print('Fizz')
else:
print('43')
a44 = 44
if a44 % 15 == 0:
print('FizzBuzz')
elif a44 % 5 == 0:
print('Buzz')
elif a44 % 3 == 0:
print('Fizz')
else:
print('44')
a45 = 45
if a45 % 15 == 0:
print('FizzBuzz')
elif a45 % 5 == 0:
print('Buzz')
elif a45 % 3 == 0:
print('Fizz')
else:
print('45')
a46 = 46
if a46 % 15 == 0:
print('FizzBuzz')
elif a46 % 5 == 0:
print('Buzz')
elif a46 % 3 == 0:
print('Fizz')
else:
print('46')
a47 = 47
if a47 % 15 == 0:
print('FizzBuzz')
elif a47 % 5 == 0:
print('Buzz')
elif a47 % 3 == 0:
print('Fizz')
else:
print('47')
a48 = 48
if a48 % 15 == 0:
print('FizzBuzz')
elif a48 % 5 == 0:
print('Buzz')
elif a48 % 3 == 0:
print('Fizz')
else:
print('48')
a49 = 49
if a49 % 15 == 0:
print('FizzBuzz')
elif a49 % 5 == 0:
print('Buzz')
elif a49 % 3 == 0:
print('Fizz')
else:
print('49')
a50 = 50
if a50 % 15 == 0:
print('FizzBuzz')
elif a50 % 5 == 0:
print('Buzz')
elif a50 % 3 == 0:
print('Fizz')
else:
print('50')
a51 = 51
if a51 % 15 == 0:
print('FizzBuzz')
elif a51 % 5 == 0:
print('Buzz')
elif a51 % 3 == 0:
print('Fizz')
else:
print('51')
a52 = 52
if a52 % 15 == 0:
print('FizzBuzz')
elif a52 % 5 == 0:
print('Buzz')
elif a52 % 3 == 0:
print('Fizz')
else:
print('52')
a53 = 53
if a53 % 15 == 0:
print('FizzBuzz')
elif a53 % 5 == 0:
print('Buzz')
elif a53 % 3 == 0:
print('Fizz')
else:
print('53')
a54 = 54
if a54 % 15 == 0:
print('FizzBuzz')
elif a54 % 5 == 0:
print('Buzz')
elif a54 % 3 == 0:
print('Fizz')
else:
print('54')
a55 = 55
if a55 % 15 == 0:
print('FizzBuzz')
elif a55 % 5 == 0:
print('Buzz')
elif a55 % 3 == 0:
print('Fizz')
else:
print('55')
a56 = 56
if a56 % 15 == 0:
print('FizzBuzz')
elif a56 % 5 == 0:
print('Buzz')
elif a56 % 3 == 0:
print('Fizz')
else:
print('56')
a57 = 57
if a57 % 15 == 0:
print('FizzBuzz')
elif a57 % 5 == 0:
print('Buzz')
elif a57 % 3 == 0:
print('Fizz')
else:
print('57')
a58 = 58
if a58 % 15 == 0:
print('FizzBuzz')
elif a58 % 5 == 0:
print('Buzz')
elif a58 % 3 == 0:
print('Fizz')
else:
print('58')
a59 = 59
if a59 % 15 == 0:
print('FizzBuzz')
elif a59 % 5 == 0:
print('Buzz')
elif a59 % 3 == 0:
print('Fizz')
else:
print('59')
a60 = 60
if a60 % 15 == 0:
print('FizzBuzz')
elif a60 % 5 == 0:
print('Buzz')
elif a60 % 3 == 0:
print('Fizz')
else:
print('60')
a61 = 61
if a61 % 15 == 0:
print('FizzBuzz')
elif a61 % 5 == 0:
print('Buzz')
elif a61 % 3 == 0:
print('Fizz')
else:
print('61')
a62 = 62
if a62 % 15 == 0:
print('FizzBuzz')
elif a62 % 5 == 0:
print('Buzz')
elif a62 % 3 == 0:
print('Fizz')
else:
print('62')
a63 = 63
if a63 % 15 == 0:
print('FizzBuzz')
elif a63 % 5 == 0:
print('Buzz')
elif a63 % 3 == 0:
print('Fizz')
else:
print('63')
a64 = 64
if a64 % 15 == 0:
print('FizzBuzz')
elif a64 % 5 == 0:
print('Buzz')
elif a64 % 3 == 0:
print('Fizz')
else:
pr
( ⚆ ʖ ⚆), [08.03.19 22:26]
int('64')
a65 = 65
if a65 % 15 == 0:
print('FizzBuzz')
elif a65 % 5 == 0:
print('Buzz')
elif a65 % 3 == 0:
print('Fizz')
else:
print('65')
a66 = 66
if a66 % 15 == 0:
print('FizzBuzz')
elif a66 % 5 == 0:
print('Buzz')
elif a66 % 3 == 0:
print('Fizz')
else:
print('66')
a67 = 67
if a67 % 15 == 0:
print('FizzBuzz')
elif a67 % 5 == 0:
print('Buzz')
elif a67 % 3 == 0:
print('Fizz')
else:
print('67')
a68 = 68
if a68 % 15 == 0:
print('FizzBuzz')
elif a68 % 5 == 0:
print('Buzz')
elif a68 % 3 == 0:
print('Fizz')
else:
print('68')
a69 = 69
if a69 % 15 == 0:
print('FizzBuzz')
elif a69 % 5 == 0:
print('Buzz')
elif a69 % 3 == 0:
print('Fizz')
else:
print('69')
a70 = 70
if a70 % 15 == 0:
print('FizzBuzz')
elif a70 % 5 == 0:
print('Buzz')
elif a70 % 3 == 0:
print('Fizz')
else:
print('70')
a71 = 71
if a71 % 15 == 0:
print('FizzBuzz')
elif a71 % 5 == 0:
print('Buzz')
elif a71 % 3 == 0:
print('Fizz')
else:
print('71')
a72 = 72
if a72 % 15 == 0:
print('FizzBuzz')
elif a72 % 5 == 0:
print('Buzz')
elif a72 % 3 == 0:
print('Fizz')
else:
print('72')
a73 = 73
if a73 % 15 == 0:
print('FizzBuzz')
elif a73 % 5 == 0:
print('Buzz')
elif a73 % 3 == 0:
print('Fizz')
else:
print('73')
a74 = 74
if a74 % 15 == 0:
print('FizzBuzz')
elif a74 % 5 == 0:
print('Buzz')
elif a74 % 3 == 0:
print('Fizz')
else:
print('74')
a75 = 75
if a75 % 15 == 0:
print('FizzBuzz')
elif a75 % 5 == 0:
print('Buzz')
elif a75 % 3 == 0:
print('Fizz')
else:
print('75')
a76 = 76
if a76 % 15 == 0:
print('FizzBuzz')
elif a76 % 5 == 0:
print('Buzz')
elif a76 % 3 == 0:
print('Fizz')
else:
print('76')
a77 = 77
if a77 % 15 == 0:
print('FizzBuzz')
elif a77 % 5 == 0:
print('Buzz')
elif a77 % 3 == 0:
print('Fizz')
else:
print('77')
a78 = 78
if a78 % 15 == 0:
print('FizzBuzz')
elif a78 % 5 == 0:
print('Buzz')
elif a78 % 3 == 0:
print('Fizz')
else:
print('78')
a79 = 79
if a79 % 15 == 0:
print('FizzBuzz')
elif a79 % 5 == 0:
print('Buzz')
elif a79 % 3 == 0:
print('Fizz')
else:
print('79')
a80 = 80
if a80 % 15 == 0:
print('FizzBuzz')
elif a80 % 5 == 0:
print('Buzz')
elif a80 % 3 == 0:
print('Fizz')
else:
print('80')
a81 = 81
if a81 % 15 == 0:
print('FizzBuzz')
elif a81 % 5 == 0:
print('Buzz')
elif a81 % 3 == 0:
print('Fizz')
else:
print('81')
a82 = 82
if a82 % 15 == 0:
print('FizzBuzz')
elif a82 % 5 == 0:
print('Buzz')
elif a82 % 3 == 0:
print('Fizz')
else:
print('82')
a83 = 83
if a83 % 15 == 0:
print('FizzBuzz')
elif a83 % 5 == 0:
print('Buzz')
elif a83 % 3 == 0:
print('Fizz')
else:
print('83')
a84 = 84
if a84 % 15 == 0:
print('FizzBuzz')
elif a84 % 5 == 0:
print('Buzz')
elif a84 % 3 == 0:
print('Fizz')
else:
print('84')
a85 = 85
if a85 % 15 == 0:
print('FizzBuzz')
elif a85 % 5 == 0:
print('Buzz')
elif a85 % 3 == 0:
print('Fizz')
else:
print('85')
a86 = 86
if a86 % 15 == 0:
print('FizzBuzz')
elif a86 % 5 == 0:
print('Buzz')
elif a86 % 3 == 0:
print('Fizz')
else:
print('86')
a87 = 87
if a87 % 15 == 0:
print('FizzBuzz')
elif a87 % 5 == 0:
print('Buzz')
elif a87 % 3 == 0:
print('Fizz')
else:
print('87')
a88 = 88
if a88 % 15 == 0:
print('FizzBuzz')
elif a88 % 5 == 0:
print('Buzz')
elif a88 % 3 == 0:
print('Fizz')
else:
print('88')
a89 = 89
if a89 % 15 == 0:
print('FizzBuzz')
elif a89 % 5 == 0:
print('Buzz')
elif a89 % 3 == 0:
print('Fizz')
else:
print('89')
a90 = 90
if a90 % 15 == 0:
print('FizzBuzz')
elif a90 % 5 == 0:
print('Buzz')
elif a90 % 3 == 0:
print('Fizz')
else:
print('90')
a91 = 91
if a91 % 15 == 0:
print('FizzBuzz')
elif a91 % 5 == 0:
print('Buzz')
elif a91 % 3 == 0:
print('Fizz')
else:
print('91')
a92 = 92
if a92 % 15 == 0:
print('FizzBuzz')
elif a92 % 5 == 0:
print('Buzz')
elif a92 % 3 == 0:
print('Fizz')
else:
print('92')
a93 = 93
if a93 % 15 == 0:
print('FizzBuzz')
elif a93 % 5 == 0:
print('Buzz')
elif a93 % 3 == 0:
print('Fizz')
else:
print('93')
a94 = 94
if a94 % 15 == 0:
print('FizzBuzz')
elif a94 % 5 == 0:
print('Buzz')
elif a94 % 3 == 0:
print('Fizz')
else:
print('94')
a95 = 95
if a95 % 15 == 0:
print('FizzBuzz')
elif a95 % 5 == 0:
print('Buzz')
elif a95 % 3 == 0:
print('Fizz')
else:
print('95')
a96 = 96
if a96 % 15 == 0:
print('FizzBuzz')
elif a96 % 5 == 0:
print('Buzz')
elif a96
( ⚆ ʖ ⚆), [08.03.19 22:26]
% 3 == 0:
print('Fizz')
else:
print('96')
a97 = 97
if a97 % 15 == 0:
print('FizzBuzz')
elif a97 % 5 == 0:
print('Buzz')
elif a97 % 3 == 0:
print('Fizz')
else:
print('97')
a98 = 98
if a98 % 15 == 0:
print('FizzBuzz')
elif a98 % 5 == 0:
print('Buzz')
elif a98 % 3 == 0:
print('Fizz')
else:
print('98')
a99 = 99
if a99 % 15 == 0:
print('FizzBuzz')
elif a99 % 5 == 0:
print('Buzz')
elif a99 % 3 == 0:
print('Fizz')
else:
print('99')
a100 = 100
if a100 % 15 == 0:
print('FizzBuzz')
elif a100 % 5 == 0:
print('Buzz')
elif a100 % 3 == 0:
print('Fizz')
else:
print('100')
Я принят?
можешь пойти ко мне в рабство, но надо на жс писать
>Из навыков недоджун-уровень знание плюсов, знаком с Qt.
Иди на фриланс.ру и upwork и работай, в чем проблема-то?
С такими навыками уже можно на мороженку заработать.
Если хочешь подготовиться к собесам на норм рабство у интересных хозяев, зарегься и прорешивай алгоритмические задачи на
https://www.codewars.com
https://leetcode.com
https://www.hackerrank.com
Там везде есть заодно и таймлимиты на задачи, хорошо организует.
Ну и
https://www.codingame.com/
Одни говорят что олимпиадники это ужасные программисты в продакшене, а другие говорят что нужно решать олимпиады для развития логики. Да и хотелось бы порешать что-то более приближенное к реальности, а не сортировать матрицы 1000 и одним способом. Часто видел как опытные люди описывали свой путь как:
>хорошо учился
>нашел ментора сеньора-помидора
>теперь я сам сеньор/тимлид/архитектор
Я на кодварсе и так решаю иногда, но вот иногда вижу что требуют алгоритмическую базу, а алгоритмов настолько много, что даже не поймешь какие из них реально нужны, а какие не используются с 60-х годов. С фриланса на плюсах проиграл немного, у нас в городе миллионнике вакансий то штук 20 всего, а фриланс это что-то невероятное.
Просто забей. Ваше поколение уже ничему толковому не научится. Настоящий программист, чтобы быть тру кодером, должен писать свою ОС в течение многих лет. А вам это неинтересно.
ну, бля, задач 300 надо набрать, чтобы тупо руку набить
когда еще студентик
те и не задротить олимпиадки, но и хуй не забивать на компетив ресурсы с задачками
средний путь, в общем
>string_view - замена const string& в аргументах функции, да ещё и без нулевого символа.
не забывай что стринг вью еще жрет строковые литералы и строки в си стиле
это важно
особенно в шаблонохераченье
бля, чувак, зачем нужен стринг вью можно выяснить за 10 минут гуглежа
ебаный в рот, целые доклады на конференциях есть где только эту фичу обсасывают
нахуй тут это спрашивать
std::list<Ray> *rayl = new std::list<Ray>(60);
А когда мне этот список не потребуется, то delete rayl;
rayl = nullptr;
Какие подводные?
Рано или поздно проебешься и схватишь сегфолт, зато сэкономил 8 байт на указателе.
list.clear() для кого сделали, блять
не умный, но, сука, эрудированный
сечешь разницу?
на конференциях (в частности cppcon) есть особый формат доклада длительностью 5 или 7 или 10 минут, люди подходят быстро рассказывают-показывают и отходят, все это за одну сессию
за частую это самая интересная часть конференции
интересней, наверное, только практикумы на конфах
Инфа которая отсылается в QTcpSocket не отправляется сразу, а накапливается в внутреннем буфере (что бы уменьшить количество системных вызовом). flush заставляет сразу отправить всю накопленную инфу.
Спасибо
ты лох
Да. Сейчас приведу фрагмент кода. Как лучше код выделить?
#include "Chat.h"
#include <QDebug>
#include <QtGui>
#include <QLabel>
#include <QPlainTextEdit>
Chat::Chat(QWidget parent):
QMainWindow(parent)
{
ui.setupUi(this);
}
MyServer::MyServer(QObject parent) :
QObject(parent)
{
server =new QTcpServer(this);
connect(server,SIGNAL(newConnection()), this, SLOT(newConnection()));
if (!server->listen(QHostAddress::Any, 777)) {
label_3 ->setText("Бля. Чет не фурычит"); // Вот тут и дальше я хз как вывести текст в форму
}
else {
}
}
void MyServer::newConnection() {
QTcpSocket* socket = server->nextPendingConnection();
socket->write("Вроде подключилось");
socket->flush();
}
Необъявленный идентификатор
#include "Chat.h"
#include <QDebug>
#include <QtGui>
#include <QLabel>
#include <QPlainTextEdit>
Chat::Chat(QWidget parent):
QMainWindow(parent)
{
ui.setupUi(this);
}
MyServer::MyServer(QObject parent) :
QObject(parent)
{
server =new QTcpServer(this);
connect(server,SIGNAL(newConnection()), this, SLOT(newConnection()));
if (!server->listen(QHostAddress::Any, 777)) {
label_3 ->setText("Бля. Чет не фурычит"); // Вот тут и дальше я хз как вывести текст в форму
}
else {
}
}
void MyServer::newConnection() {
QTcpSocket* socket = server->nextPendingConnection();
socket->write("Вроде подключилось");
socket->flush();
}
Необъявленный идентификатор
Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat.
ИМХО, лучше listen вызывать не в конструкторе, а сделать отдельный метод.
При возникновении ошибки сервера, можно емитить сигнал (ну например myServerError(const QString&)). А в чате приконектится к этому сигналу слотом лейбла setText.
Также можно транслировать сигнал об ошибке самого сокета. (Надо добавить серверу нужный сиглал, аналогичный QTcpServer, и законектить их).
> Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat.
То есть надо написать Chat::ui.label.setText()?
За остальное спасибо
C2664 "Ui::ChatClass::ChatClass(Ui::ChatClass &&)": невозможно преобразовать аргумент 1 из "Ui::ChatClass *" в "const Ui::ChatClass &"ChatC:\Users\Andrew\source\repos\Chat\Chat.cpp
Иду гуглить
Так можно написать, если ui статический публичный член класса Chat. Но так делать не нужно.
Можешь серверу сделать член класса - указатель на лейбл и инициализировать его передав твой лейбл как параметр конструкрора. Но это тоже хреновое решение - оно разносит твой гуй по компонентам, которые о нем знать не должны.
Я же в первом ответе написал, при ошибке емитить сигнал, в сигнале можно передать текст или код ошибки. В Chat сделать слот, и законектить его с этим сигналом. В слоте уже обработать и вывести текст.
Где ты сервер создаёшь?
Есть другие варианты?
СПАСИБО ОГРОМНОЕ. Vs не ругается.
Всегда какой-то объект не виден. У меня есть объект server моего класса MyServer и объект w класса Chat (основной класс). Я не знаю где их связать
Мне нужно связать сигнал объекта, который создается в конструкторе другого объекта с слотом объекта главного класса. Как это сделать?
Мне сложно сказать что-то конкретное, так как я не знаю какую архитектуру ты напедалил.
>Как это сделать?
Первый вариант: делаешь геттер для вложенного класса и потом где-то пишешь QObject::connect(obj->getInnerObj(), SIGNAL(signal), mainWindow, SLOT(slot));
Второй вариант (получше): во внешнем классе делаешь сигнал c такой же сигнатурой как у внутреннего можно тупо скопировать. В конструкторе внешнего соединяешь сигналы connect(innerObj, SIGNAL(signal), SIGNAL(signal));. Теперь можно приконектить главное окно так: QObject::connect(obj, SIGNAL(signal), mainWindow, SLOT(slot));
Его главное окно может спокойно выполнять роль контроллера и вьюхи. И мы даже не знаем что там за модель и есть ли она. Но ведь главное это паттернодрочинг и оверинжинирнутое решение для лаба1, да? Чувак только учится, сделает криво раз, второй раз уже будет лучше.
Остаток от деления ищет, но это фигня все, ни один помидор в здравом уме не ответит
Даже стажёр ответит, чисто из предположений, что эта штука похожа на лямбду (на самом деле это она и есть) и что тут используются диграфы. На диграфах синьоры начнут кукарекать, что их удалили в 17 плюсах, но это не так
Ну так и я о том же. Триграфов больше нет, но диграфы остались
Бля посоны, не бейте лучше обоссыте плешь может волос отрастет обратно.
Как запустить программу из мейна? Я имею ввиду вот у меня есть класс в котором все реализовано, допустим игра угадай загаданную цифру от одного до охуллиона. Как этот класс запустить из мейна и зациклить его на выполнение до успеха, ну или до усрачки, без goto? И как его потом вырбить нахуй?
А то у меня только с костылями все выходит.
Я заглядывал в другие сорсы и видел там что то в духе
int main
{
class vasyan;
vasyan.Run();
return 0;
}
Но когда я делаю то же самое у меня компиятор ругается и все валится. ЧЯДНТ
Если что, дописывать и улучшать чужые сорсы я умею.
>ембедед на си
>c++ умрет
>язык который чуть ли не лично гитлера в попку целовал переживет свою осовремененную реинкарнацию
Хладен сказ боярин
И не надо мне тут про то какой С чоткий. Он устарел морально, как телефоны алкатель.
Вроде работает и можно даже обойтись без главного правила связи громче крикнешь дальше услышат но использовать его сейчас, когда даже ссаный китаефон с цианом за 20 баксов может сделать все то же самое но намного лучше? Нахуя?
while (true) {...}
Да ты траллиш. Таких тупых овощей не бывает.
Самый последний пхпшник знает про оператор условия и цикла. Но если вдруг что-то мешает тебе погуглить и прочитать про это самостоятельно, можешь начать погружение в удивительный мир программирования отсюда:
https://ru.cppreference.com/w/cpp/language/while
извини, что ссылка на русский цппреференс, но ты своим постом себя несколько дискредитировал
Это я и так знаю.
А что делать если я какую то более серезную программу уровня "ебашишь мышкой по квадратикам и они меняют цвет" сделать захочу? Или тот же тетрис ебучий ссука. Тоже цикл вставлять?
Я что то упускаю.
Так-то во всяких там qt тоже есть цикл – цикл сообщений.
Только он заранее написан и спрятан. Из него вызывается всякая хуйня при разных условиях. Тебе остается только переопределить какой-нибудь OnClick, и при нажатии вызовется не пустая затычка, а твой говнокод.
В принципе, такую систему легко изготовить самому. Например делаешь класс с виртуальным методом OnUpdate и обычным методом Run, внутри run тот самый бесконечный while(1) {OnUpdate();}
Потом тупо наследуешь класс от него, переопределяешь ОnUрdate. В мейне как раз и остается только создание этого класса и c.Run();
OneLoneCoder гугли, у него на канале есть видео про общие принципы GUI
Ты ебобо? Их дохуя просто. Зайди на сайт osdev, например.
Мне как то знакомая тян сказала что только пацаны могут так тупо отвечать: вопросов несколько, а ответ один.
Хммм...
И это все эксели с тридэмаксами запускаются и работают с помощью цикла while, или другого похожего?!
Я то думал там какая то тайна за семью печатями.
>А как же там тогда
Многопоточно, иногда даже неблокирующе - если не совсем дебилы вроде тебя делали.
А в тридемаксах еще и в шейдеры дохуя вынесено, а исполнение на гпу - это просто мечта шизофреника вроде меня
Хуета какая то выходит тогда. Вот смотрю я на исходники блендера (он написан на С но да похуй примерно понятно что там происходит) и я вижу где он там создает треды , вижу какие то костылики чтобы создать не гомогенный мемпул.
Но я блять нигде не вижу никакого цикла который бы крутился хоть в одном треде для того чтобы блендер работал.
Ты так и не понял, что это я потролил двачик, а не он меня. Не видать тебе 300к в секунду, никогда.
Поясни тогда как они там работают то. Чего ты ломаешься как тянка перед первым минетом?
Yasno.
Нету никакого другого способа чтобы бесконечно выполнять программу кроме как while(true). Просто это иногда может быть спрятано в библиотеках или еще в каких-то механизмах.
>или еще в каких-то механизмах.
Ага, есть такой механизм называется операционная система
Пиздец вы тут дебилы все поголовно.
Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё.
Ты можешь создать дополнительный процесс. Но он также будет выполняться до тех пор, пока не дойдет до конца программы.
>делает ОС
>выполняет операции, которые ты в мейне написал
А может и толстота.
Хотя нет, скорее всего просто школьник.
То есть хуже червя-пидора и тупее табуретки.
Ну т.е. ты где-то услышал слово "асинхронное", но не можешь объяснить как оно работает.
Премию Дарвина этому толстяку.
Обычная ставка 50 евро в час, но лично для тебя льготный тариф всего 70 евро
Как платить удобнее?
Так уж и быть, оплатил тебе за щеку. Вторая порция - после.
Если хорошо объяснишь, могу в качестве чаевых нассать тебе на ебло.
По рукам?
Хули с твоим годом. Может ты раз в неделю под пивас сппконы смотрел. Часов сколько потратил?
Объяснил подробно, проверяй личку.
Я сторонний человек в вашем споре, но скажу, что любая программа, имеющая пользовательский интерфейс, имеет и главный цикл, в котором проверяется наличие событий типа нажатия клавиш и движения мыши. Если создается второе окно программы (открыт второй документ), то будет создан отдельный поток для него, который также будет включать в себя главный цикл для взаимодействия с пользователем. Асинхронно могут выполняться задачи, не требующие внимания пользователя вплоть до своего завершения. Но человек взаимодействует с программой всегда через главный цикл, который программой и управляет (либо несколько таких циклов в случае нескольких окон).
>любая программа, имеющая пользовательский интерфейс, имеет и главный цикл
>проверяется наличие событий типа нажатия клавиш
Дурачок, ты отстал от жизни лет на 20 на 10 если мерять плюсами, хаха
>Продолжать или забить хуй?
Забей, если ты не готов убивать всё свободное время на изучение программирования то ты и через 5 лет будешь на уровне laba1.cpp.
>как программа узнает о том, что я кликнул мышкой.
Через события/сообщения/т.д.
Еще дебильные вопросы будут?
Так через события или сообщения? Это важно.
И откуда появляются они? И где они хранятся? Кто их обрабатывает?
>события или сообщения
Зависит от языка.
> >есть такой механизм называется операционная система
>И откуда появляются они? И где они хранятся? Кто их обрабатывает?
Ебать дебил.
И да, обилие риторических вопросов - верный признак омегана и лоха по жизни.
>эти проекции физиологически не способного понимать устройств современных ОС олигофрена
Хуево быть тобой.
Так на сппконах самые ходовые знания разве нет? Смотрю их. Каждый день по часу занимаюсь.
>фантазирования
Оно еще и школьник.
>невозможно понять.
Оно еще и тупой школьник тавтология, хаха
А что конкретно нужно знать из матана? У нас за весь курс конкретно матана были дифуры, интегралы, производные и пределы. Где это использовать то?
Закрыл сессию на отлично, каждую тему разбирал по многу часов. На вопрос ответишь?
Блять я всё помню, это логически следует из моего ответа. Ты то ответишь на вопрос, который тебе уже трижды задали, или дальше будешь жопой вилять?
>логически следует из моего ответа
Вообще-то не следует, и в большинстве случаев подобные "отличники" ничего не помнят.
>я всё помню
Тогда малаца, принимается.
>по часу занимаюсь
>каждую тему разбирал по многу часов
Сам себе и ответил.
В чего ты взял что тебе один и тот же человек отвечал. Может перестанешь вилять жопой и придираться к формулировкам предложений, а ответишь на вопрос? Жду момента, когда начнутся придирки к запятым и построению предложений
Ясно, не ожидал жирноту в тематике увидеть,думал просто какой-то чсвшный тип,а тут зеленый в чате по крестам. Ну сиди семени тут, я ушел.
>Можешь сам сравнить те же ДОСы с виндой/пингвином/бздями.
Во всем ИТ идеи одни и те же, начиная с 30-х годов. Ничего кардинально нового не было придумано. Только костыли подкладывают для новой аппаратуры и для безопасности.
Школотрон, съеби с треда, плиз. Иди в доту поиграй, или что там школьники любят? Фортнайт?
Тебе пока рано тут сидеть.
>с 30-х годов
Пиздец. Ты даже для красноглазого треда слишком толстый. Хотя ты даже не троль ведь, просто ебанутый ньюфаг/студентишка.
Иксперд по борьбе говен в треде, я спокоен.
>Так-то во всяких там qt тоже есть цикл – цикл сообщений.
у тебя ос замораживает поток
потом по событию размораживает его
а цикл сообщений сделан потому чтобы за раз обработать несколько сообщений, если такая ситуация случится
у тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думать
while(true) - это такой шаблон когда надо в цикле обработать столько сколько ты еще не знаешь надо, а по завершению обработки выйти из цикла по break (как раз это и происходит в случае обработки сообщений)
>у тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думать
Но ведь так делаются все lab1.cpp с менюшками.
>у тебя ос замораживает поток
>потом по событию размораживает его
Это если ты делаешь в лупе слип или вешаешь процесс на системный таймер.
Просто луп грузит одно ядро на 100%, я проверял, когда некое приближение рт системы на винде изображал.
кро
>ядро на 100%
>некое приближение рт системы на винде изображал
То ли дебил, то ли школостудень скорее и то и другое, хаха
>while(true)
while(true) это не более чем идиома для обработки в цикле неизвестного количества итераций
в случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот цикл
У тебя ОС знает какие кнопочки ты сделал в своем приложении и какие при этом коллбеки вызывать, ага.
> в случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот цикл
таким образом, если бы
>когда ос "пробуждает" по событию поток, не могло бы произойти еще несколько событий
и
>когда собственно поток работает, не могли бы прилететь еще события
т.е. если бы прилетали события только в то время, когда поток заморожен, то цикл не был бы нужен?
хуйню несешь, школьник тупой. схуяли после разморозки поток начнет новое событие обрабатывать без цикла? разморозка его состояние как-то ресетит? можешь не отвечать.
Если у тебя там нет функций на сотню-другую строк - то все нормально.
>кроме написания юнит тестов вручную
Можешь еще написать интеграционные тесты вручную
у тебя в приложении может сформироваться очередь событий, требующих обработки
по этому там цикл и нужен
но этот цикл НЕ крутится все время работы приложения
когда приложение обработало все события, то главный поток приложения засыпает, вызвав соответствую функцию операционной системы
я специально стараюсь объяснить попроще, буквально на пальцах
> когда приложение обработало все события, то главный поток приложения засыпае
А когда просыпается что происходит?
просыпается приложение у тебя по определенному событию
НО когда приложение регистрирует свои события в операционной системе, оно указывает для каждого события коллбек - код, на который операционная система передаст управление
чаще всего же это оказывается общая для большинства событий гуи функция, в которой и крутится этот самый несчастный цикл обработки сообщений
Потому что надо sleep ставить, очевидно. Тебе не нужно дохуя частоты обработки для гуя. Остаётся все тот же самый while внутри.
> оно указывает для каждого события коллбек - код
Тоесть после выполнения всех событий и сразу перед засыпанием все дерьмо на стеке умирает, ведь у колбека будет свой стек? Откуда берется тред для выпонения колбека?
В случае приостановки потока его стек сохраняется же.
> приложение регистрирует свои события в операционной системе
Ты ебанутый? Нет такого механизма, чтобы зарегистрировать твои ебаные кнопочки в системе. Все делается посредством внутрянки самой библиотеки.
и чо там??
У них там все на унылом while. Я то думал у них там старый добрый goto. Описание ивентлупа:
> Enters the main event loop and waits until exit() is called. Returns the value that was passed to exit().
Сам цикл на 224 строке https://github.com/qt/qtbase/blob/53d62b8fcbb639bd625777c8f1c01764445fb1c4/src/corelib/kernel/qeventloop.cpp
while (!d->exit.loadAcquire())
processEvents(flags | WaitForMoreEvents | EventLoopExec);
d->exit - это QBasicAtomicInt который выставляется в true при вызове exit()
72 строка https://github.com/qt/qtbase/blob/53d62b8fcbb639bd625777c8f1c01764445fb1c4/src/corelib/kernel/qeventloop_p.h
Ищебы найти как именно exit() (ну и ексепшены) обрабатывается но впадло.
Ну вот.
А кто говорил, что не бывает циклов, пусть идет нахуй писать хеллоуворлд на winapi. И не возвращается, пока без цикла не сделает.
да, так и есть: целевой ос глубоко похуй на кнопочки
что ей от процесса надо (когда он регистрирует событие в системе) дак это куда передать исполнение
касательно гуи тут будет некая разница в том, нативный ли гуй либо приложение (либо фреймвор) сам его целиком отрисовывает
но суть не меняется от этого
ну ебать, стек и стек
в стеке же нет никакой магии, просто кусок памяти в виртуальном пространтсве процесса
более того, у процесса может быть аж до 8 системных стеков, между которыми процесс будет переключатся туда-сюда
самое простое, это когда процесс переключается с кернелла (свой стек) на юзерспейс(другой стек), но это вообще простейшие вещи которые должен знать любой крестоблядок
гуевое приложение с активным вводом-выводом вообще большую часть времени выполняется в кернелле
это приложения с вычислительной нагрузкой могут в юзерспейсе сидеть большую часть своего времени
эти системы построенные на обработке событий, позволяют рализовывать отзывчивые gui-приложения, но которые при этом выполняют либо интенсивные фоновые вычисления либо интенсивный ввод-вывод
при этом делая это все это в однопоточном режиме
вообще, этим и занимались кодеры на дельфи, на winapi, на mfc, на qt десятки лет уже, все работало
забавное, что текущее поколение кодеров вообще, похоже, не понимает этого
для них типа если у тебя прога с гуем и надо что-то длительно выполнять, то, бля, обязательно надо начать костылить многопоточку
Напиши хоть раз свой примитивный гуй с нуля, и поймешь как оно работает.
В бесконечном цикле чекаешь клики мышью, смотришь куда тыкнуло, вызываешь события, спишь, чтобы не жрать проц, повторяешь снова.
А разве пробуждение цикла не синхронизировано с обновлением экрана?
понятное дело что он засыпает и не крутится постоянно. но если бы там не было цикла, то что бы он делал, если бы проснулся во второй раз? он бы проснулся и завершился.
на уровне прикладного программиста, использующего некий гуй-фреймворк это именно так и выглядит, я согласен
если же попытаться объяснить как это работает уровнем чуть ниже, то настолько простое объяснение не прокатит
Высокий уровень на то и высокий, что независим от низкого в общем случае.
Низкий уровень не добавляет ничего принципиально иного. Процессы - это процессы, они просто запущены и делают код, пока он есть; ОС только менеджит их запуски, ни в какие внутренние события она не лезет. Клики мышью - это клики мышью, они не триггярят сами по себе никакие события.
если вкратце, когда ос по событию пробуждает твой процесс, коллбек же дожен перейти на какой то код? да? дак вот, переходит то он на функцию содержащую цикл обработки сообщений
в winapi эту функцию чаще всего называют WndProc
те "бесконечный" цикл не будет на самом деле бесконечным
эта функция будет много-много раз выполняться, возможно за раз будет обрабатывать несколько сообщений, именно для этого в ней и нужен цикл
те это не тупо один раз запустили цикл в функции и он "живет" все время работы программы
об этом я тут и толкую 10й пост подряд
Какое еще событие пробуждает процесс? Ты можешь ответить?
ОС не будет шурудить твой код, чтобы выбрать нужный коллбек. Коллбеки у тебя в либе/приложухе хранятся и она как раз вызывает их, а не ОС.
бля, чувак, это таки не так
какой бы высокоуровневый фреймворк ты не пользовал, в самом низу будет парочка системных событий
потому что только ос управляет потоками: останавливает и пробуждает
а когда поток пробуждет ос же надо знать с какой точки кода начать его выполнение, да?
дак вот эта точка входа указывается коллбеком при регистрации события
в качестве точки входа часто как раз оказывается фунция, содержащая главный цикл обработки сообщений, но не всегда
>указывается коллбеком при регистрации события
Какой коллбек? Какое события? Кто чего регистрирует?
У тебя какая-то магия вместо объяснения.
При условном sleep ОС забирает выполнение у процесса. По завершению слипа процесс продолжает выполняться с того же места. Все, нет никаких событий.
while (true) {
вызываешь обработку гуя;
sleep(100);
}
>По завершению слипа процесс продолжает выполняться с того же места. Все, нет никаких событий.
ясно
все, заканчиваем обсуждение
Поток в итоге 99.9% времени тупо спит и нихуя не делает. Найс производительность, вам бы в джава тред съебать уебкам, да даже там вас засмеют. Про асинхронность никто не слышал. Сразу видно лето, вкатывальщики пол треда уже засрали.
https://docs.microsoft.com/en-us/windows/desktop/learnwin32/window-messages
>Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё.
Ты серьезно так считаешь? Щитпостинг 80 уровня, просто пиздец.
Соси хуй, быдло.
>Ты так и не ответил какие такие события заставляют процесс проснуться.
в зависимости от того, как отрисовывает контроллы gui-фреймворк, который ты используешь
под виндой, к примеру
он может использовать нативные контроллы - тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщение
или, если фреймворк сам отрисовывает свои контроллы, то ос будет пробуждать поток просто по наиболее "общему" событию, типа такого "на полотне" приложения что-то случилось, вот тебе тип клика (или нажатие клавиши) и его координаты, а приложение уже дальше само решает что делать и само отрисовывает
алсо, в случае нативного gui-фреймворка, в ядре будет зарегистрировано целая куча сообщений от приложения
а в случае когда фреймворк сам отрисовывает - только минимум сообщений
это в винде в ядре
в линуксе же примерно похоже, но только все это будет происходить на уровне X11 (либо фреймбуфера, либо вейланда)
тупо регистрация событий, навешивание коллбеков и прочее
техники прямиком из 70х
ой, все
нет, это блядская магия
в твоем черном ящике сидит маленький эльф и быстро перерисовывает тебе на экран картинки
Такое чувство что тут только пхписты с жабаебами в основном сидят. Пойду на стаковерфло спрашивать.
>месседжи, каллбэки, корутины, эвенты
Ты не кукарекай не по русски а пруфы давай.
Желательно на .рт
I need simple implementation of ping utility (on ICMP) for my project on clean C++
Can you help me find that
Thank in advance
A quick Google search reveals this Linux implementation. Is this what you were looking for?
https://gist.github.com/KelviNosse/930988c7dda1966e164a712fa32dc567
>На Русском давай
Also, why u hate some English sources, but don't write code on Cyrillic yet ? Maybe u must use all authentic in this case (software/standards/etc) ? Nope, u cant' ? Well, shut up.
You had one job...
>тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщение
Приведи, пожалуйста, примерный кусок кода, которым реализуется регистрация нажатия кнопки гуи в ОС.
1. Виджеты какие-то не такие (мне тупо надо несколько прямоугольников нарисовать, где их брать?)
2. Qt Creator очень часто крашится на моей системе (но это ожидаемо). Можно как-то без него обойтись, ну типа как с командной строки GCC компилировать?
Не, надо нативным и без зависимостей. Я питон с горем пополам знаю, можно было бы PyQt попробовать, но это полагаться на питон и опять же мне всего-то виджет нужный взять
Ну он в дистрах с гуем практически всегда имеется же
Можно на winsock сделоть
>>19375
Приятно наверное всякую такую мемную чушь в голове держать, покрыть нечем, извини.
>A quick Google search
Я общался с гуглом несколько часов на нескольких языках. Мне нужно наипростейшее решение, без мультипотоков, без подключения хуевой горы библиотек от нехуй делоть, без обработки сообщений как там автору заблагорассудилось, тупо пример эхо запроса с выводом, все. Ну и для шинды офк.
>безанглийскаваникуда
Ну так ты уже захуячил все нарусском ? Так неси показывай !
>с таким уровнем языка
Уровнем средней руки америкоса что ле ? Коли мой уровень так низок, подсоби, укажи на недостатки.
Максимально базовый пример c WinAPI, для работы нужно будет линковать iphlpapi.lib и ws2_32.lib
https://docs.microsoft.com/en-us/windows/desktop/api/icmpapi/nf-icmpapi-icmpsendecho
Твои посты это wordbyword перевод кальки, которую ты придумал на русском. Не знаю что такое уровень средней руки америкоса, но это максимум уровень В1-В2 и способность воспринимать большую часть неформальной речи. Я не могу даже представить себе как ты путая предлоги способен читать тех. документацию по языку, да ещё и наезжать с таким уровнем мол учите английский быдло еп))
>Твои посты это wordbyword
Кхм, я все же ожидал более предметной критики. Пример, цитаты, с референсом к конкретным синтакисческим/семантическим правилам. И я и средний американец мыслят и зачастую говорят так как оно появляется у них в голове, не стихами и прозой.
Я не заявляю о владении языком на fluent уровне илитипа того, но и найти здесь (в тройке достаточно простых предложений без времени) что - то изрядно безграмотного немогу.
>Не знаю что такое уровень средней руки америкоса
>способность воспринимать большую часть неформальной речи
>Я не могу даже представить себе
>представить
> способен читать
Кхм, во - первых меньше фантазируй, а то вот это
>наезжать с таким уровнем мол учите английский быдло еп))
как раз - таки выдумака на русском.
Во - вторых, чтение, письмо и прочее немного разные вещи, уж читать при хорошем сл. запасе, и уж тем более если тех. документация из сферы которой ты занимаешься много способностей не надо. Вот 16 времен юзать в хвост и гиву, да.
В прочем, ты меня уже утомил, можешь пойти нахой.
>>19480
Может быть, гляну, пасиба.
Да кстати, насчет
>наезжать с таким уровнем мол учите английский быдло еп))
Не ты ли это осуществил, а ?
>с таким уровнем языка
Как бы намекая вот у меня то он вот такой, не то что у тебя. А зачем я это вообще написал, опять же придумав
>кукарекают про безанглийскаваникуда?
ну так чтобы показать им тут всем что
> учите английский быдло еп
Как правильно подключать С библиотеки при общем использовании крестов?
Подключаю хеадер, добавляю главный исходник библиотеки и ставлю флаги на языки, но линкер выдаёт кучу помоев.
Нахуй иди.
Что за главный исходник библиотеки?
Тебе надо либо все сурсы подключить в проекте, либо указать в линкере на .lib. При этом в additional include directories нужно путь ко всем хедерам указать.
Возможно еще нужно в extern "C" { } обернуть инклюд.
Мб либа скомпилена другим компилятором или его версией, попробуй сам собрать или найти подходящую
Пробовал все включать и с порядком разным, сейчас пробую скомпилить отдельно, но линкер всё равно ругается.
Если конкретно, то https://github.com/astrand/xclip
Через мейк собирается, но его понять не могу пока.
>>19568
Нет, проблема в другом.
Сейчас ругается и не видит XrmInitialize и смежные. man XrmInitialize говорит, что лежит оно в <X11/Xresource.h>, но при подключении никакого эффекта.
-lX11 и -lXmu решили.
Спасибо Анону, который посоветовал собрать отдельно.
Было подобное в голове, но эти слова заставили делать.
Зачем и кому это нужно? Ненормальные что ли?
https://pastebin.com/BxGpWfbQ
bind есть, return есть, последовательность функций сохраняется и потом по вызову return(ну у меня это run()) вычисляется значение. Или ты к тому, что функции нечистые, cout используется и тд?
Ну тащемта метапрограммирование на плюсах оче похоже на хацкель, ток с поправкой на то, что типами оперируем, дежавю ловлю постоянно.
Аа, ну ладно тогда. А то я читал про монады,
https://ru.wikipedia.org/wiki/Монада_(программирование)
там был пример на джаве и типа сделал на плюсах аналог, но там прямо сразу вычисляется значение, короче вычисление нихуя не отложенное получается, монада же должна именно последовательность вычислений хранить, а не тупо последний результат. Это тупо в общем.
Так подсказки то не так плохи - они показывает родное имя типа хотя бы, а вот зачем добавили уродскую F1 я так и не понял.
На форуме написали, мол это Clang Code Model, я пробовал отключать-включать модули, и никаким образом вот эту всплывающую подсказку так и не смог найти, там уже просто ничего не работает, но F1 оно всё-равно рисует (в тех местах, где всё ещё может вывести подсказку).
Поставил 4.7.2 - и всё заработало как надо. Кошмар просто, поехавшие, только посмотри насколько так минималистичнее.
??? А как по другому сделать?
А по мимо неё есть ещё подобные книжки, желательно связанные с С++?
Маерс effective c++
Я давно на этих ваших плюсах не программировал, но у вас что, уже ссылки на функции нельзя делать?
На хуя городить такой злоебучий огород, когда можно просто передавать ссылку на функцию туда, где тебе НУЖНА ЕБАНАЯ ФУНКЦИЯ?
Я хз как посмотреть, но в нотпаде конвертировал в utf-8
T то один, ты сможешь только с функциями одного типа работать. например int(double).
А у лямбд вообще тип уникальный для каждой лямбды.
Ошибка "Идентификатор не определен"
Я только сейчас понял что я написал непонятно. Не метод определен в main, а объект, но сделал как вы сказали. Теперь даже ошибку не могу понять
Ты какой-то хуйней занимаешся. Если хочешь продолжать то в Chat.cpp объяви Chat(Класс) w с модификатором extern Но такого быть не должно, тебе стоит серьезно задуматься над своим поведением.
Могу описать логику своей бадлопрограммы, а вы скажите в каком месте я дурак скорее всего в любом, но скажите где особенно
Я понимаю, что ты пробовал, я вообще не уверен в том, как оно будет работать, extern не extern.
Опишу че хочу сделать, все равно делать нехуй.
Хочу вывести сообщение из tcpsocket в plaintext. Забиндил сигнал ReadyToRead или как он там[/spoiler на свой слот, в котором вызываю метод объекта Звучит как то странно, поэтому, пацаны, не бейте, лучше обоссыте
Коментируй все кроме пустой main(). Проверяй что компилируется. Потом постепенно раскомментируй стараясь на каждом шаге добавлять как можно меньше строк и компилируй. Ошибки исправляй.
Не понял. Зачем? Самая главная проблема в том, что объект не виден в других файлах, кроме того в котором он объявлен. Тут всего одна ошибка о неопределенном идентификаторе выскакивает. Десяток других при попытке исправить одну.
Как эти расширения использовать, посоветуйте книжку/статью, чтобы цельное представление составить? Как оно с многопоточностью сочетатется, например, есть ли какая-то задержа-загрузка перед первым использованием инструкции из этих расширений и всё в таком роде.
Ассемблерные вставки более-менее умею, но в gcc они довольно уродские, мягко говоря. Ещё увидел в примерах x86intrin.h, который выглядит человечнее.
Погугли статьи про векторизацию и автовекторизацию. На счет книг хз какие есть.
Тут по практическому использованию интринсиков есть: https://www.codeproject.com/Articles/874396/Crunching-Numbers-with-AVX-and-AVX
Накладные расходы могут возникать при загрузке/выгрузке данных из регистров, при использовании каких-то хитрых манипуляций внутри регистров. Но при автовекторизации это по идеи сам компилятор должен оценивать.
Плюс сами элементы в памяти крайне важно как расположены. Лучше всего если это линейных массив элементов без пропусков, и выровненный в памяти (aligned_alloc).
Алсо, векторизацию можно комбинировать с распараллеливанием, эти векторные модули на каждом ядре процессора есть.
Обычное такое нужно для описания данных для какого-то состояния.
Нужные данные получаю просто по индексу (кастя, например, STATE1 к инту).
Так вот, такое мне кажется не очень хорошим решением. Можно ли это всё как-то сделать иначе?
Как вариант добавить в структуру поле типа этого самого enum class и когда нужно получить данные, то через какой-нибудь std::find_if нахожу нужное.
Можно с помощью map или unordered_map, но это кажется перебором, особенно если этих состояний несколько штук.
> Нихера не понятно, что ты хочешь делать?
Строчку 20 переделать на что-то другое.
Два вариант я привёл в прошлом посте.
> Какая проблема при этом?
Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении).
Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве.
> Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении).
std::map<State, std::vector<MyStruct>>
> Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве.
За смену порядка в перечислении обычно пиздят до потери сознания
Вектор лишний
Если у тебя там в качестве полей структуры какие-то классы из std, то вызывать для них memset как-то не очень.
Ну, например, в конструкторе (класса std) происходит какая-нибудь аллокация, а ты своим мемсетом затрёшь переменные которые отвечают за размер памяти, указатель и тд.
>Не будет так работать.
Не может такого быть. Перед всеми инклюдами дефайн поставь. Ну или при MyStruct a{} memset не вызывается.
Типа компилятор неявно её использует даже без инклюдов и всего, если запустить с флагом -nostdlb тогда не будет, может ещё какие-то флаги есть, чтобы конкретную функцию выключить из линковки, но я хз.
Нет, ты в этой строке создаешь временную переменную, которая сразу же удаляется. Конструктор базового класса будет вызван до входа в тело конструктора. Если не веришь, посмотри ассемблерный вывод твоего говна.
Не верю, потому что несколько раз прошелся дебагером по коду, все там нормально. Зачем ты обманываешь меня?
Сам ты ебанутый. Я степ бай степ и по коду и по асм мапу прошелся дебагером. Тролль ебучий.
За статью спасибо, то что нужно, про логику названий, про всё это, а остальное можно вручную проверять и выяснять в конце-концов, что и как быстрее работает.
>aligned_alloc
Хм, его нет. Даже с -std=c++17. А _aligned_malloc треует своего собственного _aligned_free, там прям то же самое, что я уже почти собрался сделать из обычного malloc-а.
>эти векторные модули на каждом ядре процессора есть
10/10, зачем я вообще эту видеокарту мучил, которая хоть и быстрее, но меньше чем охулиард штук считать на ней мало смысла.
>Не верю
Твое право, но ассемблер и стандарт не обманывают: https://gcc.godbolt.org/z/8knfmF
Если тебя этот код не убедил, то добавь в базовый класс деструктор и сразу все станет понятно.
Ну и да, у тебя очень опасный код: сначала создается объект базового класса веришь ты или нет, а потом ты с помощью SZM все внутренности нахер затираешь. И если в базовом классе происходит какая-либо аллокация, то можно таким образом утечку получить.
Так там же нет никаких вменяемых данных, нафига плодить лишние инструкции?
Пишу бинарное дерево поиска. У вершины есть ключ и указатели на потомков. Дерево строится динамически, понятное дело. Дерево поддерживает поиска потомка по ключу: Tree& find(K key). Далее, хочу написать метод Tree& pop(Tree& node), который выкидывает node из дерева, ставит ему потомков null и возвращает ссылку на него. У меня такое ощущение, что, если я просто сделаю return node, то при запуске чего-то типа t.insert(узел с ключом i); t.pop(t.find(i)); у меня произойдёт утечка памяти. Я прав? Как это обойти? Как это вообще работает?
>GCC
Можешь убирать свое говно.
Я тебе русским языком написал, что листинг я смотрел и дебажил 3 раза. Там все работает так, как мне нужно.
Ты даже не вник в суть задачи и лапшу мне на уши вешаешь, найди первое мое сообщение в которой я описал проблему.
>>20500
Боже, ебанутый. Очевидно, если компилятор по дефолту генерирует memset внутри конструктора, то нет там никаких аллокаций и я спокойно могу пихать свою имплементацию. У тебя с логикой проблемы? Почему я должен слушать Васянов с двача, если я все перепроверил по 100 раз и на стеке аналогичное решение? Или ты тот самый тролль который поселился в треде с начала лета и скорее всего ебаный школьник и всех шлет нахуй?
Сука, что ты несёшь, еб твою мать. Какой нахуй memset внутри конструктора, ебливая ты зараза.
> я все перепроверил по 100 раз
Проверялка не выросла видимо.
https://www.viva64.com/ru/examples/v603/
Ты ничтожество, бесполезная биомасса, у тебя никогда ничего не получится, лучше сразу иди в грузчики, не порти чужой говнокод
Как же приятно смотреть на то, как бомбанутый школьник мне 2 день с порванной жопой и пеной у рта пытается доказать что-то, хотя я уже давным давно написал код, который полностью правильно работает и удовлетворяет мои требования. Eye candy.
Он прав, может быть оптимизация сработала просто, вот ты и не видишь нихуя.
> Какой нахуй memset внутри конструктора, ебливая ты зараза
Структуры объектов затираются нулями, чтобы мусора не было.
Как подружить stl с int[4]? Второй блок не компилируется из-за ошибках в шаблонах, если расскомментировать sort. Не вижу никаких концептуальных проблем, структура аналогичного содержания хорошо себя чувствует.
Пытаюсь разобраться с winsock, написал простейшую прогу для скачивания страницы, но притэтом она ИСКАЖАЕТ некоторые символы. Это так и задумано тли баг? Как исправить?
Делаю как там: https://stackoverflow.com/questions/31777941/winsock-recv-giving-gibberish-mixed-with-useful-html
Решение которое ему дали, естественно, применил.
Что значит искажает? Покажи как в оригинале и твой результат.
Какая-нибудь ебола с кодировкой наверное.
Отдельные символы заменяются мусором, каждый раз разные. Почти весь текст html-странрцы загружается верно кроме них. Мусор это нечитаемые символы которые отображаются в браузере как <?>b32<?>. b32 - может быть любое случайное число в hex, необязательно это. <?> это чёрный ромб с вопросительным знаком в браузере, на мэйлаче я вообще хз, будет ли он отображаться, скорее всего нет.
Я понял в чем ошибка. Как сбросить счетчик строк в объекте класса ofstream. Мне нужно чтобы в какой то момент объект начал считывать файлы с первой строки, а не с предыдущей
540x360, 0:20
Я насчет qt хз. C++ вроде не имеет хорошего рандомизатора, поэтому я бы на твоем месте взял псевдослучайные данные из памяти или по времени нажатия на кнопку в силлисекундах
Все. Сам все сделал. Вроде. Хотя чет опять не работает. Ну лан.
>C++ вроде не имеет хорошего рандомизатора
в stl же есть 6 различных генераторов и что-то около 20 распределений.
А seed просто приравнять можно к чему то? Что то не могу в доках qt этот момент найти.
QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch()) или типа того.
>always uses the facilities provided by the operating system to generate random numbers. The system facilities are considered to be cryptographically safe on at least the following operating systems: Apple OSes (Darwin), BSDs, Linux, Windows. That may also be the case on other operating systems.
А как ограничить? Мне надо bounded().
Попробовал написать друг за дружкой
QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch());
int a = QRandomGenerator::global()->bounded(360);
но стало выбивать ошибку при компиляции.
QRandomGenerator gen(QDateTime::currentMSecsSinceEpoch());
Спасибо
А программа многопоточная? У меня виснет на отличненько, например.
И занять вообще всю память тоже можно без особых проблем, тогда остальные программы сходят с ума, окна перестают корректно отображать и всё в таком роде.
> А программа многопоточная?
Нет, если только компилятор ничего за меня не сделал. НО если в диспетчере задач поставить сходство на одно ядро то оно начинает нагружаться по максимуму (обычно нет), а остальные чуть меньше грузит
> И занять вообще всю память
2 мб весит.
Вот блин. Просто с одного ядра на другое переключается. Теперь ясно
>Нет
Ну вот потому и не лагает.
Могу предположить, что без "сходства" планировщик поочерёдно перекидывает её на разные ядра, и это выглядит как неполная загрузка нескольких ядер.
Одна буква, например, "з". Каждый раз резная. Англоязычные сайты грузятся без багов, вроде бы.
http://coliru.stacked-crooked.com/a/237e0f7279c8fb86
Код как там, только с испраалением которое ему там же предложили:
https://stackoverflow.com/questions/31777941/winsock-recv-giving-gibberish-mixed-with-useful-html
if defined(IDA_SDK_VERSION) || PIN_BUILD_NUMBER >= 76991
пишет ошибку: ОшибкаC1017недопустимое константное выражение целого типа
То есть, вместо || надо And?
code.str() возвращает временный объект std::string. В следующей строке кода он уже уничтожен и твой указатель - не валидный.
Обрезка, уменьшение, обесцвечивание, контраст - запилил. Теперь нужно либо сравнить 2 пикчи, либо узнать, что одна из них полностью белая/пустая пикрил.
Хотел сначала в сторону гистограммы смотреть, но эта оказалась весьма непонятная часть.
Может кто что посоветовать? Или курс "запили то же самое без абстракций и либ".
>||
Это логическое ИЛИ. && это И.
Попробуй
if (defined(IDA_SDK_VERSION) || PIN_BUILD_NUMBER >= 76991)
если я правильно понял то, что тебе требуется.
>Или курс "запили то же самое без абстракций и либ"
Вот это. Белый фон (и любой другой однотонный) делается очень просто, схожесть тоже не слишком сложно, если картинки совмещены. Если же там вращения, светофильтры, смещения и отзеркаливания, то можно сразу пристрелиться.
Не знаю зачем тебе opencv для того что ты перечислил, он для задач посерьёзнее вроде бы - поиск линий/кругов на картинке и всё в таком роде.
Решил научиться использовать SDL2. С 2d все ясно, а как с 3d? Там есть определенные классы и методы для этого, или же мне надо научиться работать с проекциями и прочей математической магией?
Около часа назад вновь пытался осилить bmp/png и после пропала всякая мотивация.
Изображения совмещены.
Попробую хоть Magick++, пока окончательно не уплыл.
>пытался осилить bmp/png
А, да, форматы долбанутые, эн/декодер вручную конечно не стоит писать, если ты в самом деле пытался это сделать. Даже в простейшем bmp рутина унылая с разными битовыми форматами. Когда-то давно для загрузки файлов (текстур для opengl) я DevIL/OpenIL использовал и он нормально работал, сейчас под виндой вовсе через gdi+ загружаю, а это совсем дно.
Я имел ввиду, если тебе нужно массив пикселей обрабатывать на уровне поиска фона/сравнения совмещённых картинок, то вряд ли тут нужны библиотеки для обработки массивов пикселей.
А форматы очень сложные, это немного другая область и нет никакого смысла их писать, для них совершенно точно почти на 100% нужна либа - форматы то одни на всех, какой-то специфический вряд ли потребуется, в отличие от специфической обработки пикселей.
>или же мне надо научиться работать с проекциями и прочей математической магией?
Вот это. Не знаю насчёт sdl, но в glu были наглядные человеческие функции, по типу разместить камеру в таких-то координатах, с таким-то направлением и таким-то углом обзора. То есть если нужен схематичный вид в виде линий и точек, то можно и не вникать - но если будешь писать шейдеры с отражениями и тени, отсекать невидимые объекты с помощью объёмных деревьев, делать какие-то костные анимации, то тут совсем никак без проекций и другой линейной алгебры.
362x640, 0:15
Например, открытие файла привязано к названию файла, ширине файла, длине файла (это картинка), глобальным мапам с пикселями.
Что делать, как можно решить проблему? Перечислять все глобальные переменные в параметрах функции очень не хочется.
Один знакомый наоборот клялся, что это как семки щёлкать :c
Собственно, перешёл за пару часов на magick++ и реализовал прошлое и новое, но вновь уткнулся в стену, ибо встал вопрос о поиске по темплейту, чего API не предусматривает.
То, что решит твою задачу без лишнего геморроя, при условии что ты эту задачу сформулируешь.
Угу, именно поэтому во всём мире полтора видеоэнкодера vp9, да и к изображениям по три с половиной, который скорее всего копируют какую-нибудь открытую библиотеку в большинстве своём.
Там же в коде все жадные алгоритмы сжатия, двумерные фурье-преобразования, особенности человеческого зрения и так далее. Это нужно быть очень крутым спецом (и иметь кучу информации), чтобы написать это на достойном уровне или ещё большей занудой, чтобы вычитывать спецификации/документации и ремейкать то же самое в своём коде.
Что такое поиск по темплейту?
Отменный english
>Я хочу некоторые функции, типа открытия файлов, вынести за пределы кувиджета
Ты какой-то наркоман, откуда там открытие файлов?
Асло пилите уже перекат.
Ну, благо такие люди есть и пишутся новые кодеры для какого-нибудь AV1.
>Что такое поиск по темплейту?
Поиск по шаблону, но обошёл это наведением курсора самостоятельно.
Бтв, сырой проект закончен, без кроссплатформенности и с уймой костылей.
Ты картинку в raw формате по другому не откроешь. Даже в фотошопе перед ее открытием запрашивается ширина, высота, битность и т.д.
> , откуда там открытие файлов?
У меня программа, которая является экземпляром класса QWidget. Функцию открытия файла я сам писал. Но так как я ее часто использую при создании следующих программ, я решил, что проще будет вынести ее в отдельный файл и подсоединять потом, когда понадобится.
make.
Утонем же.
Это копия, сохраненная 24 июля 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.