Задать вопрос
  • Антивирус ругается на "Hello world". Ложная тревога?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Avast будет ругаться на все самостоятельно скомпилированные программы.
    Ответ написан
    2 комментария
  • Что не так в игре "Жизнь"?

    @Oxoron
    Шарпер
    Не совсем понял Ваш набор методов (функций).
    По факту, вся игра на поле nxn состоит из следующих этапов
    1. Создаем матрицу (n+2, n+2), все элементы нулевые.
    2. Заполняем некоторые клетки (не крайние) единицами, создавая начальную популяцию.
    3. Делаем ходы по следующему алгоритму:
    3.1 Сначала для каждой не крайней клетки считаем кол-во соседей (результаты сохраняем в отдельную матрицу).
    3.2 В зависимости от числа соседей обращаем клетку в ноль или единицу.

    То есть, Вам нужны методы:
    1. Заполнить всё поле нулями.
    2. Проверка поля на "крайность".
    3. Метод создания начальной популяции.
    4. Метод подсчета числа соседей.
    5. Метод изменения значения клетки в зависимости от числа соседей.
    Методы 2, 3, 4, 5 покрываем модульными тестами (Unit-tests)

    Самая частая ошибка в реализации заключается в том, что клетку изменяют сразу после подсчета её соседей. Если не ошибаюсь, она у Вас есть.
    Плюс, в методе find_matrix вы max_col присваиваете 0, а min_col присваиваете размер массива. Наверное, стоило сделать наоборот.
    Непонятно, чего Вы пытаетесь добиться строкой res[i][j] = matrix[i-1][j-1] в Add_zero_frame.
    Ответ написан
    5 комментариев
  • Как в Python выводить без, ?

    bobrovskyserg
    @bobrovskyserg
    Зачем такое может понадобиться? Должно быть, чтобы выстрелить себе в ногу:
    def main():
        a = str(90)
        b = str(678)
        c = str(670)
        loc = locals()
        print(''.join(loc[ch] for ch in "abc"))
    
    main()


    2 alex stephen : спасибо, поржал
    my_string = "a"
    mapping = [('a', 'ab'), ('b', 'bc'), ('c', 'cd'), ('d', 'de'), ('e', 'ef')]
    for k, v in mapping:
        my_string = my_string.replace(k, v)
    
    print(my_string)
    Ответ написан
    Комментировать
  • Существует ли литература по вирусоведению?

    @Espleth
    Вы никогда не сможете быть на 100% уверены в чистоте своей системы, даже если вы только что форматнули хард и поставили на него лицензионную винду.
    Антивирус - вообще штука сомнительная. Голова на плечах куда полезнее будет. А без нее, как вы сами понимаете, и антивирус не поможет.
    Соблюдая элементарные правила безопасности можно обезопасить себя с довольно высокой вероятностью и без антивируса, а именно: сомнительные файлы не открывать, сомнительные флешки не втыкать, сомнительные сайты не посещать. В общих чертах это все.
    Я, например, уже давно сижу без антивируса и с отключенным файрволом. Изредка из любопытства проверяю комп утилитами типа Dr. Web CureIt, но они как правило ничего не находят.
    Ответ написан
    Комментировать
  • Как исправить ошибку в коде на C++?

    maaGames
    @maaGames
    Погроммирую программы
    Я правильно понимаю, что ты сперва заполняешь массив С рандомными числами, а потом удивляешься, что у тебя рандомный результат?

    И проверка на положительность не нужна, rand возвращает числа в диапазоне [0:6535]
    Ответ написан
    3 комментария
  • Как работают макросы в c?

    @mamkaololosha
    Гуглите этапы компиляции. В частности - препроцессор
    https://en.wikipedia.org/wiki/C_preprocessor
    Ответ написан
    Комментировать
  • Лишние символы в c++, откуда?

    Во-первых, new char выделит память только для одного символа, а у вас их много. То есть уже в следующей строке (cin >> array) проезд по памяти. Если пишете в целях обучения и нельзя брать std::string, то выделяйте с запасом, например new char[256]; Освобождать при этом память надо будет при помощи delete[] array;
    Во-вторых, конец строки определяется по нулевому символу на конце. cin >> array делает это сам (пишет в конец array нулевой символ), а вы в своей функции нулевой символ не выставляете. Сделать это можно так:
    str[length_str] = '\0';
    Но надо иметь в виду, что памяти надо выделить [хотя бы] на 1 больше, чем length_str.

    Итого:
    1. Вам надо в обоих случаях память выделять под массив. В первом случае можно под 256 элементов. В идеале при этом читать не при помощи cin, а другими функциями, дабы избежать переполнения на случай, если введут строку более длинную.
    2. В reverse надо выставлять терминирующий нуль и исправить длину массива. Возможно вообще разворачивать строку по месту, т.е. менять местами буквы, а не создавать новую строку (в этом случае не надо ни память выделять, ни трогать терминирующий нуль, он останется на месте).
    3. Вам надо удалять выделенную память по окончании использования при помощи delete []
    Ответ написан
    2 комментария
  • Как записать в csv?

    sim3x
    @sim3x
    list1 = ['1', '2', '3']
    list2 = ['a', 'b', 'c']
    list3 = ['x', 'y', 'z']
    
    with open('eggs.csv', 'wb') as f:
        wr = csv.writer(f)
        wr.writerows([(list1[i], list2[i], list3[i]) for i in range(len(list1))])
    Ответ написан
    7 комментариев
  • Существуют ли НЕ видеоуроки по различным ЯП?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Есть такие штуки, книги называются, раньше говорят было модно.
    Ответ написан
    9 комментариев
  • Множственное наследование?

    dnovikoff
    @dnovikoff
    Ответ - оба метода.
    Обращаться к ним можно будет как Base1::foo() и Base2::foo()

    При обращении возникнет ошибка неоднозначности выбора метода, если не указать явно класс.

    П.С.
    ; ставится после определения класса, а после определения метода ее ставить не нужно.
    Ответ написан
    Комментировать
  • Множственное наследование?

    Scorpi
    @Scorpi
    Возникнет, при вызове этого метода нужно будет указывать конкретный класс:
    Base1::foo(); или Base2::foo();
    Ответ написан
    Комментировать
  • Как проверить сортируемый список с помощью булевой переменной?

    for i in range(len(a)-1, 0, -1):
        swapped = False
        for j in range(i):
            if a[j] > a[j + 1]:
                a[j], a[j + 1] = a[j + 1], a[j]
                swapped = True
        if not swapped:
            break


    upd: исправил циклы. После первого прохода мы знаем, что последний элемент списка максимальный (наш "пузырек" всплыл), после второго, что предпоследний - максимальный из оставшихся и т.д.
    Ответ написан
    Комментировать
  • Как составить уравнение?

    gbg
    @gbg Куратор тега Программирование
    Любые ответы на любые вопросы
    325/25=13;
    round((rand()*13))*25;
    round(rand()*13) даст целые числа от 0 до 13.
    Умножение целого числа на 25 даст число, кратное 25.
    25 прибавляем в конце, чтобы получить смещение.
    Ответ написан
    Комментировать
  • Как сгенерировать набор уникальных dictionary с помощью Python?

    @Dvvarreyn
    Написать схему в виде функции. Например
    def schema():
      return  {'name': random_name()
                   'surname': random_surname()
                   'age': random_age()
                   'years': random_year()
                 }
    Ответ написан
    Комментировать
  • Как на C++ проверить массивы на симметричность относительно центра?

    @Xano
    Да, сложные нынче пошли лабы, без тостера никак :)
    Неважно, сколько N ( {1,2,2,1}, например, симметричен )

    int i = 0, j = N -1;
    while ( i < j )
    {
    if ( v[i++] != v[j--] )
    {
    return false;
    }
    }
    return true;

    П.С. сплю уже, 2 массива. Ок, while->for ( int i =0; i < N; ++i ) if( v1[i] != v2[N - i - 1] ) return false; return true;
    Ответ написан
    3 комментария
  • Как сделать все ссылки кликабельными в html?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    в нотепаде ctrl+h включаешь регулярные выражения и заменяешь
    ((https?:\/\/)?(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})

    на
    <a href="http://$1">$1</a>
    возможно регулярку нужно будет поправить, тут уж по ситуации
    Ответ написан
  • Как обнулить std::cin и заставить его ждать ввода?

    @monah_tuk
    Входная программа завершила писать и ваша получила EOF. Всё, баста карапузики. Проверяйте статус ввода и завершайтесь - больше вы данных не получите, никогда и ни при каких условиях.

    Не верите? Отправьте на stdin не одну строку, а файл: выведется правильно файл, а потом посыпят пустые строки или последний токен - зависит от реализации.

    Обратите внимание на слово токен - у вас разделение по пробелу будет. Что бы читать строку, используйте std::getline().

    За флагами:
    www.cplusplus.com/reference/ios/ios/eof
    www.cplusplus.com/reference/ios/ios/fail
    www.cplusplus.com/reference/ios/ios/bad

    Ну а ваш код, по сути, должен стать таким:
    while (true) {
            std::getline(std::cin, line);
            if (!std::cin)
                break;
            std::cout << "out: " + line << std::endl;
        }


    обратите внимание, что если вы сделаете так:
    while (std::cin) {
            std::getline(std::cin, line);
            std::cout << "out: " + line << std::endl;
        }


    то вроде короче, и вроде работает, но будете постоянно выводить одну лишнюю строку (пустую или нет - от реализации), так что поверить статус стоит перед процессингом того, что получили.
    Ответ написан
    6 комментариев
  • Как унаследовать атрибуты базового класса в Python'е?

    yttrium
    @yttrium
    Если предполагается наследовать атрибуты, не следует их называть начиная с двойного подчеркивания, т.к. двойное подчеркивание запускает механизм name mangling
    Ответ написан
    Комментировать
  • Как подключать.h файлы во вложенных папках?

    donkaban
    @donkaban
    Умею рисовать тени
    Просто мимо проходил.
    Я бы советовал использовать вместо #pragma once классические include guards. На то есть несколько причин (и почти все они неважны, если вы под виндой)

    1. Статический анализатор clang часто используется внутри разных IDE и редакторов, просто запуская анализ для каждого файла проекта. Воспримая хедер как файл реализации он обязательно ругнется на прагму, чего в случае с обычными гвардами не произойдет
    2. GCC имеет отдельную оптимизацию дерева сборки, основанную на гвардах, прагмы же не обрабатываются.
    3. Если у вас в проекте несколько симлинков (скажем билдсистема построила по каким-то нуждам) на один хедер - то прагма не поможет, все упадет.
    Ответ написан
    Комментировать