Задать вопрос
  • Как происходит выбор реализации интерфейса?

    @res2001
    vasx3,
    из-за dependency injection, при котором не нужно передавать объект в параметрах

    Бред.
    Я не знаю что там у вас в симфони, но вы в любом случае должны передать объект, иначе функция не будет знать с чем она работает (синтаксическая ошибка проще говоря - вы не можете вызвать функцию имеющую параметр без параметра). Подозреваю, что в симфони вы просто явно не вызываете эти методы, вместо этого симфони сама это делает за вас и она сама внутри себя передает туда нужные объекты. Но это ничего не меняет.
  • В чем ошибка в программе?

    @res2001
    iamgrootyhuuu,
    как понять инструкции ввода, это какие?

    Например cin >> X;
    Эта конструкция будет читать ввод с клавиатуры и сохранит введенные данные в переменную Х.
    Что бы вывести значение переменной Х конструкция должна быть такой:
    cout << X << endl;
    https://en.cppreference.com/w/cpp/io/cin
    Купите книжку по плюсам.
  • Как происходит выбор реализации интерфейса?

    @res2001
    vasx3, При вызове функции Sportcar вы должны будете пердать ей параметр. Передадите Sportcar - будет получен Sportcar в виде ICarа, а передадите Bus - будет получен Bus в виде того же ICara. Все очень просто :)
  • Как происходит выбор реализации интерфейса?

    @res2001
    vasx3,
    не понятно, как правильно пользоваться интерфейсами

    Почему, собственно?
    Из вашего примера: startCar принимает ICar, почему же вы считает, что вы в starCar можете вызвать openDoor? Этого метода нет в ICar. В starCar доступно только то, что описано в ICar.
    Везде говорится, что необходимо отделять отдельные части приложения, использовать классы не напрямую, а через интерфейсы чтобы убрать зависимости.

    Правильно говорится. Делается это для минимизации зависимостей. Ваш startCar будет зависеть только от интерфейса, вы можете в дальнейшем еще 10 специализаций интерфейса сделать, а startCar останется неизменным.
    Но я не могу понять, как в случае использования интерфейсов я могу быть уверенным в соответствии получаемых данных.
    Получается как-то не прозрачно.

    Привыкайте.
    В компьютерах (и не только) сплошные черные ящики.
    Если вы не автослесарь, то вы толком не знаете, как едет ваша машина. Ну да, понятно, что бензин в движке сгорает (об этом в школе рассказывали) и из-за этого крутятся колеса. Но это как-то не прозрачно :)
  • Как происходит выбор реализации интерфейса?

    @res2001
    vasx3, А к примеру cout << "Hello world" в С++ не магия? Подберите аналоги из ваших ЯПов.
  • Как происходит выбор реализации интерфейса?

    @res2001
    vasx3, Эта дырка в знаниях никак не мешает понять ООП. Просто примите, что это так работает и идите дальше. Мне в свое время ни капли не мешало, что при изучении С++ я не знал как под капотом устроено наследование и виртуализация. Потом что-то сам додумал, что-то прочитал, хотя особой надобности в этих знаниях у меня нет и нигде это знание не пригодилось.

    В перечисленных вами языках я не в курсе как это реализовано. Предполагаю, что в C# примерно так же как и в плюсах, а PHP - интерпретируемый язык, тут вообще можно огороды городить.
  • Как происходит выбор реализации интерфейса?

    @res2001
    Как можно быть уверенным, что мне вернётся объект класса Bus, и что в нём будет метод openDoor?

    Никак. В вашем интерфейсе нет метода openDoor. Функция оперирующая интерфейсом имеет доступ только к методам объявленным в интерфейсе. Если нужно использовать openDoor, то вы должны принимать в параметре Bus, а не ICar.

    Но как происходит выбор класса который, в конечном итоге, возвращается в методе?

    О выборе правильно метода заботится ЯП, так что вы просто пользуйтесь.
    Если хочется деталей, то надо опускаться на уровень конкретного ЯП и смотреть как в нем реализовано наследование и виртуальные методы. В С++, например, это делается с помощью указателя на таблицу виртуальных методов - у предка она своя, у наследника своя, выбор нужного метода происходит "автоматически".
  • Как составить программу для перемещения файлов в иной каталог?

    @res2001
    coscocos,
    но такое выставлять как то стыдно

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

    @res2001
    coscocos, 1. поддержка режима подсказки - видимо поддержка параметра /? на который будет выдаваться справочная страница по параметрам
    2. программа формирует коды завершения - в случае ошибки какой-то операции завершаться с кодом ошибки отличным от 0 (exit /b N)
    3. программа должна учитывать атрибуты файлов - видимо перемещать файлы только с указанными атрибутами. В каком-то виде xcopy это умеет. Узнать аттрибуты файлов можно командой attrib file.name (attrib /?)
    4. разбор и интерпретация командной строки (переменное количество параметров) - ну тут и так должно быть понятно. Через параметры командной строки вам надо получить каталог/файлы для переноса, набор аттрибутов файлов для переноса, ну и что-нибудь еще, что сами захотите
    5. и работа с конкретным каталогом (передается как параметр утилиты) - см.п.4

    В целом задание не сильно сложное, но для новичка придется попотеть.
    Тут за вас никто код писать не будет - политика не позволяет.

    А как это все учесть, я не знаю

    Учите мат.часть. Удивлен, что где-то учат батникам. Сейчас вместо них powershell обычно используют.
    Из ресурсов для обучения:
    1. На RSDN есть несколько статей "Уроки батаники"
    2. Все стандартные команды винды поддерживают опцию /? по ней выводят свою справку, в которой содержится масса полезных сведений. Даже такие команды как if и for имеют свою справочную страницу.
    3. "Серый форум" и forum.ru-board.com - есть разделы по батникам, там тусят продвинутые батаники, полно обсуждений, сложных вопросов, примеров, помогают в написании
  • Почему в оценке сложности алгоритма log n пишется без основания?

    @res2001
    Не знаю ответа.
    Но я думаю, что основание может быть разным в зависимости от алгоритма.
    Например в алгоритме поиска в бинарном дереве основание будет 2, потому что дерево бинарное.
    Если бинарное дерево заменить каким-нибудь другим, где из узла могут выходить 3 потомка, то основание будет 3 и т.п.
    В оценке не важны конкретные цифры, а важно то, что алгоритм работает с логарифмической сложностью, а не с N или N*N.

    И кстати, я иногда встречаю в оценках указание основания логарифма.
  • Как в c++ переписать целочисленные элементы из одного файла в другой?

    @res2001
    Олег Андреев, Конец файла возвращает метод eof(), а наличие ошибок good(), есть еще методы bad()и fail(), а так же приведение объекта потока к булевому типу.
    Смотрите тут: https://en.cppreference.com/w/cpp/io/basic_ios/eof
    В конце страницы есть табличка со сравнением различий всех методов проверки состояния. Выбирайте, какой вам больше по вкусу.
    Как правило чтение из файла оформляют так:
    while(in.good())
    {
       in.read()
    ...
    }
  • Как сократить запись?

    @res2001
    Фокс Йовович,
    2. Такие утверждения следует подкреплять бенчмарком.

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

    HoShik, если производительность важна, то лучше оставить код так как есть - это самый быстрый вариант. Для краткости, можно вынести сравнения в #define или inline функцию и использовать ее в коде.
    Многие парсеры (HTTP, JSON, XML), написанные на Си и используемые в проектах с большими нагрузками используют именно такой "многословный" подход и не пытаются экономить на строчках, т.к. скорость работы важнее красоты кода.
  • Как в c++ переписать целочисленные элементы из одного файла в другой?

    @res2001
    Олег Андреев, Перенесите открытие out1 и out2 перед циклом.
    Вот примерно одна из попыток.

    Все правильно, так и читайте. Но вам нужно проверять результат чтения на ошибки и на достижение конца файла (eof).
  • Как в c++ переписать целочисленные элементы из одного файла в другой?

    @res2001
    Вы используете объект ofstream - это объект для записи файлов, но при этом открываете его в режиме ios::in.
    Режим ios::out добавляется автоматически. В итоге вы открываете файл для чтения и для записи. Оно вам надо?
    Если надо, то логично было бы использовать объект fstream, а не ofstream. Если не надо, то убрать ios::in.

    Пробовал оператор

    Выложите код ваших попыток?
    В приведенном примере вы пока что генерируете рандомные числа и пишете их в 1 файл.
    Вам надо открыть еще 2 файла для отрицательных и для положительных чисел, так же как вы открываете первый файл (имя файла, конечно должно быть другим). А дальше просто:
    if(a>0) 
       запись в файл положительных чисел 
    else 
       запись в файл отрицательных чисел
  • Как ip сеть узнает о повторах ip? и как отключает?

    @res2001
    fsfsfs32, Никто винде не сообщает. Анализируется любой входящий трафик. А он будет, т.к. компы в сети постоянно шлют какой-нибудь спам.
    На этапе установки адреса работает вариант, который написал Rsa97
    Но винда обнаруживает двойные адреса не только при установке нового адреса: например заготовьте 2 компа с одним адресом не подключенным к сети, потом воткните их в сеть (не перезагружая) - двойные адреса будут обнаружены.
  • Как решается задача?

    @res2001
    Можно и так.
    У меня статистика до 2236 года вывелась)))

    2013 + 4500/20 = 2238 - это в 0 опустится, так что ваши 2236 - правильно.
  • Почему (unsigned long)1073741824 * 8 = 0?

    @res2001
    Для микросовтовского компилятора это верно.
    Но в целом все сложнее: https://en.cppreference.com/w/cpp/language/types
    Размер целых стандартом не определен, указывается только минимальный размер. Компиляторы могут варьировать эти размеры, не ниже минимального. Например для int указан минимальный размер 16 бит, для long - 32 бит, long long - 64 (п.5.2.4.2.1 Стандарта C11)

    https://docs.microsoft.com/en-us/cpp/cpp/data-type...
    https://www.gnu.org/software/gnu-c-manual/gnu-c-ma...
  • Первая попытка в ООП. Прошу оценить код. Что можно было бы исправить?

    @res2001
    Как видите у людей с грамматикой не всё в порядке, и они говорят лет после любого числа — непорядок, это нужно обязательно исправить

    Где это?
  • Почему не работает синхронизация времени с доменом?

    @res2001
    yura_born, Кстати, для синхронизации времени можно выбить покупку GPS приемника и брать время с GPS. Тогда у вас будет достаточно дешевый без интернетный свой собственный stratum 0.