Это копия, сохраненная 4 февраля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы:
- http://en.cppreference.com/w/
- http://www.cplusplus.com/reference/
Прошлый:
- https://2ch.hk/pr/res/1085579.html (М)
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0791r0.pdf
Хз, имхо надо уже делать третью надстройку, как в свое время кресты в си транслировались, пора что-то подобное на базе концептов пилить. Как есть выходит слишком сложная билеберда.
Хуй с ним, гулять так гулять. Вангую, что в какой-то момент кто-нибудь форкнет и запилит поддержку нового диалекта в крупный компилятор, интересно будет.
Не, че в нем няшного? Разве что folding.
да
Открываю я исходник и смотрю реализацию функции strlen, а там...
И как такое вообще понять
_Check_return_
size_t __cdecl strlen(
_In_z_ char const* _Str
);
Что за _In_z_ ?
Причем это уже реализация, которая должна быть прямо в хедере, я нажал f12.
но я не вижу никакой реализации, только объявление
Слышал что плюсы не нужны и юзают только на заводах
завести*
твой strlen не использует SSE инструкции
Компилируемые языки сейчас уже никому не нужны, а в будущем от них совсем откажутся.
Будущее за скриптовыми языками.
Все так. Го в дотку.
В современных IDE есть анализаторы кода, которые тебе сразу же подсвечивают ошибку, если что-то не так. Зато не надо уйму сил, чтобы писать код, и ждать несколько часов, пока твой код скомпилируется или выдаст ошибку.
Полтора вызова подсвечивает, а внутри метода с аргументом что будешь делать? А с kwargs?
тогда какой язык можешь посоветовать для разработки десктоп приложении и что бы без проблем можно было найти РАБоту
>какой язык можешь посоветовать для разработки десктоп приложении
C#. Но сейчас уже от десктоп приложений отказались в пользу веба.
>что бы без проблем можно было найти РАБоту
Java (правда умирает), C#, js, php, 1C
Очень смешно. Ну и как твой анализатор определит, что вместо числа передали строку?
https://pastebin.com/uM958Qb1
В гугл не могу, потому что он воспринимает крышечки и скобки фигурные, как шаблон.
фубля напомнил c++ cli
>Компилируемые языки сейчас уже никому не нужны
>Будущее за скриптовыми языками.
Которые в 99% случаев тоже компилируются, в байт-код.
Ещё раз, SSO хранит данные строки НЕ НА СТЕКЕ. SSO хранит данные строки в самом объекте строки, а объект строки может быть и на стеке, и в куче.
>>099433
google://microsoft+crt+sources , чуть ли не первая ссылка. Сложно?
>>099567
Ясен фиг, можно в коде спрятать тип так, что анализатор его не найдёт. Во множестве программ определить динамический тип с помощью анализа возможно.
>Компилируемые языки сейчас уже никому не нужны, а в будущем от них совсем откажутся.
>Будущее за скриптовыми языками.
там по теореме сосницкого вроде решается, гугли
У меня есть Int. Он занимает 32 бита. Что будет в первой ситуации мне понятно, но вот что будет во второй? Где-то пишут, что увеличится, а где-то, что уменьшится.
Ситуация № 1:
0000000000000000000000000000011 -> 0000000000000000000000000001100
Ситуация № 2:
10110010110100000101111000000000 (32 бита) -> 0000000000000000000000000000001011001011010000010111100000000000 (64 бита, но тогда это уже не Int)
или
10110010110100000101111000000000 -> 11001011010000010111100000000000
это был сдвиг на 2 бита, если что.
лолштоблядь
Ты считаешь, что операция сдвига зависит от содержимого сдвигаемого операнда? Охуеть.
http://eel.is/c++draft/expr.shift#:operator,left_shift
Я не думаю, что операция сдвига зависит от содержимого. Я спрашиваю, что будет с первыми битами, когда предел этого типа уже достигнут.
"E1 × 2E2 is representable in the corresponding unsigned type of the result type, then that value, converted to the result type, is the resulting value; otherwise, the behavior is undefined."
" the behavior is undefined" - это и наступит?
Так вот, чё почитать по крестам?
У нас на работе очень-очень много bind'оф, ламбд, каллбеков, фабрик...
В общем это всё бьёт по мозгам очень сильно. Я вроде постигаю, но медленно.
В общем, посоветуйте книг почтать умных по C++. Но чтоб не учили всяким ПЕРЕМЕННЫМ И МАССИВАМ. Или там ООП в стиле
class Car : public veichle
{
private:
Wheel wheels[4];
public:
void move() override;
}
Ну и тд. А чтоб поближе к реальности. Для интермидиатов.
>Устроился погромистом на полставки на C++ пока учусь на 3ем курсе
У меня побежала слеза по щеке.
3 курс мехмата, приходится работать репетитором
Скотт Майерс - Effective Modern C++
Да.
Чому пидоры из intellij не включили с++ в ультимейт сборку? Куда предъявить?
Я что-то смутно помню из далекого прошлого, оно сейчас нужно вообще для чего-то?
Да, и в 1993-1997 гг. было очень много поросячьего визга, особенно в России. Они все на кладбище
Google, vendor lock
А среда для разработки Cpp. Ну Ок, превратилась, и как стала называться? Просто я смотрю курсы кое-где по Visual C++ до сих пор предлагают -- что это?
Стоп, это вот оно https://www.visualstudio.com/ru/ устаревшее и малоизвестное? Ты не трал?
Олсо, поясните за различия C++ и C#, что в них общего, кроме буквы C в названии?
Анон имел в виду что visual c++ была до VS. И она устарела.
> что общего
Схожий синтаксис. Алсо до-диез "потомок" крестов
>>1095677 (OP)
Анон, как сишкоблядине с двумя годами опыта быстро осилить С++? Книги Трупа страуса вроде бы довольно фундаментальны и слишком большие или нет?, т.е. читать их долго и неинтересно если уже знаешь многие вещи. Может быть просто втупую учить по cppreference?
Недавно кто-то рекомендовал Accelerated C++ в таком же случае как твой. Не знаю правда как оно, не читал
Меня интересует этот случай: "if E1 has a signed type and non-negative value". И все вытекает в "the behavior is undefined".
2147483647 << 1 уже не влезает в int и выдает -2. Но где-то пишут, что при сдвиге такого числа (2147483647) первый бит "отбросится", а к концу присоединится 0.
Я спрашиваю про конкретное поведение, котрое будет происходить после сдвига влево числа, которое уже предел своего типа. Я не верю, что вместо определенного поведения происходит "the behavior is undefined".
Очевидный Стенли Липпман очевиден.
Эккель свою книгу писал как раз для тех кто С знает, но хз годно ли. Да и устарело поди.
>после сдвига влево числа, которое уже предел своего типа
Ассемблер это уже, нахер не надо это всё.
Еба, а в плюсах средства работы с указателями до сих пор не устаканились?
Вообще язык нужен для специфических целей - пилить хуйню для андроида которую я бы с радостью на Си сделал, но ASOP едва ли не на половину состоит из говна на C++ с непонятными закорючками. В будущем ебал заниматься С++, хоть и лычку в резюме напишу, лол.
>Еба, а в плюсах средства работы с указателями до сих пор не устаканились?
Устаканились в 2011 году, и более того: Липпман идёт от простого к сложному, в книге разобран и синтаксис языка, и то, где и как используются ссылки (а не только указатели), и там даже есть современные приёмы вроде безымянных функций (они же лямбды).
Хорошо, почитаю. Спасибо
Собственно, я смеюсь, а результат операции сдвига знакового числа на самом деле зависит от содержимого.
>>100113
Для беззнакового типа никакого undefined.
> Я не верю, что вместо определенного поведения происходит "the behavior is undefined".
Стандарт языка (единственный источник такой информации) для тебя не аргумент? Язык - это не определение инструкций процессора, которые будут использованы, это определение языка. Хочешь иметь гарантии - прочитай инстракшн мэньюал к своему ЦП и сделай ассемблерную вставку.
>Собственно, я смеюсь, а результат операции сдвига знакового числа на самом деле зависит от содержимого.
А результат суммы — от содержимого слагаемых. Охуеть, да?
>Ассемблер это уже, нахер не надо это всё.
>>100166
>Язык - это не определение инструкций процессора, которые будут использованы, это определение языка. Хочешь иметь гарантии - прочитай инстракшн мэньюал к своему ЦП и сделай ассемблерную вставку.
Я что-то пропустил, но разве C++ не СИСТЕМНЫЙ язык программирования?
Тащемто даже на C# можно все эти битовые операции делать спокойно с вполне себе определенным поведением.
В процессе решения поставленной мною передо мной задачи я наткнулся на какую-то адскую фигню, которую начал упрощать, чтобы понять в чём я ошибаюсь и в конце-концов пришёл к 4 пикрилейтедам - коду который вызывает ошибку, если его модифицировать.
Стоит сделать активной строчку кода на втором пике (в С1.h) #include "QtGuiApplication3.h" как тут же при следующей отладке я получаю ошибку "С1: не определён базовый класс", которая вызывается из "С2.h"
Почему так происходит? Как мне тогда (если я захочу этого) передать указатель на QtGuiApplication3 в объект класса С1 или С2?
ещё отличается дефолтное наследование
ну, если связываешь плюсы с какой-нибудь скрипто-парашей, то скорее всего, с классами у тебя ничего не получится
подожи
а зачем тебе в C1.h хедер подключать, если ты указатель собрался пользовать? forward declaration вот это всё
Большое спасибо! Интересно, из какого учебника в моей голове поселилась мысль о том, что все .h нужно подключать в .h?
Иногда полезно предположить, что собеседник не идиот.
>>100194
Ага, и ассемблерных вставок и implementation-defined-поведения в сисярпе нет. Остальсь только рассказать о том, зачем тебе нужно сдвигать отрицательно знаковое число.
>>100207
Ты не то инклудишь, походу. Смотри доки.
http://doc.qt.io/qt-5/qmainwindow.html
>Остальсь только рассказать о том, зачем тебе нужно сдвигать отрицательно знаковое число.
Мне, незачем.
Там же написано, "одним из вариантов с++ является visual c++".
Так же называлась IDE для этого языка. Читай линк: https://ru.m.wikipedia.org/wiki/Microsoft_Visual_C++
IDE устарела, язык актуален. Курс, соответственно, тоже.
>Иногда полезно предположить, что собеседник не идиот.
Прочитав, что результат операции сдвига вызывает смех, я так и не смог это сделать. Хотя очень старался. Честно.
>Прочитав, что результат операции сдвига вызывает смех
На заборе прочитал? Русский язык, ду ю спик ит?
>>100228
>Одним из вариантов С++ является Visual С++ - продукт корпорации Microsoft, являющийся частью комплекта Microsoft Visual Studio.
Майкрософт никогда не называла свой диалект С++ визуалом. Была ли IDE под названием Visual C++ часть студии хоть когда-нибудь - нагугли сам, не было такого. Писал это какой-нибудь секретарь, который не знает нихуя.
>>100230
http://coliru.stacked-crooked.com/a/28da7966de495986
>>100253
Накатал порнятнку про то, что такое сделать нельзя, а тут ты. Пришлось стереть.
https://msdn.microsoft.com/en-us/library/w4ddyt9h.aspx?f=255&MSPPError=-2147217396
In versions of Visual C++ and Microsoft C/C++ before Visual C++ 2005, time_t was a long int (32 bits) and hence could not be used for dates past 3:14:07 January 19, 2038, UTC. time_t is now equivalent to __time64_t by default, but defining _USE_32BIT_TIME_T changes time_t to __time32_t and forces many time functions to call versions that take the 32-bit time_t. For more information, see Standard Types and comments in the documentation for the individual time functions.
ток без шуток про хуи и и бочку
Пишу прогу использующую интовые пары координат. Можно ли запилить что-то типа
coords a;
a = {0,0};
Можно.
Можешь спросить "Какие программы я смогу писать, пройдя ваш курс" и "Будем ли мы изучать теорию языка".
Потому что умение что-то написать на C++ - это не умение найти проблему.
>>100321
Можно, только ногу себе не отстрели.
http://coliru.stacked-crooked.com/a/89bda233c9ae90b3
То есть, если есть недефолтный конструктор, то аггегатная инициализация (так это называется) не может быть использована, и список значений в фигурных скобках становится списком аргументов конструктора.
Бамп. Мне кажется, что с таким построением системы я готовлюсь к выстрелу в ногу.
Сам спросил, сам ответил: это костыль.
http://en.cppreference.com/w/cpp/types/enable_if
http://en.cppreference.com/w/cpp/language/sfinae
Язык допускает некоторые ошибки в шаблонах для того, чтобы увеличить сферу их применения. Сфера применения увеличилась настолько, что с помощью намеренного внесения этих ошибок можно влиять на код предсказуемым образом. Если в момент инстатциирования шаблона возникает ошибка, компилятор пропускает шаблон и переходит к следующему. Это называется SFINAE.
template< bool B, class T = void >
using enable_if_t = typename enable_if<B,T>::type;
template<bool B, class T = void>
struct enable_if {};
template<class T>
struct enable_if<true, T> { typedef T type; };
То есть, выражение enable_if_t<0> - заведомо ошибка, если оно использовано вне дедукции параметров шаблона. Далее: вместо нуля можешь подставить любое выражение этапа компиляции, и теперь ты получил ошибку, которая генерируется только при невыполнении условия, а когда условие выполнено, то параметр шаблона просто не используется.
Ну а дальше ты и сам поймёшь: вместо 0 в том куске кода подставлен размер списка параметров.
https://ideone.com/sTlxER - кроме того, из-за правил языка ты не можешь этот тип передать - если есть многоточие, то вест хвост параметров должен упихаться в него, или будет substitution failure.
Короче: в конце списка параметров пишешь тип-параметр с дефолтным значением, присваиваешь ему enable_if_t, в параметры к энаблифт пихаешь условие и делаешь другой шаблон, который должен быть использован, если это условие не выполнено - это один из вариантов использования.
Сколько сокетов нужно иметь в приложении для оптимальной работы, и какие должны быть у них роли? С одним сокетом приложение получает также и свои отправленные датаграммы, поэтому это не вариант.
>Язык допускает некоторые ошибки в шаблонах для того, чтобы увеличить сферу их применения. Сфера применения увеличилась настолько, что с помощью намеренного внесения этих ошибок можно влиять на код предсказуемым образом. Если в момент инстатциирования шаблона возникает ошибка, компилятор пропускает шаблон и переходит к следующему. Это называется SFINAE.
>Это называется INSANE.
I N S A N E
N
S
A
N
E
Ебнутый язык, поехавший.
>Накатал порнятнку про то, что такое сделать нельзя, а тут ты. Пришлось стереть.
Вот видишь. Ещё одна причина не предполагать, что мой собеседник не идиот.
Будто твой говнопост в этом коллективном бложике нужен, поэтому залезь под шконку, вахтер.
Чем это отличается от выбора перегрузки функции? Никто же не говорит, что компилятор пытается скомпилировать foo(string) когда ей передают int, обламывается, после чего переходит к следующей перегрузке foo(int). Обычный паттерн матчинг
Тем, что выбор перегрузки хотя бы не содержит стрёмного синтаксиса. В перегрузках свои приколы с ICS, но в шаблонах этот "выбор" сделан с помощью граматического элемента, который не для этого нуэен вообще-то.
Есть новая форма, в которую я передаю из основной формы данные через сигнал-слот.
Объект новой формы объявлен в .h основной формы
dataForm *mainData;
У меня всё работает, если я соединяю сигнал-слот уже после реального создания формы, т.е код выполняющийся по клику на кнопке
mainData = new dataForm();
QObject::connect(this, SIGNAL(sendData(std::vector <mydata>)), mainData, SLOT(receiveData(std::vector <mydata>)));
вполне нормален и рабоч.
Но он мне не нравится.
Я хочу, чтобы сигнал-слот соединялись заранее, чтобы не соединять их каждый раз при клике на кнопку. Т.е. у меня в основной форме есть функция, которая вызывается в начале работы программы
void MyTestApp::connectSlots() {
connect(ui.pushButton, SIGNAL(clicked()), SLOT(slotMessage()));
connect(ui.b_dataload, SIGNAL(clicked()), SLOT(loadinitseq()));
connect(ui.firstseed, SIGNAL(clicked()), SLOT(firstcharge()));
... etc
// QObject::connect(this, SIGNAL(sendData(std::vector <mydata>)), mainData, SLOT(receiveData(std::vector <mydata>)));
}
И если разкомментировать строчку соединения сигналослота, то не компилируется.
Моё желание вообще имеет смысл? Реализуемо ли оно? Если да, то куда копать?
И сразу вдогонку.
Имеет ли смысл создавать отдельный класс и объект DataStore, в котором хранить большую часть данных для работы с ними? Или данные лучше хранить в основной форме?
>то не компилируется.
>тут у миня не работает в чём проблема догадайтесь сами с помощью ваших оракулов
Ну я просто подумал что проблема очевидна - объект объявлен, но ещё не существует.
Если интересует точный текст то -
"Вызвано исключение: нарушение доступа для чтения."
"receiver-> было nullptr."
Уточню. Меня не интересует почему не работает - это мне понятно. Меня интересует - можно ли каким либо образом соединить сигнал существующего объекта со слотом ещё не существующего объекта (если класс уже существует и известен)
Тогда отвечаю.
>Моё желание вообще имеет смысл?
Нет, так как ты пытаешься отказаться от существования других объектов типа dataForm. Ты нарушаешь абстракцию.
>Реализуемо ли оно?
Да - сделай dataForm частью основной формы.
Ещё можешь в конструкторе dataForm соединять слоты/сигналы, а информацию о владельце брать из parent().
http://doc.qt.io/qt-5/qobject.html
Только если ты не к владельцу подсоединяешься, то ты какой-то пиздец делаешь, лапшу накручиваешь, и в таком случае тебе совершенно точно нужно эту твою сраную форму встроить, а не обосабливать.
Изучаю шаблонные шаблонные параметры. Как написать функцию, которая принимает произвольный контейнер и печатает его размер?
https://ideone.com/rhDv3Y
Спасибо! Ты - няша.
не представляю, где бы мог пригодится template<template<> >
Деревенский простолюдин, неспособный постичь красоту шаблонных конструкций ебанул обычную шаблонную функцию и рад. Слишком просто, нам ведь не сделать, нам заебаться надо
>>100564
https://ideone.com/dElGUO
Вариант с частичной специализацией, без шаблонных параметром, но с копипастом.
https://ideone.com/1uYIMt
template <int Head, typename IL>
struct ICons;
вместо
template <int Head, int... Tail>
struct ICons;
>нам ведь не сделать, нам заебаться надо
Я чего-то этот fizzbuzz вспомнил https://ideone.com/6QN2Ef
хуль ты делаешь то блядь расслабься самый простой код - самый рабочий
https://ideone.com/4ycTj2
Контейнеры - это не только шаблоны.
>>100609
Так, ладно я не буду спрашивать тебя о том, зачем тебе static const.
http://coliru.stacked-crooked.com/a/6b10a97723bd2ca5
Обрати внимание на то, что результат ICons не будет иметь тип IntList. Содержимое идентично, а вот тип другой.
Олсо, можно сделать так, чтобы и типы совпадали, но нужно заморочиться.
Не туда. (Wrong hole)
динахуй
Компилятор есть. Но при возникновении исключений проц слетает на адрес указанный в векторе прерываний.
Программа компилится при использовании try-catch, но в итоге они не оказывают никакого влияния. Что есть они, что нет, всегда уходим на вектор прерываний и даже не понятно, что за прерывание и в каком месте оно возникло.
Это процессор на архитектуре Riscv.
Я хочу работать на чистом c++, но когда я спросил у сообщества насчёт вот таких вещей, мне ответили: пиши их сам.
На самой машине никакой оси.
Компилятор gcc/g++ из тулзов riscv, собранные под линуксом.
Из параметров компилятора точно помню, что стоит без оптимизации и 64-разрядная архитектура.
>ладно я не буду спрашивать тебя о том, зачем тебе static const
А что не так со static const?
Вместо него следует использовать constexpr? Я попробовал - не компилируется.
{
double value = number;
if (stepen == 1)
{
}
if (stepen >= 2)
{
for (int i = 0; i < stepen; i++)
{
value = value * number;
}
}
if (stepen < 1)
{
for (int i = 0; i < -stepen; i++)
{
value = value / number;
}
}
return value;
}
Антоны, обоосыте, прошу, помогите. Почему эта функция возведения в степень дает охуеть какие огромные значения?
{
double value = number;
if (stepen == 1)
{
}
if (stepen >= 2)
{
for (int i = 0; i < stepen; i++)
{
value = value * number;
}
}
if (stepen < 1)
{
for (int i = 0; i < -stepen; i++)
{
value = value / number;
}
}
return value;
}
Антоны, обоосыте, прошу, помогите. Почему эта функция возведения в степень дает охуеть какие огромные значения?
Осиль уже пошаговую отладку.
Кому ты пиздишь? Ты сообщения компилятора читаешь хоть иногда?
http://coliru.stacked-crooked.com/a/5d2ba5fb29997899
>>100943
Дело так, значит: исключения C++ обеспечиваются с помощью exception model (SJLJ, SEH, DWARF для x86): соглашения о том, как хранится информация о раскрутке стека (вызове деструкторов в обратном порядке). Самому G++ эти исключения не нужны, и вполне может быть так, что для RISC-V модель исключений ещё не определили, и компилятор тебя об этом никак не предупредит.
Больше ничего сказать не могу, так как не в курсе, кроме того, что в исходниках этой твоей тулзы и исходниках поддержки других архитектур ты найдёшь ответы на любые вопросы.
>>100967
>double number, int stepen
Пользоваться только одним языком не дано?
Проверь свою программу по шагам для СТЕПЕН=2.
Как я могу определить шаблон, принимающий тип, и его специализацию, принимающую число?
https://ideone.com/IdWbDo
Никак. Ты не можешь иметь константу или тип на одном и том же месте, это невозможно. Ты можешь сделать шаблон с двумя параметрами - число и тип - и специализация будет иметь только параметр-число, например.
Если ты не заметил, твоё определение специализации противоречит твоему определению шаблона.
>template <>
>struct Foo<size_t i>
Что ты за хуйню написал? В фигруный скобки около Foo ты пишешь известные параметры.
Просто пиздец! Я становлюсь каким то омежным чуханом-пидарасом когда у доски стоят и спрашивают, сразу все забываю, тупею нахуй. Поэтому лучше когда дают задание на дом практическое, когда уютно себе кодишь.
Пиздец я хуево себя чувствую. Пикрелейтед пример хуеты на которую я не смог правильно ответить, вспомнил только когда вышел с собеса и поехал домой.
Было 2 структуры и указатели на них, он взял указатель с одного типа структуры и присвоил ему адрес другой структуры и спросил будет ли выведено то что он запросил через де-референсинг указателя (т.е поля оригинальной структуры)
Я стоял как мудак и не смог ответить. Ну нахуй такую жизнь, ебись все конем, забиваю на программирование
съеби в си тред, чухан
>На самой машине никакой оси.
>Компилятор gcc/g++ из тулзов riscv
Для поддержки исключений нужны действия со стороны компилятора и нужен некоторый рантайм. Для bare metal окружения рантайма может не быть.
Покажи ассемблерный листинг для функций, содержащих throw и try/catch.
Если вопрос о языке, а не о конкретной реализации, то ответ - такая операция не определена.
http://eel.is/c++draft/basic.lval#11
В сях скорее всего то же самое, там тоже strict aliasing rule есть.
Двачую этого.
Видел утилиту, но никак не могу вспомнить название.
procexp тебе всё покажет, только информацию о потоках нужно будет из проги вывести, у них же имён нет
Есть, но не помню как называется
пасибо!
Тогда вообще похуй, кто вообще использует оператор запятой, кроме моментов когда нужно выебнутся что ты знаешь ебанутую семантику?
Кому ты пиздишь? Скобки - это не оператор, и приоритет у них наивысший.
Запятая - это, с одной стороны, оператор оценки двух выражений и возврата значения второго, причём на месте запятой есть sequence point (в новом стандарте это по-другому назывется).
А с другой стороны его можно переорпределять для классов, и это пиздец.
Цикл с двумя счётчиками же?.. матрицы, вот это вот всё.
Видел пару моментов
while(cin >> str, str != "STOP") { / ... / }
В бусте где-то есть красивая конструкция
symbols<> logicalOperators = "AND", "OR", "NOT";
Что разворачивается в
logicalOperators.operator =("AND").operator ,("OR").operator ,("NOT");
#define MACRO(A) ( perform_heavy_work(A), std::cout<<"done", modify(A) )
>А в чем ты узрел траллинг?
В том, что усложнение вопроса вызывает понимание.
>Не должно, операция >> вовсе не бул возвращает.
Операция >> возвращает истрим, у которого есть оператор бул().
Так что если ты прям на 100% уверен в том, что СТОП у тебя есть - ну ок, пожалуйста.
http://coliru.stacked-crooked.com/a/665b52cac213ad5f
Что можно почитать о написании юнит-тестов на C++?
>3.1.2 Таблица замен – матрица из восьми строк и шестнадцати столбцов, в дальнейшем – Hij. Каждый элемент на пересечении строки i и столбца j занимает 4 бита.
Как можно определить элемент матрицы размером 4 бита? Просто использовать частично заполненный char?
Все равно эти штуки выравниваются в памяти.
long_array большой и имеет один и тот же размер, то есть resize обычно ничего не делает.
Вариант 1.
void foo(vector<double>& long_array) {
vector<double> temp(long_array.size());
...
}
Вариант 2.
void foo(vector<double>& long_array) {
static vector<double> temp;
temp.resize(long_array.size());
...
}
Хз, зачем я спрашивал, проверить же недолго.
Если кому интересно, то при размере long_array 10-100 тысяч и частом вызове функции, второй вариант примерно на 15-20% быстрее. Неплохая оптимизация так-то.
vector<bool> - гарантирована специализация с плотной упаковкой. "Элемент" определи самостоятельно. Ещё есть bitset, но у него размер фиксированный.
чувак, несмотря на весь мой профессиональный скепсис ко вкатывальщикам -- человеческий совет: не принимай близко к сердцу мнения любых других людей
class Hij {
char data[8]{};
const int pack(int i) { return (i % 2 ? 0 : 4); }
public:
Hij(std::initializer_list<int> il) { int i = 0; for (const auto& v : il) data[(i++) >> 1] |= v << pack(i); }
int operator[](int i) { return (data[i >> 1] & (0x0F << pack(i)) ) >> pack(i); };
};
int main() {
Hij hij{ 1,3,2,4,5,7,6,8,9,10,11,12,15,14,13,12 };
for(int i = 0; i < 16; i++)
std::cout << hij << std::endl;
}
Немного доработать, добавить прокси тип, ссылку на второе измерение и готово.
Что-то проиграл. Четыре бита занимают элементы таблицы замен в шифре российский ГОСТ. Мне для этого.
Нахуй ты тогда нам мозги пудришь?
>Все равно эти штуки выравниваются в памяти.
Храни в байтах и отсекай при вычислениях.
>>101884
У тебя проблема с размером типа? uint64_t есть. Мало? Пишешь свою реализацию длинной арифметики или берёшь
http://www.boost.org/doc/libs/1_65_1/libs/multiprecision/doc/html/index.html
Если совсем нуб, то сходи.. учат они добротно, за скобками ничего не оставляют.
Проблема личности в программировании,, что у каждого свое видение, как у дизайнеров, поэтому без собственного видения на кодинг не вкатиться.
Т. К.. Стандартов уже столько что их можно всю жизнь изучать и ни разу не написать программу.
>Т. К.. Стандартов уже столько что их можно всю жизнь изучать и ни разу не написать программу.
Ещё один неосилятор
Сделай развёрнутое утверждение, верность и полезность которого верифицируема хотя бы косвенно.
//Инициализация твоего числа Number
vector<int> Result;
for(int i=0;i<sqrt(Number) + 1; i++)
{
while(Number%i == 0)
{
Number /= i;
Result.push_back(i);
}
}
// В Result теперь лежат все простые делители числа в порядке возрастания
Помогите плиз, не хочу быть отчисленным после первой сессии
1) пусть первый встреченный отрицательный элемент и есть искомый элемент, а первый встреченный положительный элемент и есть искомый элемент
2) с каждым новым элементом выполнить проверки: если он отрицательный и при этом он... и т.д.
Алсо, добавь пустые строки вокруг операторов условий и циклов, читать невозможно же.
> type '__float128' is not yet implemented
https://stackoverflow.com/questions/13525774/clang-and-float128-bug-error
Так ты вроде почти все сделал. Просто нарисуй числовую ось и найдешь ошибку. Ты же не модули чисел сравниваешь. -2 реально меньше, чем -1.
Если ты не можешь решить такую задачу после первого курса, зачем вообще в спутники и погромисты пошел?
Сказано же было в одномерном целочисленном массиве, а это именно int*, std::array по факту это уже структура.
Где ты троллинг увидел? Единственное что рандомизатор выглядит монструозно.
Однако, аргумент
Я все время как-то теряюсь под линухом, то одно то другое
прогер 200к в секунду треды в бэ, я думаю
использую вим только как редактор, остальное в консоли
А что там, CLion не работает?
А всё остальное он инклудит?
> Так вот, как сделать так, чтобы из чисел, например, {-1, -2, -3, -4} максимальный был -1 а не -4
>Помогите плиз, не хочу быть отчисленным после первой сессии
блядь не помогайте этому дауну
array - это массив в переводе с английского. Когда говорят "массив" в разговоре о С++ имеют ввиду либо вектор, либо аррай, а обычные массивы называют C-массивы.
>>103052
Мне кутэкректор по душе, можно убрать все панельки, места на экране съедает минимум, нативный кросплатформенный код, компилятор цепляет чуть ли не любой (особенно на линуксах).
массив создается через устаревший new вместо православного make_unique. Незачет
Стандарты нативной сишечки вдвое короче.
В плюсах есть какие-то приятные улучшения, кроме шаблонов и обработки ошибок?
Посчитай сколько в строке опрежелкнных символов, создай новую на столько байт больше, и копируй туда в цикле, добавляя по ходу.
>В плюсах есть какие-то приятные улучшения, кроме шаблонов и обработки ошибок?
Лямбды ещё, люблю лямбды.
Ты так говоришь "кроме шаблонов", как будто это мало (это если ты про STL).
Ещё есть range for.
Ну и самое главное - RAII. Можно писать код вообще без утечек памяти, используя несколько простых правил.
Кстати, вот чего мне хотелось бы, так это шаблонных функций, которые принимают контейнер, а не пару итераторов. Надоело уже писать бегины и энды там, где я весь контейнер передаю, выглядит тупо.
>>103785
>Есть строка text[]
Это не строка. Строка - это string text.
>Как это реализовать?
Если тебя по ладоням бьют за STL и плюсы - писать с помощью memcpy в память, выделенную malloc-ом, лол. Препода тормоши, он деньги получает за это.
Олсо, structured bindings и поддержка параллельных алгоритмов (ExecutionPolicy).
А это здесь причем? Массив не перестает называться массивом, хоть в каком хаскеле его пиши.
Погуглил, говорят это оно индексирует какие-то файлы то ли справки, то ли ещё какого мусора и через некоторое время должно пройти. Где-то часов через семь-восемь это в самом деле заканчивается и процессор больше не нагружается. Только после перезапуска он заново начинает.
Можно это как-то отключить? С моей стороны оно просто так жгёт процессор, а работа самой среды не изменяется вообще никак, ни в процессе, ни после завершения.
Видимо он имеет в виду std::string
Ему требуется openSSL. Ок, скачал openssl.v120.dyn-rt.static через Nuget, поставил.
Но всё равно проект не собирается, пикрилейтед. MVS 2015. Как фиксить?
inb4: Определи выражение константой
keyLength и ivLengtn – это не константные целочисленные переменные, ими нельзя инициализировать размерность статические массивов (по крайней мере не во всех компиляторах). Используй unsigned char key = new unsigned char[keyLength]
Звездочку проебал, ну ты понял
Название треда прочитал? Прочитай ещё раз.
>>103913
Повторяю для долбоёбов: это сипласплас-тред и в этом треде массивом называется НЕ ТОЛЬКО указатель на тип. Если у тебя массив - это только указатель на тип, то вали из треда.
>>103994
1) Напиши багрепорт.
2) После того, как написал багрепорт, удали все файлы справки, там в настройках есть список.
>>104082
Поздравляю, ты стал жертвой похуизма микрософта по отношению к стандарту языка. Работало в 2012 - перестало работать в 2015. Замени на оператор new и допиши в конце скопа delete.
Повторяю для дебилов: это сипласплас-тред и в этом треде массивом называется В ТОМ ЧИСЛЕ плейн массив. В отличии от того утверждения, где С-массив это не массив.
>Поздравляю, ты стал жертвой похуизма микрософта по отношению к стандарту языка.
Поздравляю, это не С-тред, по стандарту у майкрософта все, VLA - не стандарт.
Это уже другое. Ты же качал OpenSSL, а либы под MSVS бывают, грубо говоря, 4-х видов: MT (статическая), MD (dll), MTd (статическая дебаг) и MDd (dll debug).
Данке. Поставил через нугет динамическую openSSL и по крайней мере теперь компилируется.
Что ты имеешь против самой популярной среды разработки, которую поддерживает одна из самых технологичных компаний мира?
Против XCode ничего против не имею
Мне неудобно ей пользоваться, у меня на ней иногда не компилируются простейшие программы со сторонними библиотеками, какой-то текстовый редактор с небольшими дополнениями занимает несколько гигабайт места, слишком сильно вшивается в систему, воспоминание о vs 2008 - код на 151 строчку компилировался 2.5 минут после каждой правки и ещё всякие такие мелкие неприятности.
Субъективщина сплошная. Это примерно как сравнивать фотошоп и sai. Может быть в первом и больше возможностей, но вторым намного проще, приятнее и удобнее пользоваться в рамках того, что он умеет.
што
А вне твоего НИИ мир, которому поебать на +5% перформанса в арифметике (кроме других НИИ, лол), и узкие места можно поправить руками, а не супердорогущим пропиетарным закрытым компилятором, в который ещё и новые стандарты неспешно завозят.
А, всё. Чекнул шапку
Нет.
Как сделать переносимый-портабл проект? Типа, папку с файлами перенёс куда-угодно и всё работает.
А то он создаёт файл CMakeLists.txt.user с некоторыми настройками и прописывает там абсолютные пути к директориям. При переносе пишет Failed to activate protocol version: "CMAKE_HOME_DIRECTORY" is set but incompatible with configured source directory value.
Там всего в нескольких местах подменить, конечно, и в общем-то можно костыль сделать для этого, но это как-то совсем некрасиво.
Удали этот файл, будет ок. Я использую Qmake, удаляю файл .pro.user, эффект тот же. Он генерируется Креактором во время конфигурации проекта.
Он его каждый раз создаёт же. Причём если написать относительные пути - всё-равно замещает на абсолютные. Может быть есть где какой флаг это отключающий.
К тому же, там некоторые настройки запуска по мелочи сбиваются. Проще заменить пути в файле, чем отыскивать эту фигню в настройках и менюшках потом.
Хуй знает тогда. Топорный вариант - найти в файлах проекта и исправить на относительные. Правильный вариант: открыть мануал Креактора и прочитать.
То есть, в 1.65 буст нихуя не умеет использовать boost::iostreams вместо стандартных, есть варианты, кроме использования std::sstream (он же deprecated :( )
>std::sstream (он же deprecated
Что ещё за std::sstream? sstream это хедер.
Давно он deprecated?
Пиздец.
Есть такая функция перекодировки: https://ideone.com/iepDlP
Как она работает, если аргумент не найден в хэш-мапе? Метод find получает несуществующий символ и возвращает end(). Попытка обращения к end() - неопределенное поведение. Почему код все равно работает?
Тебе показалось. У меня падает со std::alloc. Проверь, может у тебя UB форматирует винчестер в фоне.
/std::thread
А не на ангельском? Я, конечно, могу, но это потребует больших усилий.
Я нашел книжку в шапке, но там 600 страниц.
Мудила, там определения функций и конструктора достаточно посмотреть что бы понять как оно работает, это тебе QThread с наследованиям или переопределениями.
блять, ошибка strstream
https://ideone.com/FBaBG9
Более знающие поправят, но ты создаешь внутри функции временный объект oldValuе и возвращаешь ссылку на него, а по выходу из функции память освобождается и возвращенная ссылка указывает на мусор.
Неа, он копию возвращает.
And: identifier not found
Замени на &&
Во-вторых, ну ок, ты проверяешь, и если Y >0 продолжаешь гнать его в плюс. Надо же минус.
Потом ты перевод строки после трех символов не выводишь.
Но так то полный треш, это не починить.
>Задай изолированный вопрос, на который можно ответить, не пытаясь сделать лабу за тебя
Извини, если сократить, то почему инкремент/декремент выпиливает объект, хотя должен просто его увеличить/уменьшить его?
oldValuе - копия через конструктор копирования, в постфиксных операторах же должно возвращаться старое значение. Выходит так, что перегрузка вроде работает, т.к. первая строка создает копию как и должна, но сам объект, для которого был вызван инкремент - удаляется, хотя просто должен был увеличиться.
Всё работает, но какого-то хуя не считывается самое первое слово. В чём проблема?
Ответ: эти строчки кода ничего не "выпиливают" (лолштоблядь). Ошибка находится в другом месте. Если бы ты хотя бы код запостил, я бы ещё порылся.
>>105441
На кой ляд тебе char[64] вместо std::string? Олсо, зря ты на eof проверяешь - он возникакет только тогда, когда считано на один символ больше, чем есть в потоке.
http://coliru.stacked-crooked.com/a/1f6b8cb5f2efd7d3
Вот так правильно.
>но какого-то хуя не считывается самое первое слово.
Слова-то, блядь, у тебя как записаны?
>Ответ: эти строчки кода ничего не "выпиливают" (лолштоблядь). Ошибка находится в другом месте. Если бы ты хотя бы код запостил, я бы ещё порылся.
Просто именно после перегруженных операторов объект "перестает существовать". Я пробовал делать инкрементацию просто как обычную функцию, и она работала, но при попытке сделать так же в операторе ситуация повторялась.
http://coliru.stacked-crooked.com/a/6461ce653362870b
Чудес не бывает. Ходи в отладчике, ставь брейкпойнты в конструкторах-деструкторах.
Использую tesseract, на распознавание в него подаю изображение "Pixs" загруженное leptonica.
>tesseract.SetImage(Pixs);
leptonica принимает (FILE ) ( тобишь файл на диске)
Этот файл за мгновение до этого я загружаю и сохраняю Curl-ом:
fp;>FILE
>fp = fopen(outfilename,"wb");
>curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
Есть способ выкинуть этап сохранения/загрузки с диска?
Что-то типа: Curl-ом писать в "виртуальный файл" (FILE *), а потом этот виртуальный файл подсовывать leptonica.
Прога под Windows если что.
Есть вариант конечно создавать небольшой RAM диск и писать/читать оттуда, но это сильно бьет по переносимости проги.
Олсо, КОНЕЧНО ЖЕ, ссылки и рвалью-ссылки, благодаря которым стало более добно писать в функиональном стиле.
>>105618
ааааааазаааааааъхххааааъъъъъъазаззхзааааааааааа ёбаааа
>Vector* copy = ++vec;
Попробуй предположить, что делает эта строчка? Пару раз не угадаешь - расскажу.>>105665
>Есть способ выкинуть этап сохранения/загрузки с диска?
>leptonica принимает (FILE
Нет. Как вариант - поищи что-нибудь в Бусте, мемори маппед файл какой-нибудь с ленивым сливом буфера записи.
>Попробуй предположить, что делает эта строчка?
Создает указатель на инкрементированный объект класса?
Vec - указатель на объект, т.е. в copy я пытаюсь создать указатель на указатель, который я инкрементирую без разыменования, т.е. вместо того, чтобы увеличить значения по адресу, увеличиваю сам адрес?
Бинго! Ну а дальше сам, по шагам: продумай, что нделает каждый символ.
Сразу говорю: для того, чтобы присвоить вектор вектору, тебе не хватает конструктора копирования (дефолтный есть, но при определении любых конструкторов он удаляется).
Точнее, ты не указатель на указатель создаёшь, ты только инкрементируешь указатель и говоришь что это указатель новый вектор. Если тебе прям до жопы нужно именно с указателями трахаться, то делается это вот так:
http://coliru.stacked-crooked.com/a/722b1939961b68de
Но опять же, тебе не хватает конструктора копирования как минимум, как бы ты не изворачивался.
Сделать указатель на указатель тебе не даст статическая типизация.
Хочу ебануть алгоритм Дейкстры, но нужна матрица с весом рёбер графа. Как её получить из "плана местности" я не ебу. Хелп, аноны.
бтв, stl юзать низя
Ну приоритетную очередь я написал, а дальше stl-то зачем? Вся трабла тут
> Хочу ебануть алгоритм Дейкстры, но нужна матрица с весом рёбер графа. Как её получить из "плана местности" я не ебу. Хелп, аноны.
Сделай структуру дерева, переведи матрицу в дерево и ебани по ней рекурсивно алгоритм Дейкстры
Нужно приоритетной очередью. Поэтому, собственно, и нужна матрица веса рёбер
Что такое матрица весов рёбер графа? Что такое вес ребра графа? Если ты не можешь ответить на эти вопросы - иди нахуй. Если ты можешь ответить на этив вопросы, то дальше ты и сам сможешь.
Там Вводный курс, а необходим базовый.
Делаю все по гайду в 8.5.8, в параметры функций - Token_stream& ts a в main строку - Token_stream ts;
Все работает и я был очень рад что избавился от глобального, да только с istream& этот способ не работает! конечно я не дебил и начал искать где только можно. Я сразу увидел что ничего нет и это шаблон класса и мне это ничего не сказало потому что я только вкатился. Так как это сделать ядрён батон? объясните пожалуйста ньюфагу
class Token_stream {
public:
Token_stream();
void foo2(istream& is);
void foo1(Token_stream& ts);
};
void Token_stream::foo2(istream& is)
{
}
void foo1(Token_stream& ts)
{
}
int main(){
Token_stream ts;
foo1(ts);//работает
istream is;
foo(is);//не работает
}
в 8.5.8 на примере Token_stream это работает а по заданию требует istream, я хрен знает как это сделать
если еще короче, я не понимаю как просто передать istream в параметр функции
istream is;
foo(is);//не работает
>не работает
Ты ему зарплату что ли платишь, уёбок? Почему из вас, пидорасов, надо клешнями всю информацию вытягивать? Если я тебе покажу код и скажу "не работает", тебя это устроит?
Ясен хуй, потянет. Я не знаю, какой там в макоси планировщик - быть может, там такая же жопа, как в винде, когда одна из программ начинает слишком много вычислять, и приоритет активного приложения не повышается. Если это не так, меня эти 1,2/3 ГГц не смущают никак - ну подождёшь ты немного в паре мест, ну и хуй с ним.
Прямо сейчас сижу с селероном x86 1,5 ГГц - вполне терпимо. Открыть пидиэфку и текстмейкер и несколько вкладок (штуки четыре) в браузере я точно могу. Хорошее видео не декодируется, максимум - какое-нибудь 102460030.
>1024х600х30
Проигрыватель плохой или шибко сложный кодек. Вот такое чудо проигрывает на старом the kmp 1920х1080 в mp4. Там можно в настройках видеодрайвера включить разрешение экрана вплоть до 2560х..., так что когда мышку к краю экрана подводишь - отображаемая область передвигается.
Едва нашёл флешку, которую тот ноутбук прочитал, лол, чтобы точно убедится. Там проблема с usb портами (только один из трёх работает) и аккумулятором (10+ лет из которых шесть лет я его ежедневно использовал) - ни один внешний хард не раскручивается, всем питания мало.
У меня нет видео в таком разрешении, потому не долго думая я скачал что-то с ютуба. (Можешь напрямую с меня цепануть -
http://95.27.236.250/45/ )
https://www.youtube.com/watch?v=MAUsbFti6fo
1280х720х30 (3.2Мб/с) - без каких-либо лагов, загрузка цп прыгает 40-60.
1280х720х60 (3.6Мб/с) - пару раз за минуту зафризился на полсекунды, загрузка цп прыгает около сотни. Вот тут я сейчас вообще офигел увидев такое плавное воспроизведение. Прям надо брать камеру и записывать, как эта штука из каменного века выдаёт такую плавную картинку.
1920х1080х60 (5.6Мб/с) - со скоростью вполовину меньше нормальной показывает, загрузка цп стабильная сотка.
https://www.youtube.com/watch?v=Ij6AFF8lbOs
1920х1072х24 (3.1Мб/с) - без каких-либо лагов, прыгает около сотни.
Возможно ещё хард подводит (он совсем громко трещит что-то), просто не успевает высокий битрейт считывать - его я тоже ни разу не менял и из-за баловства с магнитом на нём громадная царапина на 10ГБ, при обращении к которым система падает с бсодом.
Цель - останавливать новый поток при помощи отправки данных из основного потока.
Всё сделал правильно? Что-то добавить-убрать?
>Едва нашёл флешку, которую тот ноутбук прочитал, лол, чтобы точно убедится. Там проблема с usb портами (только один из трёх работает) и аккумулятором (10+ лет из которых шесть лет я его ежедневно использовал) - ни один внешний хард не раскручивается, всем питания мало.
Вычислим по IP.
Ну ты можешь не заниматься кроссплатформенностью, а писать под конкретную ОС. Но а вообще всё зависит от скилла.
Спасибо большое. Бэхэтле бул.
Нет, если это не boost или Qt (если вы понимаете о чем я)
Вопрос по разработке через тестирование. Если есть класс в файлах .h и .cpp, в каких файлах писать для него тесты? Где вы размещаете свои тесты?
Старпер, плес.
В отдельных файлах.
Что я делаю не так? Как исправить?
Не тот типа библиотеки подключаешь или наебланил в настройках. Проще поставить линукс.
Ну вот собираешь не тот тип debug/release static/dynamic.
поясняю. нужно. для овердохуя чего. если не физический, то виртуальный абсолютли
Это у тех, кто не пишет тесты, овердохуя свободного времени, чтобы потом тратить 10х время на ловлю багов.
лол, за 10 лет коддинга ни разу не искал баг более 10 минут. сука, рили тесты для рукожопов
Видимо у тебя одни хеллоу ворлды. Алсо не искал != что их у тебя нет.
лез, даже на багтрекер писал. фиксили. но это блять никак к тестам не относится. это уже рукожопость разработчиков фреймворка
лез, даже на багтрекер писал. фиксили. но это блять никак к тестам не относится. это уже рукожопость разработчиков фреймворка
При том.
Я бы хранил "рыбу" в функции "по клику на кнопку "Сформировать"" куда динамически подтягивал параметры из ui. Но я не специалист.
В очередной раз пытаюсь вкатиться в Qt ради GUI. В этот раз поставил на вижак плагин, и столкнулся с той же проблемой, что и в прошлый раз - при компиляции в целевой папке есть только .exe файл, никаких Qt'шных либ там нет. Вопрос - как можно настроить компиляцию, чтобы я на выходе получал папку со всеми необходимыми бинарниками, вот прям чтобы взял и запустил на другом ПК? Или в опенсорсной версии Qt хуй мне на рыло с такими запросами и запускать только локально из IDE? В прошлый раз единственное решение, которое я нашел - добавлять ВСЕ Qt'шные либы в папку с .exe и запускать .exe, убирая либы по одной, чтобы узнать, какие нужны. Но это же блять не серьезно. Есть какие нибудь решения?
Запускаешь бинаргик на чистой виртуальной машине и добавляешь по одной запрашиваемве библиотеки. По-другому никак.
Хуя до чего техника дошла.
Сейчас компиляторы умные и сами вынесут результат метода из цикла если в нем вызывались только константные методы, ну так то да такую хуйню писать это плохой тон.
> Зачем каждый раз вызывать метод, если можно один раз его узнать?
Затем, чтобы код был читаем. Ты ещё спросил "зачем цин>> каждый раз вызывать" (вызов которого на порядок затратнее). Сайз - это метод, который целиком определён в хедере, так что компилятор будет инлайнить его, если ты не запретишь, так что от вызова метода объекта, сохранённого на стеке, вообще нихуя не остаётся - ни передачи указателя, ни джампа, нихуя, так как функция size() - это только обращение к переменной. Уберёшь флаг оптимизации - вызов появляется.
https://godbolt.org/g/Co8q7N
https://godbolt.org/g/JVCPNd
Что там за нормальные языки у тебя были, лол?
>Что там за нормальные языки у тебя были, лол?
Те, в которых не надо писать лишние скобочки рядом с константами или свойствами?
Анон, есть такой класс для расчета зарплаты сотрудника: https://ideone.com/LLLzKF
Не лучше ли следовать принципу единой ответственности и выделить весь код, отвечающие за расчет зарплаты, в отдельный класс Salary? Для разных типов сотрудников зарплата рассчитывается по-разному, но формулы допускают обобщение.
Я могу получить адрес этого указателя: cout << &a;
Но что за число я получаю когда ввожу cout << a? Без звездчоки. Там тоже какое-то число шестнадцатиричное, но куда оно указывает?
Прочёл как Степан.
Сам же написал уже всё.
a - указатель, как ты сам и написал. Он указывает на первый из твоих десяти int. &a - адрес указателя а, то есть оно указывает на а.
&a -> a -> int[10]
Реально в памяти существуют только а - явная переменная типа int* и int[10] - выделенная при помощи new память.
&a - адрес переменной a в памятьи
a - адрес, на который указывает указатель a, то есть адрес массива int[10] в куче памяти.
Мне кажется, логичнее оставить в классе, только сделать функцию виртуальной, чтобы можно было для каждого дочернего класса вызывать свою версию getBaseRate();
>getBaseRate();
Для всех одинаковая. Различие в том, что у Manager и Sales есть надбавка за подчиненных.
спасибо анон
>Мне кажется, логичнее оставить в классе
Ну хорошо. А как пишут юнит-тесты для приватных методов?
Унаследуйся от класса и импортируй все методы в публичную область видимости с использованием using, или сделай объект доступа к методам касса через friend или #define private public лол
Билять анон спасибо! Ты вернул мне мотивацию изучать Qt.
Лень расписывать, ну короч считай так: объект-бог это всегда плохо, потому что у него много связей с остальными объедками, и если что-то поменяется, придется разгребать весь этот фарш, вместо четкой иерархии объектов. Второй момент это скрытое состояние, которое наверняка где-то неявно будет меняться при вызовах. А если хранить состояние в статических переменных, можно нарваться на то, что они могут инициализироваться в произвольном порядке.
>Почему статические методы считаются злом?
Потому что есть свободные функции.
> Как писать без них?
Замени на свободные функции.
Ты просто ООП-сектант. А free functions — это best practices.
Читай, быдло http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197
Нахуя вообще нужны классы, когда есть неймспейсы? Ведь класс это просто неймспейс+тип.
Наверни говнеца лучше.
Какими ещё свойствами? Ты обдолбался?
>лишние скобочки рядом с константами
штоблядь
>>107068
> (тогда и соответствующий деструктор нужен)
shared_ptr
>если в DEGREE передавать переменную, то оно не должно так просто заработать.
Прочитай определение шаблона.
>>107129
Хочу пять одинаковых неймспессов в рантайме. Надо создать пять процессов?
>Какими ещё свойствами?
Такими, какими было бы поле size в нормальном языке.
>писать на каждый() чих() скобочки()
>читаемо
>shared_ptr
Почитал про него. Нормальная тема, спасибо.
>Прочитай определение шаблона
Да, уже успел глянуть. Знатно опозорился. Решил итого не трахаться с динамичсеской памятью, всё равно всего лишь курсач.
УСТРОИЛСЯ В НОВУЮ КОНТОРУ
@
КУЧА ЛЕГАСИ КРУГОМ
@
C++11 - НЕ, НЕ СЛЫШАЛИ
@
СТИЛЬ НЕ ЕДИНООБРАЗНЫЙ, КУЧА ПЛАТФОРМЕННОГО КОДА ТОРЧИТ НАРУЖУ
@
ВЕДУЩИЙ ПРОГРАММИСТ ГОВНОКОДЕР
@
не знает про rvalue, auto, array
Кстати, где можно нажраться всякой теорией алгоритмов кроме дорогих книг Кнута?
Мне тут на днях сказали, что c++ это теперь low-level язык, так как есть божественный Ruby, python!
@
ПИШЕШЬ КОД НА ++
@
ПЫТАЕШЬСЯ ДОКАЗАТЬ ЧТО ОН БЕЗОПАСНЕЕ
@
ГОВОРЯТ ЧТО НИХУЯ, ТАК КАК СТРОЧЕК БОЛЬШЕ!
Я по седжвику изучал. Объявняет сжато и без лишней патематики. Кнута трудно читать, как по мне.
хз, там особо не надо зачитываться, лучше с собой тетрадку иметь, чтобы представлять как это "в пространстве". Если бы без тетрадки сидел, ебанулся бы думать, как patricia дерево работает.А так с PDF читал.
Вкратце, чтобы не трахаться с указателями, когда в этом нет нужды. В анлийской википедии неплохо описаны отличия ссылок от указателей.
@
СТАТИЧЕСКАЯ ТИПИЗАЦИЯ? У МЕНЯ ИЗЗА НЕЁ НЕ КОПМИЛИЯЕТ, ЗАЧЕМ ОНА?
>>107478
С точки зрения приципа работы - отличий от указателя нет.
С точки зрения C++: передать указатель на временное значение нельзя, а передать временное значение по конст-ссылке или рвалью-ссылке можно. Сдвигать ссылку нельзя, а указатель можно.
То есть, ссылки в C++ нужны для улучшения читаемости кода (меньше стрелок, звёзд и амперсандов), расширения сферы применения функций, соблюдения безопасности кода (но отхуячить ногу повисшей ссылкой ты всё равно сможешь, так что тут бабка надвое сказала. Пока перегрузку "оператор." не завезли, умных ссылок не будет, а без них и безопасности нормальной не будет).
>>107484
лиспоблядь закукарекала
Без кого?
Без ссылок - да, можно пользоваться указателями, проебываться, страдать, но программировать
Без указателей - да, можно не страдать, меньше проебываться и программировать
Без ссылок и указателей - да, это будет неоптимально и рано или поздно ты упрешься в ограничения размера стека, но это вроде как настроить можно
на другом языке
на другом языке
например, чтобы не засирать память.
Ну, ты в любом случае со временем поймёшь.
И например есть такая весёлая тема, что ты делаешь указатель на переменную в функции, ретурнишь, а оно возвращает хуй, так как функция умерла
Конечно можно, только копирований будет дохуя (инбифо в моих задачах не будет) и производительность просядет. Чтобы функциональный код быстро работал (а код без указателей и ссылок - это чаще всего код в функциональном стиле), компиляторы и интерпретаторы функциональных языков используют кучу трюков, которые эквивалентны работе с указателями в плюсах, но разница всё равно есть. Даже в плюсах есть трюки для устранения лишнего копирования.
Представь себе, что ты рисуешь кнопку с картинкой, что быстрее при вызове нескольких функций, копировать всю 10мегабайтную картинку или передавать только один указатель на память?
пользователь вводит массив чисел а дальше с ними происходят некие действия и затем выводится массив. Только массив для этого должен быть динамический. Я решил не спрашивать у пользователя какой массив он хочет, а решил увеличивать массив путём копирования во 2 удаления, 1 созданием, но уже увеличенным в объёме, копирования в 1 , удалением 2 что бы в следующий раз если пользователь захочет увеличить объём, то
опять создатся 2 массив увеличинный и произойдёт всё что я описал выше. Но там возникла проблемма массивы не копировались друг в друга. Я решил написать программу дома и здесь тоже возникла проблема , но уже другая.Выдаёт вызвано исключение: нарушение доступа для записи.
arr_one было 0x1118239. Вот я пришёл сюда за помощью. Подскажите пожалуйста что я не так сделал.
Вот код:
https://ideone.com/0Y8IU1
Дождись когда будете на лекциях проходить стандартную библиотеку C++ - STL. Там уже есть готовые динамические массивы vector. Расширение массива на один элемент решается в одну строчку:
// пустой массив целых чисел
vector<int> vv; // сейчас размер 0
// добавить элемент
vv.push_back(22); // сейчас размер 1
Плоха она тем, что происходит ОЧЕНЬ много бессмысленных выделений-освобождений памяти и операций копирования. А если по твоему коду - то меня очень напрягло то, что в одной функции у тебя ДВА раза объявляется переменная с одним и тем же именем int *arr_one. Если ты удалил область памяти, на которую указывал arr_one, то это не значит что сам указатель пропал.
Off by 1 ошибка.
Ну прогони в голове у себя одну итерацию цикла. Индексы в массивах идут с нуля, выделаешь память ты индексом. new int[1] это ровно 1 инт
Ну и ты 2 раза копируешь зачем-то, можно же один раз копировать.
0. у тебя есть массив
1. выделяешь память под новый массив (с новым размером)
2. копируешь из старого массива в новый и освобождаешь память старого массива
3. заменяешь указатель на старый массив указателем на новый.
Кроме того, на практике это реализуется хитрее: когда структура данных растёт, но новый массив можно делать размером не размер_старого + 1, а размер_старого + 1/2 * размер_старого, например (увеличивать размер только когда в старом место кончилось). Это так реализовано везде и каждый раз не нужно выделять память и копировать (обе операции сравнительно медленны)
Если хочешь делать динамической, быстро расширяемое хранилище то делай что-то типа односвязного списка.
https://ideone.com/OGrqrF
Анон, как правильно определять константы типа double, используемые в классе?
ну так я копирую во временное хранилеще. Что бы увеличить старое , сохранить в него а затем удалить временное хранилеще. Не знаю как тебе, но мне эта идея кажется очень логичной.
Тащемта ничего сложного нет. Просто объявляешь и определяешь.
Лол, а походу я угадал пальцем в небо
https://forum.qt.io/topic/66109/missing-kits
И анон, пользуйся инглишем хотя бы для поиска сообщений об ошипках, первая ссылка же про qt missing kits
Не понял. Мне нужно пути к проектам сделать без пробелов и спецсимволов? Это не помогло. К тому же, он написал что у него работает Qt Widget, а у меня на пике именно он. Что тогда?
Наоборот же, там написано ставить студию и подключать компилер к твоей кьюти.
Собственно, даже если при скачивании дистрибутива с креактором и запуска креактора из того бистрибутива такая проблема, то нужно сделать следующее:
- сделать то, что написано над пустым списком
- написать багрепорт
>>108075
>Мне нужно пути к проектам сделать без пробелов и спецсимволов?
И пути к файлам КуТэ тоже.
> ставить студию и подключать компилер к твоей кьюти
так, а зачем пик с креатора? он к либам никакого отношения не имеет
анон же хочет компилить из креатора конпелаятором мс?
Кому ты пиздишь? От студии только компилятор нужен, взять его можно либо из студии, либо из SDK соотв. версии.
Это ровно то что я и написал.
> - сделать то, что написано над пустым списком
Сделал уже давно. С начала там был желтый треугольник с восклицательным знаком, потом я нащелкал что его нет. Ничего не изменилось.
> - написать багрепорт
Какой багрепорт? Я же говорю, что качал разные версии, и древние, и современные, все одно и тоже.
> И пути к файлам КуТэ тоже.
Да вроде там все без пробелов. D:\Programs\Qt.
Пиздец какой-то, короче. Какие альтернативы для Qt? Такие, чтобы код был мой, а не высираемый автоматически.
Не знаю о чем ты, я кинул ссыль на тред, там английским по белому написано:
In a nutshell, a "kit" is a combination of one compiler + one version of Qt that are compatible. Note that a "kit" is a concept specific to Qt Creator.
>Я потому и скачал Кьют, что это параша ебаная. Создает все за тебя непонятно каким образом, чуть что не так сделал - сразу все наебнулось без возможности восстановления, а тут все пишется вручную, весь код твой родной, а не высратый, блядь.
>
Ты настолько необучаемый, что не можешь создать пустой проект?
Переходи на линукс, сможешь выбрать гцц. Иначе ебись со студией или мингв.
>Какой багрепорт?
В компанию Qt, блядь. Не должно быть так, что ты скачал дистрибутив, поставил, запустил, и не можешь программу собрать, это баг.
Я только одно могу предположить: ты скачал дистрибутив для MinGW.
>>108089
А ты попробуй сам создать пустой проект, придурок, когда от тебя требуют выбрать кит и отключают кнопку "далее".
>Я только одно могу предположить: ты скачал дистрибутив для MinGW.
Но даже в этом случае у тебя будет хотя бы кит для мингв в списке, если ты его не удалил.
Ну дык так тоже можно и должно работать, сам так делал. Если не работает - вперёд в Жиру Куты.
Какие именно переменные-то? Зачем?
pragma pack для структур + свой менеджер памяти ничего не выравнивающий, только по перформансу ты обосрёшься.
Ты походу даже стандартные пути заголовков сбил, вася.
Совету изучить CMake и делать проект для спермостудии через него (куда проще и не будешь привязываться к одной платформе). Всё равно его используют все, и тебе так или иначе придётся.
Проект новый создать, очевидно. И ещё очевидно что делать его стоит сразу на cmake как советовал антоша выше.
> В компанию Qt, блядь. Не должно быть так, что ты скачал дистрибутив, поставил, запустил, и не можешь программу собрать, это баг.
Я же говорю, я качал разные версии, ты хочешь сказать это именно на моей пеке оно?
> Я только одно могу предположить: ты скачал дистрибутив для MinGW.
Да я блядж много чего качал, и с разными компонентами(с начала дефолтная папка tools, потом еще выбирал дополнительно верхние папки). А с чего вы вообще взяли, что я туда компилятор из студии присобачить хочу? Моя цель - наоборот от нее отгородиться. Я когда древнюю версию Qt скачивал, даже отдельно компилятор mingw туда скачал.
Есть вопрос ребята. Всегда ли 'a' = 'A', и всегда ли 'a' < 'b'?
Открой таблицу символов ASCII. Тип char в Си это просто интерпретация численного кода в букву или символ в более общем случае.
Поэтому 'a' непросто не равно 'A', а никогда не равно. Потому что 'а' имеет код 97, в то время как 'A' имеет код 65.
Твой вопрос сводится к вопросу, пацаны а 65 равно 97 ?
Касательно 'a' < 'b', тоже самое. Ты можешь пойти дальше и задать вопрос, а почему, допустим "a" < "aa", ответ: лексикографическое сравнение. Сравнение происходит в соответствии с цифровой комбинацией символов и понятно, что условное 97 будет меньше чем комбинация двух а.
другой анон
Потому что 'A' – это 0x41, а 'a' – 0x61 поэтому 'A' =/= 'a'.
'b' – это 0x62, 0x61 < 0x62 всегда выполняется.
>>108935
Присоединяюсь к вопросу, как происходит сравнение ?
если что то вида :
char x1 = 'a';
char x2 = 'A';
if(x1 = x2)
конечно выдаст true
Что происходит:
ты присваиваешь х1 значение х2, потом х2 отправляется в оператор if , где преобраз. к типу bool, если х2 не равно 0, то ответ будет true.
if (x1 == x2) то все будет в порядке, выдаст false как и должно быть.
Стоит почитать/ освежить в памяти главу про условные операторы. Посмотри, что понравится в книгах из шапки.
С++ и Си не те языки, которые можно выучить шароебясь по форумам и задавая вопросы.
Спутал тебя с кем-то из треда.
>>108872
>Всегда ли 'a' == 'A'
Никогда. Потому что два разных символа, блядь. Если ты смог сохранить два символа в кодировке, коотрую компилятор поддерживает, они не могут юыть равны.
>и всегда ли 'a' < 'b'?
Скорее всего ты не найдёшь ни одной платформы, на которой это было бы не так, но C++ такое соответствие не задаёт.
>>109010
>Что он гарантирует — что '0', '1', ..., '9' идут подря
Ссылку дашь?
new с размещением
аналог malloc
Обычный объект или обычные переменные на неком стеке размещаются. Во-первых, размер стека ограничен, и он не сильно шибко большой, по умолчанию. Во-вторых, они там сами занимают и освобождают память. А через new ты можешь выделять сколько угодно памяти и по своей воле по мере необходимости в произвольном порядке её освобождать.
А вот чего realloc не завезли - понять не могу. Он же быстрее работает. Если кусок выделенной памяти был больше запрошенной, то он не будет перевыделять память вообще. А через new-delete придётся в любом случае выделять временный кусок и копировать какой-то мусор. И потому приходится делать костыли, что размер вектора удваивается при добавлении элементов, чтоб менеджер памяти не мучить, так что программе для работы требуется ощутимо больше памяти, чем ей реально необходимо.
[code]#include <stdio.h>
#include <stdlib.h>
int main() {
int A = 0, Num = 312, i = 0;
srand(58);
Num = 0 + rand() %1000;
printf("enter num\r\n");
scanf("%d\n",&A);
for (;;) {
if (A > Num) {
printf("Your number is bigger then %d\r\n", Num);
}
if (A < Num){
printf("Your number is lesser then %d\r\n", Num);
}
if (A == Num){
printf("You win!");
return 0;
}
}
}[/code]
[code]#include <stdio.h>
#include <stdlib.h>
int main() {
int A = 0, Num = 312, i = 0;
srand(58);
Num = 0 + rand() %1000;
printf("enter num\r\n");
scanf("%d\n",&A);
for (;;) {
if (A > Num) {
printf("Your number is bigger then %d\r\n", Num);
}
if (A < Num){
printf("Your number is lesser then %d\r\n", Num);
}
if (A == Num){
printf("You win!");
return 0;
}
}
}[/code]
Там молчат
realloc тоже небыстр, и реаллок делают так же - увеличивают размер памяти в геометрической прогрессии.
Это нерабочий код, так как ты считываешь число лишь однажды. Скинь работающий код на ideone.
Угу. Но если самому писать самый тупой массив, то через new-delete он будет тормознее, так как он всегда в любом случае дублирует массив и производит копирование. Realloc же где-то внутри сохраняет размер выделенного куска, и без нужны не копирует.
Не знаю как там в подробностях работает выделение памяти, кучи и прочее но с дивана выглядит так, что можно конечно это сделать за пределами менеджера памяти вручную, так что new-delete код будет работать по тому же принципу, но в таком случае размер выделенного куска хранится как на уровне менеджера, так и на уровне программы.
А если же такая функция есть в самом менеджере (что было бы весьма логично, так как у него и так есть доступ к размерам выделенных кусков), то вот всего этого можно было бы избежать без лишних функций обратной связи возвращающих размер выделенных кусков, лишних переменных хранящих эти размеры или ещё чего-либо в этом духе.
А если не изобретать велосипед и взять класс vector из стандартной еблеотеки — он будет работать и ещё быстрее! Чудны дела твои хосспаде...
Как в visual studio 2005 объявить строковую переменную, если на string x; оно начинает ругаться?
Кому ты пиздишь? Где там отставание?
https://ideone.com/lGWN1d
На входе там три числа, результат в точности соответствует вводу.
>>109321
Хуиту несёшь. Посыл не понял.
> так что new-delete код будет работать по тому же принципу, но в таком случае размер выделенного куска хранится как на уровне менеджера, так и на уровне программы
new-delete никак не помогает тебе избежать хранения рамера выделенной памяти в менеджере, так как delete не принимает на вход размер массива. Так что если ты захочешь сделать интрузивный конструктор - в котором будет эксклюзивно хранится размер полученной памяти - то тебе придётся делать это без new/delete, и в итоге ты получишь зонный аллокатор, так как более экономного способа учёта памяти нет (оверхед - по 1 биту на каждую единицу памяти), тогда ты будешь хранить размеры памяти в объектах, а таблицы выделения в менеджере (если ты хочешь хоть какой-то абстракции менеджера от конструктора). Любые другие варианты обязательно повлекут за собой указатели/индексы либо в сторону объектов, либо в сторону менеджера.
Отсутствие аналога реаллока для new/delete вызвано тем, что тогда придётся иметь шестой конструктор - конструктор для изменения адреса объекта. Его просто не придумали во времена первого стандарта, так что живём без него и без ресайза. И НЕТ, это не связано с тем, что new/delete не хранят размеры, они их хранят.
Вектор может использовать malloc/realloc только для trivially-copyable-типов. Указатели на объекты в общем случае могут где-то храниться, и если в случае с копированием в массив большего размера этим занимается мув-конструктор, то для изменения адреса объекта конструктора просто нет, языком не предусмотрено.
>>109332
Матом ругается?
>new-delete никак не помогает тебе избежать хранения рамера выделенной памяти в менеджере
Вот потому их и хейчу помаленьку, что они там всё хранят, а толку никакого.
Забей, никакого посыла, просто ворчу. Мол от менеджера памяти требуется лишь работа с памятью, а эти автоматические конструкторы new-delete не нужны.
>И НЕТ, это не связано с тем, что new/delete не хранят размеры, они их хранят.
Но информацию о том, где располагается переменная с указателем, не хранят.
Да ладно, в С++ Смысла особого в realloc нет. Можешь попробовать написать аналог вектора использующего realloc/malloc/free вместо new/delete - не забудь только поделиться результатами
Скорее даже так - идеологически правильный realloc в С++ - это std::vector. Отдельный realloc у плюсового аллокатор не нужен.
Ага, и пусть не забудет про шестой конструктор.
Если ты про методы ,которые компилятор генерирует по умолчанию, если они требуются, то их 7.
1. Конструктор по умолчанию.
2. Дестр по умолчанию.
3. Конструктор копирования
4. Операция присваивания.
5. операция взятия адреса (this)
6. Конструктор переноса.
7. операция присваивания с переносом
Да, я про это, а точнее - про "правило пяти".
Есть программа, которая каждую секунду сверяет текущее время с заданым интервалом и если текущее время входит в интервал, то выполняется работа.
Но возникли проблемы.
Время задаётся в формате (HH:MM) для начальной точки и так же для конечной и соответственно сначала получаются интервалы или от beginTime->HH до endTime->HH или от beginTime->HH до 0 и от 0 до endTime->HH. Т.е. может быть время от 07:42 до 12:22 или от 12:27 до 02:26 следующего дня
Затем проводится та же проверка на минуты. Затем проводится проверка currentTime->HH на соответствие интервалу. Затем проводится проверка currentTime->MM на соответствие интервалу.
Всё это превращается в безумную лестницу из if...else ветвлений, что делает код абсолютно нечитаемым.
Есть ли какой-то более адекватный вариант сравнения времени?
Конвертируешь время в С++-время (заголовок chrono)
Пишешь
if(время2<время1) время2+= сутки
А дальше используешь функции сравнения времени из chrono.
http://en.cppreference.com/w/cpp/chrono/time_point
Запиленная поддержка времени именно для этого и нужна. Будут ли там коррекционные секунды учитываться - сам нагугли, если хочешь.
http://en.cppreference.com/w/cpp/chrono/duration
Всё-таки лучше бы сутки прибавлял по условию, тогда было бы два ифа вместо трёх.
Сутки не учитывают ситуацию вида
Сейчас 12:00. Процесс начинается в 16:00 а заканчивается в 13:00.
С сутками процесс сработает завтра, но не сработает сегодня. Да такой сценарий маловероятен, но, как говорится, а хули?
Мне кажется это глупо немного, почему бы просто не упорядочить сразу begin и end.
>С сутками процесс сработает завтра, но не сработает сегодня.
1) У тебя процесс должен в прошлом остановиться, штоле?
2) То, что ты не хочешь написать свой код правильно, не означает то, что это невозможно. Ссылку на документацию я уже дал тебе.
2) Нахуя тебе from_time_t, если ты можешь получить то же самое с помощью ::now и прочих функций?
3) А ещё ты про auto забыл.
>1) У тебя процесс должен в прошлом остановиться, штоле?
В настоящем же.
Вот есть период времени от 15:00 до 09:00 когда нужно работать.
Если прибавить сутки к конечному времени, то работа будет производиться с 15:00 этого дня до 09:00 следующего дня.
Но если мы сейчас находимся в точке времени 08:00, то эта логика не сработает и работа не начнётся, хотя 08:00 входит в интервал от 15:00 до 09:00 но сегодняшнего дня.
>2) Нахуя тебе from_time_t, если ты можешь получить то же самое с помощью ::now и прочих функций?
Инерция мышления - раньше же я пытался через <time.h> решить этот вопрос.
>3) А ещё ты про auto забыл.
Ага.
Подправил вобщем.
>то эта логика не сработает
Логика есть только одна, и ты не можешь в неё. Тебе не нужно каждую секунду вычислять интервалы заново, ты можешь делать это только в конце интервала.
А ещё я не могу понять, как твои макароны работают. time_t - это абсолютное время, а не суточное, так что ты уже где-то что-то вычисляешь, просто мне не показываешь. Ебись сам, короч. :3
>Логика есть только одна, и ты не можешь в неё.
Первый пик специально для тебя.
>Тебе не нужно каждую секунду вычислять интервалы заново, ты можешь делать это только в конце интервала.
А если перевод системных часов?
>А ещё я не могу понять, как твои макароны работают. time_t - это абсолютное время, а не суточное, так что ты уже где-то что-то вычисляешь, просто мне не показываешь.
А-то. На втором пике показано откуда всё. Я понимаю как сконструировать time_point на базе time_t с заданными параметрами. Но как сконструировать правильный time_point на базе имеющихся std::string?
Теперь более-менее понятно. Тогда сделать меньше сравнений не получится. Про смену времени - ты прав.
Ну и ещё код вида if(cond ){ return true;} это интересно само по себе. Писать надо return cond вместо этого.
>>109721
В коде из >>109705-то? Я на условия только сецчас посмотрел, они у тебя там ебанутые какие-то, присмотрись.
int nod (int n, int m) {
if ( m !=0 && n!=0) {
if (m>n) {
for (int i=2; i<m; i++) {
if( m % i == 0 && n%i== 0) return i; }}
else if (m<n) {
for (int i=2; i<n; i++) {
if( m % i == 0 && n%i== 0) return i; } }
else if (m==0) return n;
else if (n==0) return m;
}
}
>проверяет четность целочисленной переменной через сравнение остатка от деления
Ты не просто умственно отсталый, ты дегенерат – пиздуй на JS писать отсюда
Миллион раз было сказано - математика нахуй не сдалась если ты не программист 3Д графики и не какой-нибудь ЧСВшный мудак с ЗП в 80к из яндекса.
Благодарю, а расскажи пожалуйста в каких областях с++ наиболее эффективен, прост геймдев в беларуси невозможен, совсем, а других и не знаю
Идеи, предложения?
Return поправил. А что ты имеешь в виду под
>условия только сецчас посмотрел, они у тебя там ебанутые какие-то, присмотрись
?
Условия мне кажутся понятными
if (Начало > конца) {
Проверка на нахождение текущего момента до или после обозначенного периода
} else {
Проверка на нахождение текущего момента внутри обозначенного периода
}
Я уж не знаю, что полезнее: разжевать всё это для тебя сейчас, или сделать так, чтобы ты сам напоролся.
Два времени суток делят сутки на три интервала. Возьми под одному значению из каждого интервала и сделай таблицу труе-фалс с ожидаемыми значениями. Потом возьми код своих ифов и тоже сделай таблицу.
Сравни эти ждве таблицы, и ты увидишь, что ты родил пиздец.
ага в соло, с бюджетом степуха = 1к
>Сравни эти ждве таблицы, и ты увидишь, что ты родил пиздец.
Сначала я подумал что ты меня троллируешь, но потом я понял, что ты видимо не учитываешь условие
if (begintp > endtp)
которое производит проверку на то какой из *tp стоит первым
И соответственно, если endtp по временной шкале после begintp, то мы начинаем работу в первой точке - begintp и заканчиваем во второй точке - endtp.
А если endtp по временной шкале стоит до begintp, то мы начинаем работу в любой момент до первой точки - endtp и после второй точки - begintp.
Можно конечно переписать код пикрилейтед, и это наверное будет правильно. Но разве это ошибка?
Я всё учитываю, я умею читать. Когда будешь это дерьмо дебужить, вспомни меня, удачи.
Ну я, к сожалению, тоже не телепат возможно ты имеешь в виду что нужно учитывать двое суток? Не нужно, при смене суток begintp и endtp тоже соответственно смещаются и код работает.
О, всё, теперь допедрил. Да, всё верно.
return false; лишний только, он никогда не выполняется.
по новому стандарту я вот так:
auto_ptr<int> p;
уже не могу писать?
auto_ptr больше не существует??
Читай про shared_ptr и unique_ptr. auto_ptr признан кривой забагованной нинужно.
учусь на экономе, не понимаю нахуя нам программирование, никогда не изучал его, но допуск к зачету нужен.
Пиздуй в ньюфаготред.
А ещё тряси препода, блядь.
Различное системное программирование (Я писал прошивки для роутеров, сейчас пишу драйвер).
+Веб-бэкенды (Яндекс).
ну вообще занимательно? или лучше выбрать другую сферу и другой язык? На самом деле язык вообще похуй, просто сферу ищу наиболее нормальную, вообще хз есть 4 года а на что их пустить не знаю.
Сейчас работаю в конторе около 100 рыл, контора занимается разработкой программного обеспечения для промышленной автоматизации. Ебать тут легаси... Еб твою мать, но кроме этого моя жопа особенно горит от того, что нет общего стиля кода и каждый петух топчет, как хочет. Просто глаза покрываются кровью когда я смотрю на хэдер-онли класс в 5000 строк или "гармоничное" сочетание CamelCase с all_lowers_with_underscores. Или охуенный подход замешинвания private, public и protected в одну кучу.
Легаси - это пиздец. Хотя и платят 70к в моем мухосранске, но, блять, удовольствия работать с этим дерьмом никакого, увы...
1110749-анон на связи. Я бы не рекомендовал. Вкатывайся в питон, веб, и прочую хуету. Денег плюс-минус столько же, зато возможностей и вакансий больше. С++ надо действительно любить, и без страданий в нем никуда. Как никак - самый сложный мейнстримовый язык из существующих
ну я и думал в веб, потому что epam в городе только, но бля, там же и так дохера народу, куда мне то ещё лезть, там любая обезьяна в веб лезет, или не так? а плюсы какие то родные стали, вот когда делать нечего, на них алгоритмы смотрю, это точно пригодится)
Присвой вэлью начальное значение 1))
Мнения вкатывальщиков менее 5 лет не учитываются.
Community Edition бесплатна для домашнего использования, и ее за глаза.
Это копия, сохраненная 4 февраля 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.