• Как правильно передать двумерный массив в функцию?

    @res2001
    Developer, ex-admin
    Если вы изучаете С++, то лучше использовать классы стандартной библиотеки для массивов. В функцию передаете ссылку на класс.
    В чистом Си передается просто указатель и размер в отдельном параметре (или 2 размера для двумерного массива).
    Сам двумерный массив может быть представлен в двух вариантах:
    1.Как массив указателей, где каждый указатель представляет собой одномерный массив. Нужно отдельно выделять память для массива указателей и для каждого одномерного подмассива и аналогично освобождать. В этом случае возможна операция индексации обоих измерений массива, при этом массив указателей и каждый подмассив могут находится в разных участках памяти.
    void foo(int ** arr, int N, int M)
    {
    ...
    }
    int main()
    {
      int N = 10; // первое измерение массива
      int M = 20; // второе измерение массива
      int ** arr = new int * [N];
      for(int i = 0; i < M; ++i)
      {
         arr[i] = new int[M];
      }
      ...
      foo(arr, N, M);
      ...
      // Тут освобождение массива аналогично выделению в обратном порядке
    }

    2.Как одномерный массив размерностью N * M. В этом случае память под массив выделяется и освобождается вся оптом одним куском, но операция индексации первых размерностей не возможна. Но можно легко переходить от двумерного массива к одномерному, сразу вычислять нужный индекс или просто перемещаться по элементам массива с помощью временного указателя.
    void foo(int * arr, size_t N, size_t M) 
    {
      ...
    }
    int main()
    {
      int N = 10; // первое измерение массива
      int M = 20; // второе измерение массива
      int * arr = new int * [N*M];
      int * arrcur = arr;  // временный указатель для обхода массива
      int * arrone = arr;  // вариант с переходом к одномерному массиву
      for(int i = 0; i < N; ++i)
      {
        for(int j = 0; j < M; ++j)
        {
            // Вариант с вычислением адреса текущего элемента по индексам
           *(arr + i * M + j) = rand() % 10;   // вычисление нужного индекса на месте
           // Вариант с обходом массива с помощью временного указателя
           *arrcur = rand() % 10; 
           ++arrcur;  // переход к следующему элементу
           // Вариант с переходом к одномерному массиву
          arrone[j] = rand() % 10; 
        }
        arrone += M;
      }
      ...
      foo(arr, N, M);
      ...
      delete[] arr;
    }
    Ответ написан
  • Какую книгу по C++ стоит прочитать новичку?

    @res2001
    Developer, ex-admin
    Хорошая книга, можете ее продолжать изучать, а главное делайте побольше примеров, возможно в дальнейшем захочется реализовать что-нибудь свое. Тут главное практика, а не то какую книгу читаете.
    Ответ написан
    Комментировать
  • Как подключиться с win 7 на win 7 по RDP?

    @res2001
    Developer, ex-admin
    Кроме всего прочего на сервере должна работать служба удаленных рабочих столов и должен быть открыт порт tcp\3389.
    Ответ написан
  • Какие могут быть причины не читаемости файла dbf?

    @res2001
    Developer, ex-admin
    Битый файл, т.е. нарушена его структура. Откройте любым редактором/вьювером DBF, хоть тем же екселом, как предлагал shurshur , но лучше чем-то более специализированным (CDBF хорошая утилита для этих целей).
    Ответ написан
    Комментировать
  • Какие существуют бесплатные внешние программы в Windows 10 для ручного резервного копирования в Onedrive?

    @res2001
    Developer, ex-admin
    copy, xcopy, robocopy, проводник и все это доступно из коробки.
    Ответ написан
    Комментировать
  • В каком энкдодинге записывается в .txt?

    @res2001
    Developer, ex-admin
    Что лежит в msg, то и запишется в файл, без какого-либо перекодирования.
    Если нужно по другому - перекодируйте сами. Если нужно сменить кодировку символов, можно использовать библиотеки или встроенные API функции.

    PS: энкдодинг?
    Ответ написан
    3 комментария
  • Записать значения дискретных каналов в бинарный файл. С++?

    @res2001
    Developer, ex-admin
    Инициализируя вот так массив:
    int ChValue [6] = {000011};
    Вы получите в ChValue[0] = 9 - десятичное 9 - это восьмеричное 011. По правилам языка, целочисленные числовые константы, начинающиеся с 0 являются восьмеричными. В остальных элементах массива будут 0.
    Вы хотите записать шесть значений в одну двухбайтовую переменную (хотя было бы достаточно и 1 байта).
    Для этого вам нужно использовать битовые операции.
    Например:
    // ChValue - исходный массив значений по каждому каналу
    int ChValue [6] = {0, 0, 0, 0, 1, 1};
    uint16_t val = 0;
    for(int i = 0; i < 6; ++i)
    {
      if(ChValue[i] == 1)
         val |= 1 << i;
    }
    // в результате в val будет установлен в 1 бит с номером канала в котором в ChValue единица.

    После этого просто запишите val в файл.
    Ответ написан
  • Как удалить папку systemprofile в windows 10?

    @res2001
    Developer, ex-admin
    Дайте себе права на запись на эту папку и все вложенные объекты. Возможно понадобится изменить владельца, а потом дать права.
    Ответ написан
  • Каким сниппетом в .bat(cmd) найти в директории file.db и скопировать его в другую папку?

    @res2001
    Developer, ex-admin
    Искать можно так:
    for /f "tokens=* delims=" %%a in ('dir /b /s d:\aaa\file.db') do (
       echo.%%a
    )

    На счет скопировать: как вы планируете копировать, если будет найдено больше одного файла? В простейшем случае файлы затрут друг друга и останется только последний найденный.
    Ответ написан
    4 комментария
  • Как распределять свои проекты?

    @res2001
    Developer, ex-admin
    Освойте утилиту make и makefile.
    Ответ написан
    1 комментарий
  • Быстродействие за счет ногопоточьности в процессорах с помощью pthread, Cи?

    @res2001
    Developer, ex-admin
    Технологий параллельной обработки несколько. Многопоточность одна из них, pthread - POSIX стандарт поддержки многопоточности. В винде есть свой API для работы с потоками. Многопоточность, пожалуй, самый простой вариант распараллелить программу, но есть и свои тараканы.
    Профессор, скорее всего, имел ввиду другой вариант параллельной обработки, без контекста не понять.
    Ответ написан
    Комментировать
  • Как удалённо настраивать сетевые параметры (ip-адрес и т.п.)?

    @res2001
    Developer, ex-admin
    Это возможно только если само устройство это умеет, иначе никак.
    Роутеры/коммутаторы обычно поддерживают управление по ssh, а это уже можно как-то автоматизировать. Но тут нужно плясать от конкретной железки, чего-то универсального нет.
    Ответ написан
  • 44 года можно ли еще стать востребованным специалистом в IT?

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

    @res2001
    Developer, ex-admin
    1. unsigned int на большинстве платформ - 4 байта, поэтому используйте более подходящие типы для сигналов: uint16_t например.
    2. Раз количество каналов меняется, то есть смысл отделить заголовок (n и timestamp) от собственно данных каналов. Заголовок пишете отдельно, а данные каналов храните в массивах соответствующих типов и записываете целиком массив.
    3.Т.к. у вас не известно заранее количество каналов, то стоит писать в файл эту информацию (включить количество аналоговых и дискретных каналов в заголовок). 4.Так же есть смысл ввести в заголовок некую преамбулу (набор из 2-5 символов идентифицирующих ваш тип файла) и версию файла. Это поможет при последующих модификациях структуры файла.
    5.Удобно проверять получившийся файл с помощью HEX редактора 010 Editor - там можно на бинарный файл накладывать структуру и просматривать уже структурированный файл. Структуры описываются в Си подобном стиле, так что научится можно за 20 минут на готовых примерах.
    Ответ написан
    Комментировать
  • Как из программы на c++ отправлять ответ на запрос в консоль linux?

    @res2001
    Developer, ex-admin
    Генерируйте random_port > 1024 и запроса на ввод пароля не будет.
    Ответ написан
    Комментировать
  • Как разбить строку на подстроки?

    @res2001
    Developer, ex-admin
    Например ваша строка передается батнику в первом параметре:
    echo.%~nx1
    Ответ написан
  • Как редактировать скрытые расширенные атрибуты файлов в windows?

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

    @res2001
    Developer, ex-admin
    Возможно битая память.
    Скачайте любой диагностический загрузочный образ и запустите проверку памяти.
    Можете воспользоваться adminpe.ru там в загрузочном меню есть testmem.
    Еще вариант - битый диск, но больше похоже на память.
    Ответ написан
    Комментировать
  • Разделить число на разряды c++?

    @res2001
    Developer, ex-admin
    Откройте для себя операцию взятия остатка от деления - % (в вашем случае на 10), с ее помощью ваша задача решается тривиально.
    Ответ написан
    Комментировать
  • Как избавится от ошибки?

    @res2001
    Developer, ex-admin
    Запустите вручную команду ffmpeg с такими же параметрами (имя файла, конечно подставьте какое-нибудь) - отрабатывает без ошибки?
    Модифицируйте команду так:
    FORFILES /M *.mp4 -C "cmd /c echo ffmpeg -i @file -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts cut/@file.ts"
    Это просто напечатает команду, проверьте команда именно такая как вы ожидаете.
    Ответ написан