Задать вопрос
  • Какие есть альтернативы getch() в си?

    @res2001
    Developer, ex-admin
    Под какую ОС разрабатываете?
    Если винда, то там не надо никакой библиотеки - функция входит в стандартную библиотеку.
    Вам нужно лишь в код подключить заголовок conio.h и использовать не getch(), а _getch(). getch() объявлена микрософтом устаревшей.
    https://docs.microsoft.com/ru-ru/cpp/c-runtime-lib...
    https://docs.microsoft.com/ru-ru/cpp/c-runtime-lib...
    getch() использует вызов WinAPI для низкоуровнего чтения из консоли: ReadConsole(). Вы можете его использовать в своей программе то же вместо getch().
    https://docs.microsoft.com/ru-ru/windows/console/r...
    Если вы программируете на С/С++ под винду полюбите документацию MSDN - это очень хороший ресурс, к тому же от производителя.
    Ответ написан
    2 комментария
  • Лицензирование Windows: есть документы, но нет наклеек - можно ли использовать?

    @res2001
    Developer, ex-admin
    Наклейки не интересуют проверяющие органы. Им важны финансовые документы, доказывающие факт приобретения лицензий. Никто не пойдет по рабочим местам обыскивать системники на предмет наличия наклеек, все вопросы решаются не выходя из бухглатерии (обычно не выходя из кабинета руководителя).
    Ответ написан
    2 комментария
  • ALT+F4 через BAT как?

    @res2001
    Developer, ex-admin
    Через bat не возможно.
    Для этого нужно использовать сторонние утилиты типа autoit или nircmd.
    Ответ написан
  • Почему первый цикл запускается повторно?

    @res2001
    Developer, ex-admin
    Если удалить эту часть, то программа работает исправно, за исключением повторного исполнения первого цикла do while.

    Вы же сами повторно вызываете start_int() в предложении while, отсюда и повторный вызов.
    Вам нужно передать в end_int() сохраненный результат выполнения start_int. И в while сравнивать с ним, не вызывая start_int повторно.
    Ответ написан
    3 комментария
  • Как обработать код С/С++ внутри Python(с живым примером в виде кода)?

    @res2001
    Developer, ex-admin
    Введение в тему применения Python C API не плохо описано у Бизли в его подробном справочнике. Остальное придется осваивать из документации по ссылке выше.
    Но это не единственный вариант использования Си библиотек в питоне. Тема достаточно обширна.
    Ответ написан
    Комментировать
  • Как синхронизировать действия пользователей и данные в многопользовательской системе?

    @res2001
    Developer, ex-admin
    Вы описываете типичную ситуацию при работе с базами данных.
    Обычно применяются 2 стратегии:
    1. ничего не делаем, побеждает последний записавший данные. Запись, конечно, должна быть атомарной, т.е. если 2 пользователя одновременно пишут, то в итоге должны быть записанны данные либо первого пользователя либо второго, но не нечто среднее.
    2. блокировка доступа на изменение, в этом случае описанная ситуация просто не возникнет.
    Эти же подходы вполне применимы и в вашем случае.
    Оба подхода имеют свои достоинства и недостатки, нужно оценить вашу конкретную ситуацию и выбрать более подходящий подход.
    Ответ написан
  • Ошибка «Системе не удается найти указанный путь». C++ Как пофиксить?

    @res2001
    Developer, ex-admin
    У вас программа не собралась, поэтому и файл не найден. Смотрите внимательно окно вывода компилятора внизу, там написано
    0 - successed, 1 - failed

    Это означает ошибка при компиляции. Дальше смотрите окно "error list", там будет указана конкретная ошибка(и).
    В данном случае ошибку вам уже обозначил Roman выше.
    Ответ написан
    Комментировать
  • Как отсортировать массив, чтобы он работал (язык СИ)?

    @res2001
    Developer, ex-admin
    Было бы лучше, если бы вы указали в вопросе, какие конкретно проблемы, что выводит и т.п.
    На вскидку: в этой строке выход за границы массива дважды:
    if (a[i] == a[i-1] && (i+1== N || a[i+1] != a[i]))
    Первый раз при i=0 в a[i-1], второй раз при i = N - 1: a[i+1].
    Видимо вам нужно первый и последний элемент массива обрабатывать отдельно (не в общем цикле).
    Да и в целом, как мне кажется, вы не правильно решаете задачу.
    Ответ написан
  • Как задать матрицу X[5][7] на С?

    @res2001
    Developer, ex-admin
    int X[5][7];
    Ответ написан
    Комментировать
  • Почему не работает русский язык в консоли?

    @res2001
    Developer, ex-admin
    Сохраните исходники в кодировке cp866 - это кодировка по умолчанию в консоли винды.
    Если у вас лаба или какой-то тест, то этого будет достаточно.
    Но на самом деле это не решение проблемы. В консоли винды кодировку можно менять в самой консоли с помощью команды chcp. Поэтому нормальным выходом из ситуации будет:
    1.Исходники писать в UTF8 и использовать широкие символы для хранения строк.
    2.Узнаем кодировку консоли
    3.Перед выводом перекодируем текст в кодировку консоли, только потом выводим
    4.После ввода текста перекодируем введенный текст в UTF и дальше работаем с UTF.

    Вы так же можете программно поменять кодировку консоли под ту в которой у вас исходники. Но я не рекомендую этого делать в рабочем проекте.
    Ответ написан
    22 комментария
  • Что такое поток в Linux (pthread_create())?

    @res2001
    Developer, ex-admin
    У вас программа завершается раньше, чем успевает отработать поток (вывести на экран информацию). После завершения основного потока (функция main) весь процесс завершается, в т.ч. и запущенные потоки.
    Для исправления ошибки вам нужно в main() после старта потока подождать окончания его выполнения: pthread_join(). Вообще выполнять join нужно для каждого "присоединенного" потока, а по умолчанию они все присоединенные.

    Процесс - это контейнер для потоков. В каждом процесс есть минимум один поток - основной (main()). Планировщик операционной системы планирует потоки.
    Для ОС запустить поток проще и дешевле (по ресурсам), чем запустить процесс.

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

    stdin и прочие потоки ввода/вывода - это совсем другая сущность - это потоки данных.
    pthread_create() - создает поток выполнения. Ощутите разницу!
    Ответ написан
    Комментировать
  • С точки зрения закона РФ, правомерно ли использование openssl для ЭЦП и шифрования?

    @res2001
    Developer, ex-admin
    На сколько я знаю существуют сертифицированные версии openssl с ГОСТовскими алгоритмами. На вскидку примеров не приведу, но в свое время находил в инете такую информацию. Гуглите.

    Тут еще вопрос в другом - наша крипта, даже если реализует одни и те же алгоритмы не совместима друг с другом (по крайней мере несколько лет назад эта проблема была). Поэтому вам придется использовать то ПО, которое использует ЦС и ваш контрагент. Боюсь, что выбора практически нет. Хотя, возможно, что-то уже сдвинулось в этом отношении.
    Ответ написан
  • Почему в массив размером N можно положить больше чем N элементов?

    @res2001
    Developer, ex-admin
    В malloc при передаче в качестве аргумента нуля возвращаемое значение не определено (implementation-defined). Так что фиг знает что там вам вернул маллок. Но раз программа не падает, то, возможно, он вернул какой-то указатель на стек, а в стеке у вас есть ~8МБ - развлекайтесь.
    В общем не нужно так делать. На другом компиляторе (или на том же, но другой версии) поведение может быть совсем другим.
    Ответ написан
    Комментировать
  • Как отфильтровать по дату в поле timestamp?

    @res2001
    Developer, ex-admin
    WHERE date >= '2020-01-01 00:00:00' and date <= '2020-01-01 23:59:59'

    Ну или выделите из timestamp дату и сравните только с датой.
    Дату лучше представлять в более универсальном формате: 'YYYYMMDD HH:MM:SS'
    И напишите какой сервер используете.
    Ответ написан
    Комментировать
  • Как в данном случае записывать результат недоигранной игры в бинарный файл?

    @res2001
    Developer, ex-admin
    Сохраняйте имена игроков и массив cells. Т.к. вся информация символьная, то ваш бинарный файл будет вполне себе текстовый. Есть смысл и делать его именно текстовым, где в каждой строке будет находится один элемент данных.
    Ответ написан
    Комментировать
  • Как кидать исключения при работе с try catch?

    @res2001
    Developer, ex-admin
    Сишные функции не вызывают исключений. В Си их просто нет. Поэтому помещать их в try/catch нет смысла - проверяйте возвращаемые значения по старинке. Если хотите, можете написать обертки для стандартных функций, генерирующие исключения в случае ошибки. А еще лучше использовать std::fstream - вы же пишите на С++, так и пользуйтесь плюсовой стандартной библиотекой, а не Сишной.
    void foo() {
        int *smth;
        try {
            smth = new int[100];
            if (5 < 4) {
                std::runtime_error("Беда");
            }
        } catch (std::runtime_error &e) {
            e.what();
        }
        delete[] smth;
    }

    new генерирует std::bad_alloc, если произойдет исключение - память не выделилась и ничего удалять не надо.
    Ответ написан
    2 комментария
  • Как удалить элемент массива?

    @res2001
    Developer, ex-admin
    Прежде всего я не понимаю, как выбить этот элемент из массива

    В вопросе уже есть ответ на вашу непонятку:
    для чего выполнить сдвиг влево.

    Т.е. вам не нужно фактически удалять найденное значение (к тому же это и не возможно сделать), нужно просто передвинуть остающиеся элементы на одно значение. Таким образом массив не уменьшиться в размере, но последний элемент будет не актуальным, после сдвига ему можно присвоить некоторое значение, которого не может быть в существующих элементах (если такое возможно). Копировать элементы массива можно просто с помощью memmove().
    Искать элемент в отсортированном массиве нужно используя двоичный поиск.
    Ответ написан
    Комментировать
  • Как дать разрешение для выполнения скриптов в Ubuntu?

    @res2001
    Developer, ex-admin
    Стандартное разрешение никсов на выполнение: sudo chmod +x <имя файла скрипта>
    При этом в скрипте первая строка должна быть чем-то вроде: #!/bin/bash
    Варианты могут быть разные, в зависимости от ЯП на котором написан скрипт, первые 2 символа обязательные.
    Ответ написан
  • Ошибка при установке библиотеки SciPy, как правильно установить?

    @res2001
    Developer, ex-admin
    Использую Анаконду с уже предустановленными библиотеками. Есть и другие подобные сборки.
    Ответ написан
  • Как правильно запускать exe через bat?

    @res2001
    Developer, ex-admin
    Из батника ехе запускается очень просто: Y:/finalversion.exe
    Ваша конструкция (через start) то же должна работать, но это лишнее.
    Другой вопрос как вы запускаете сам батник.
    Ответ написан
    1 комментарий