Ответы пользователя по тегу Программирование
  • Как обработать все случаи при решении системы линейных уравнений с двумя неизвестными?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Для решения систем удобнее пользоваться матрицами, и методом Крамера в частности. Это не так страшно, как выглядит. И код получится намного проще и логичней.
    Ответ написан
    2 комментария
  • Что такое stack и heap в языке программирования?

    tsarevfs
    @tsarevfs
    C++ developer
    Есть некоторая путаница. Во многих языках программирования есть call stack и memory heap. Они имеют достаточно косвенное отношение к одноименным структурам данных. И если call stack по устройству действительно похож на LIFO, то memory heap имеет мало общего с FIFO структурой данных.
    Ответ написан
    2 комментария
  • Банально, но все же вопрос о самоопределении?

    tsarevfs
    @tsarevfs
    C++ developer
    Ну, как вариант, gamedev. Тут и моделирование, и геометрия пригодится и психология не помешает.
    Ответ написан
  • Как программно реализовать семантическую сеть?

    tsarevfs
    @tsarevfs
    C++ developer
    Либо преподаватель не может читать не по методичке, либо вам предложили использовать какой-то готовый инструмент / алгоритм. В принципе реализовать графовую структуру на реляционной БД не составляет проблем. Но возможно это будет не оптимальным решением, и более специализированное хранилище подойдет лучше.
    На уровне учебной задачи БД скорее всего будет работать не хуже самописного решения.
    Ответ написан
  • Вызов функции с аргументами?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    В C++ мы должны явно указывать типы принимаемых аргументов функции. Дело в том, что при вызове функции нужно как-то скопировать аргументы(или ссылки на них если мы указали &) в функцию. Для того, чтобы это сделать, компилятору надо знать что он будет копировать.
    Как вариант, он мог бы об этом догадаться сам по тому, как вы вызываете функцию (что-то похожее происходит с шаблонными функциями). Однако есть проблема, что код функции может принадлежать библиотеке. Но библиотека может компилироваться отдельно и ничего не знать о том, как ее функции будут вызваны. Более того, в с++ каждый *.cpp файл компилируется отдельно, и мы не можем узнать как именно нас вызывают в другом файле.
    Другой вариант -- разбираться что нам передают прямо в момент выполнения программы. По такому принципу работает python и многие другие языки с динамической типизацией. Это может быть удобно, однако на порядки медленней по сравнению с компилируемым вариантом.
    Обратите внимание, что имя параметра функции никак не зависит от имени того что в нее передают. void displayMessage(string const &anyNameYouLike)//OK
    Ответ написан
    1 комментарий
  • За скорость обработки циклов отвечает процессор?

    tsarevfs
    @tsarevfs
    C++ developer
    За скорость обработки циклов отвечает процессор?
    Внутри цикла могут быть операции, скорость которых зависит от быстродействия памяти или даже жесткого диска, например если вы читаете там из файла. Но процессор тоже важен.
    Если в однопоточном выполнении какого-либо сценария будет 50 тысяч итераций, это нормально?
    Если теле цикле простая арифметика, то такой цикл будет выполнятся доли секунды.
    А если поставить всё это дело на машину с высокочастотным процессором?
    Зависит не только от частоты процессора, но скорее всего будет быстрее.
    И если программа выполняется в одном потоке, то количество ядер не важно?
    С кучей ядер нашу программу будут меньше прерывать другие процеессы, например сама операционная система. См. "вытесняющая многозадачность".
    Ответ написан
    Комментировать
  • Можно ли перегружать базовые типы в С++?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Это определенно плохая идея. Если вы хотите удобно сравнивать строки используйте std::string.
    Ответ написан
  • Как реализовать peer-to-peer технологию?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Программировать на чистых сокетах дело достаточно трудоемкое. Кроме того, что вам приходится работать на достаточно низком уровне, для обеспечения их неблокирующей работы(например при ожидании данных от другого клиента) надо использовать или потоки или poll/select.
    Хорошим выходом может стать использования обертки, например из Qt. Так вы получите кросплатформенный код с меньшими затратами. Стоит также взглянуть на более высокоуровневые варианты, например ZeroMQ (не знаю как у них с p2p, но для общения между 2 клиентами это может упростить жизнь).
    В простейшем случае для уведомления о своем присутствии клиент рассылает broadcast udp пакеты с информацией о себе. Основная проблема такого подхода, что такие пакеты будут зарезаны ближайшим маршрутизатором (наивно полагать что нам дадут разослать пакет каждому пользователю интернета). Поэтому такой подход работает только в простой локальной сети. Bittorent умеет хранить информацию децентрализовано, но для первоначального подключения необходимо знать адрес хотя бы одного подключенного участника.
    После того как вы знаете адрес другого клиента вы можете установить с ним непосредственное соединение. На самом деле тут тоже не все так просто. Если он находится за NAT, а до распространения ip-v6 для большинства(?) клиентов так оно и есть, то придется что-то придумывать. По этой теме можно поискать по запросу "p2p over NAT".
    Ответ написан
    Комментировать
  • Как грамотно преобразовывать информацию из byte в int?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Можно просто в цикле пробежаться:
    std::vector<char> data = get_data();
    std::vector<int> data2plot;
    for (int i  = 0; i < data.size() / 2; ++i)
    {
    	int hi = data[2 * i];
    	int lo = data[2 * i + 1];
    	data2plot.push_back((hi << 8) | lo);
    }
    plot(data2plot);
    Ответ написан
    4 комментария
  • Оптимальный набор алгоритмов в задаче по Computer Vision?

    tsarevfs
    @tsarevfs
    C++ developer
    А может проще будет печатать qr код? Там и надёжность лучше будет. И библиотеки готовые найти можно.
    Ответ написан
    2 комментария
  • Как в экселе использовать данные ячеек как плейсхолдеры в других?

    tsarevfs
    @tsarevfs
    C++ developer
    А просто склеить строки не подойдет?
    =CONCATENATE(A1, " старше чем " A2)
    Если надо работать с числами то посмотрите на функцию TEXT.
    Ответ написан
    1 комментарий
  • Каково влияние высшего образования на карьеру предпринимателя?

    tsarevfs
    @tsarevfs
    C++ developer
    В сфере программирования стоит разделять понятия высшее образование и диплом о высшем образовании. При найме на работу диплом даст вам преимущество только в том случае если за ним стоят реальные знания, которые очень легко можно проверить на собеседовании или тестовым заданием.
    В текущей экономической и политической ситуации, особенно в вашем регионе, я бы не был уверен в 100% успехе фирмы. По крайней мере стоит учитывать все возможные варианты.
    Ответ написан
    1 комментарий
  • Математика и олимпиадное программирование?

    tsarevfs
    @tsarevfs
    C++ developer
    Олимпиады это отличный бонус при поступлении в вуз. 10 класс это поздновато для начала, но попытаться стоит.
    Посмотрите на программу ЛКШ. Многие успешные олимпиадники учились там. Хорошо почитать про вещи представленные в ней (начиная с уровня D до A). Может быть полезно почитать вики за 1, 2, 3 семестр, особенно про комбинаторику, динамику, графы, поисковые структуры.
    Нужно очень много практики. Неплохим вариантом будет прорешивать задачи с acmp.ru. Количество важно. Нужно научиться делать это быстро.
    Ответ написан
    2 комментария
  • Программирование с нуля. Как начать?

    tsarevfs
    @tsarevfs
    C++ developer
    Выбор языка программирования не важен. Хватит читать советы. Берите любое из Python, Java, C++ не ошибетесь. На python будет намного проще в самом начале. C++ даст наиболее полное понимание программированя (во многом через боль и унижение на начальном этапе).
    Начинайте читать книги (выбор книг для каждого языка освещен в сотнях вопросах на тостере), делать задания. Возможно стоит найти онлайн курс по языку.
    Для успеха, прежде всего, вам потребуется 100% уверенность что это вам нужно. Придется потратить массу усилий чтобы получить результат. Но мне кажется, это того стоит.
    Ответ написан
    Комментировать
  • Чем Классы отличаются от обычных функций? C++?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Чем вас не устраивает первая ссылка из запроса в гугле: c++ классы примеры?
    Ответ написан
    Комментировать
  • Как понять суть программирования (подробнее в содержании)?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Посмотреть на то как создается рисунок действительно проще, но прежде чем удастся нарисовать что-то хорошо, придется потратить кучу времени и сил.
    Для того чтобы получить минимальное представление о программировании не обязательно тратить годы. Пройдите онлайн курс по языку, например питон неплох для быстрого старта:
    python-rutour.rhcloud.com
    или
    www.codecademy.com (если хоть немного знакомы с английским)
    Если пойдет, то читайте книги по языку и алгоритмам. Если позволяют средства, позанимайтесь с учителем или в группе.
    Не ожидайте что все будет просто.
    Ответ написан
    2 комментария
  • C++: как сделать чтобы перменная string считывалась по 1 знаку?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Пользователь может захотеть исправить текст. Поэтому вычисления лучше делать по нажатию Enter или кнопки на форме. Считывайте всю строку и перебирайте по 1 символу в цикле:
    void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
       if (Key == VK_RETURN)
       {
          string input = Edit1->Text;
          for (size_t i = 0; i < input.length(); ++i)
          {
            //тут делайте с input[i] что хотели
          }
       }
    }


    Но если очень хочется, то обработчик как раз получает параметр Key c последним введенным символом.
    Ответ написан
    Комментировать
  • Реализация арифметических операций. Как устроена?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Реализация зависит от платформы. Вы можете посмотреть во что компилируются интересующие вас операции для конкретного компилятора с помощью дизассемблера (в студии есть встроенный, для unix есть objdump -D > somefile.asm).
    Вообще, оптимизации на уровне арифметических команд это последнее дело. Для начала желательно убедиться, что нет алгоритма с лучшей ассимптотикой (считая что все арифметические операции работают за 1).
    Для обработки однотипных данных возможно получить ускорение за счет векторных операций из расширений процессора SSE* или на GPU.
    Ответ написан
    Комментировать
  • С чего начать изучение Qt5?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Qt это кроссплатформенный С++ фреймворк. Для него написана отличная документация. Просто начинайте использовать его для создания GUI и решения прикладных задач.
    Большой список того что стоит прочитать про linux.
    Ответ написан
    1 комментарий