• Как перенести изменения одной ветки на другую?

    max_front
    @max_front
    frontend
    берешь хэш коммита (его можно узнать используя команду git log), который тебе надо перенести в другую ветку, затем переключаешься на нужную ветку и вводишь git cherry-pick <хэш коммита>, например git cherry-pick 3ea6207fe84 и будет тебе добро
    Ответ написан
    Комментировать
  • Как задать и считать бесконечность?

    myjcom
    @myjcom Куратор тега C++
    Code
    #include<iostream>
    #include<fstream>
    #include<limits>
    #include<vector>
    #include<iterator>
    #include<algorithm>
    #include<string>
    using namespace std;
    
    int main()
    {
      const string filein = "D:\\numbers_in.txt";
      const string fileout = "D:\\numbers_out.txt";
      vector<double> v;
    
      ios_base::sync_with_stdio(false);
    
      if(ifstream ifs(filein); ifs)
      {
        transform(istream_iterator<string>{ifs}, {}, back_inserter(v), [](const auto& xs){
          double d = numeric_limits<double>::infinity();
          try
          {
            d = stod(xs);
          }
          catch(...)
          {
            cout << "wrong\n";
          }
          return d;
        });
      }
    
      copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
    
      if(ofstream ofs(fileout); ofs)
      {
        copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
      }
    
      cin.get();
    }

    numbers_in.txt
    -1.0 3.0e5 inf 23.01 55.003
    numbers_out.txt
    -1 300000 inf 23.01 55.003

    Для матрицы
    -1.0 3.0e5 inf
    5.0 inf 0.008
    1.45 3.99 -5.25

    +/- Аналогично

    #include<iostream>
    #include<fstream>
    #include<limits>
    #include<vector>
    #include<iterator>
    #include<algorithm>
    #include<string>
    #include<sstream>
    using namespace std;
    
    auto parse_line = [](istream& is)
    {
      vector<double> row;
      transform(istream_iterator<string>{is}, {}, back_inserter(row), [](const auto& xs){
          double d = numeric_limits<double>::infinity();
          try
          {
            d = stod(xs);
          }
          catch(...)
          {
            cout << "wrong\n";
          }
          return d;
        });
      return row;
    };
    
    int main()
    {
      const string filein = "D:\\numbers_in.txt";
      const string fileout = "D:\\numbers_out.txt";
    
      vector<vector<double>> matrix;
    
      ios_base::sync_with_stdio(false);
    
      if(ifstream ifs(filein); ifs)
      {
        string line;
        while(getline(ifs, line))
        {
          istringstream is{ line };
          matrix.push_back(parse_line(is));
        }
      }
    
      for(const auto& v : matrix)
      {
        copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
        cout << "\n";
      }
      
      if(ofstream ofs(fileout); ofs)
      {
        for(const auto& v : matrix)
        {
          copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
          ofs << "\n";
        }
      }
    
      cin.get();
    }



    А нужно написать бесконечность потому что потом буду искать минимальный элемент среди этих элементов и чтобы этот минус не мешал поиск.


    минимальный элемент среди этих элементов
    using Matrix = vector<vector<double>>;
    
    auto find_min = [](const Matrix& m)
    {
      vector<double> values;
      for(const auto& row : m)
      {
        values.push_back(*min_element(row.begin(), row.end()));
      }
      return *min_element(values.begin(), values.end());
    };
    
    // ... 
    
    cout << "Min element: " << find_min(matrix) << endl;

    Min element: -5.25
    Ответ написан
    Комментировать
  • Как сократить выражение?

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

    sgjurano
    @sgjurano
    Разработчик
    Попробуйте линейную регрессию построить.
    Ответ написан
    Комментировать
  • Как найти формулу по ее аргументам и результату?

    @TriKrista
    Вы можете подставлять аргументы?
    Если да то постройте график, и посмотрите на какую функцию он похож
    Ответ написан
    Комментировать
  • Упаковка функции в строку, и обратно....?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    >>> def a():
    ...     print(True)
    ...
    >>> def b(func):
    ...     funcs = {'a': a()}
    ...     funcs[func]
    ...
    >>> b('a')
    True
    >>>

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

    Первый вариант: скидка растёт линейно от 0% до максимальной скидки, скажем 50%, которая наступает, если взять 70 единиц товара, и дальше не растёт. Гуглите уравнение прямой, проходящей через две точки.
    график
    5d3083611188d540332498.png


    Второй вариант: использовать сигмоиду (S-образный график) y = 1 / (e^x + 1)
    график

    y = 50 / (ℯ^(5 - x / 8) + 1)
    5d30899121998751229032.png
    Ответ написан
    Комментировать
  • Стоит ли соглашаться на работу?

    Zoominger
    @Zoominger
    System Integrator
    Я думаю, что стоит. Года должно хватить, тем более, если дело передадут.

    Вряд ли там будет чистый Ассемблер, скорее, Си.

    В общем, если нет ничего лучше, то, конечно, стоит пойти.
    Ответ написан
    Комментировать
  • В чем отличие полиморфизма от реализации интерфейса?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    Тут, на самом деле, необходимо чётко определить границы.

    Есть ООП как парадигма программирования. Одна из концепций ООП называется полиморфизм. Существуют различные реализации этой концепции в языках программирования.

    В C++ есть несколько реализаций полиморфизма. Вам, на данном этапе, скорее всего интересен только полиморфизм, основанный на подтипах. Это означает, что вызывающий код может работать с набором типов из определённой иерархии, без знания о том, какой это конкретно но тип: базовый или подтип.

    Касательно интерфейсов: в C++ их нет на уровне языка, как отдельной сущности. Однако же разница между интерфейсом и абстрактным классом никуда не делась.

    Пример "обычного полиморфизма":
    // Это "интерфейс", который представляет собой набор операций, которые можно произвести над объектом
    // В данном случае, по объекту можно постучать
    class IKnockable {
    public:
        virtual ~IKnockable() = 0;
    
        // Само по себе действие: "постучать"
        virtual void knock() const = 0;
    };
    
    // Реализация интерфейса классом Door
    class Door : public IKnockable {
    public:
        // ...
        void knock() const override { std::cout << "door" << std::endl; }
        // ...
    };
    
    // Реализация интерфейса классом Window
    class Window : public IKnockable {
    public:
        // ...
        void knock() const override { std::cout << "window" << std::endl; }
        // ...
    };
    
    // ...
    
    // Какая-то функция, которая может постучать  по каждому объекту из списка, 
    // не имея представления о том, что же это за объект
    void knock(const std::vector<std::shared_ptr<IKnockable>> &knockableObjects) {
        for (auto &&knockableObject : knockableObjects) {
            knockableObject->knock();
        }
    }
    
    // ...
    
    std::vector<std::shared_ptr<IKnockable>> v = {std::make_shared<Door>(), std::make_shared<Window>()};
    knock(v); // Сначала напечатает "door", потом напечатает "window"


    Ответ на ваш изначальный вопрос: это понятия из разных областей, одно из теории типов, другое из языков программирования. Интерфейс -- это одно из средств в языках программирования, для реализации определённого типа полиморфизма.
    Ответ написан
    3 комментария
  • Как выбрать структуру 2d программы?

    Adamos
    @Adamos
    Я создал класс объектов, (например теплообменник) он имеет свойства на основании которых производится расчёт (например КПД) . И свойства на основании которых происходит отрисовака ( например положение при отображение (коардинаты x, y)) не уверен, что я сделал корректно.

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

    @sash999
    просто админ из деревни
    Это называется аннотация типов. В вашем случае она говорит, что функция принимает параметром int, по дефолту он равен -1 и возвращает она лист. Читать тут
    Ответ написан
    Комментировать
  • Что это за дополнительные переменные в функции?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это Type Hints.

    quest_id: int = -1 означает, что аргумент quest_id принимает значения только типа int

    -> list означает, что функция возвращает список.
    Ответ написан
    2 комментария
  • Найти ошибку в коде?

    aRegius
    @aRegius
    Python Enthusiast
    Подскажите,что не так в моей программе ?

    Проверьте на предмет переопределения переменной k вот в этом месте:
    for k, v in ribsDict.items()
    Ответ написан
    Комментировать
  • Почему не убавляется свойство объекта?

    В строке ошибка
    this.conut = this.conut - count;
    Нужно
    this.count = this.count - count;
    Ответ написан
    4 комментария
  • Почему неправильно работает освещение объекта?

    WNeZRoS
    @WNeZRoS
    Последние строки фрагментного шейдера:
    "   vec3 specular = specularStrength * spec * lightColor;\n"
    "   vec3 result = (ambient + diffuse + specular) * objectColor;\n"
    "   FragColor = vec4(objectColor * lightColor, 1.0);\n"


    Ctrl + F с поиском result должен помочь найти ошибку
    Ответ написан
    1 комментарий
  • Как сделать чтобы программа не выключалась при ошибке в python 3.7?

    @Fixid
    Оборачивать опасные места в try - except - else - finally. Где уже на основе ошибки выдавать сообщение.
    Пример
    Ответ написан
    Комментировать
  • Почему грязный компьютер медленно работает?

    mindtester
    @mindtester
    https://www.youtube.com/watch?v=Dn9_ogWhk9s
    недавно, один пожилой человек, просил посмотреть у него системы видеонаблюдения, притащил отвертку, пылесос, кисточку.. со словами
    я знаю, пыль на микросхеме опасна
    ... а вообще то там сдох старенький жесткий диск

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

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

    что бы включился троттлинг, должно существенно ухудшиться охлаждение процессора. все остальные компоненты надо мониторить специальными программами, типа AIDA64. если воют вентиляторы - лучше всего их менять. большинство вентиляторов можно снять, найти способ добраться до шпинделя, почистить и смазать его. но если вентилятор "выл" достаточно долго, как правило уже есть износ шпинделя, и чистка/смазка уже не на долго спасает. так что стоит менять на новый

    ну и о способах чистки - слабый пылесос не эффективен, а мощный очень опасен для компьютерных компонентов.
    правильная чистка - это продувка сжатым воздухом. балончики продаются во всех магазинах, где есть компьютерные аксессуары, и даже в некоторых продвинутых магазинах офисных принадлежностей. продувать стоит на открытом воздухе, в респираторе и очках от пыли. ну или хотя бы марлевой повязке из аптеки, после первой же пробы поймете почему ))
    Ответ написан
    2 комментария
  • PyQt5 Как присвоить переменной текст из QLineEdit?

    @TriKrista
    QLineEdit не имеет функций setPlainText и toPlainText, используйте setText и text
    Ответ написан
    6 комментариев
  • Как в графе найти самый "большой" полный подграф?

    @Mercury13
    Программист на «си с крестами» и не только
    Это штатная задача, т.н. «задача о клике», NP-полная. Ничего лучше усовершенствованного перебора не существует.
    https://ru.wikipedia.org/wiki/Алгоритм_Брона_—_Кербоша
    Ответ написан
    Комментировать