Задать вопрос
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, Жмете кнопку на панельке "Вставить исходный код", выбираете соответствующий ЯП из списка. В поле редактирования появляется открывающий тег и завершиющий, типа как в HTTP или XML. Внутрь тегов вставляете код.
    Можно сначала вставить код, затем его выделить, а потом жать кнопку. Возможно так будет проще.
  • Как правильно установить C на Windows 10?

    @res2001
    Василий Дёмин, Могу точно сказать, что в MSVS 2017 этого уже не было.
    У меня был кросс-платформенный проект с использованием С11 некоторое время назад и там мы его собирали в т.ч. и компилятором msvc 2017.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, Покажите код, который у вас получился в итоге, заверните код в тег code (есть кнопка в панели инструментов). А так же покажите часть вывода и чему равно N в этом эксперименте.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, Программа выполняется так как она записана сверху вниз. Начальная точка выполнения программы функция main().
    Смотрим main() что мы видим:
    0. Пропущу незначащие операции.
    1. Выделяется память для массива floatов, указатель сохраняется в Arr2. Тут этот массив не инициализирован, это значит, что там содержится мусор, который был в памяти когда-то, до того как эту память начала использовать ваша программа.
    2. Вы вызываете ShellSort() и передаете туда не инициализированный массив. ShellSort() сортирует мусор. Тут опустим момент о том, что ShellSort ждет массив интов, а вы передаете массив floatов.
    3. Вы инициализируете Arr2 в цикле случайными числами, перезатирая всю работу ShellSort.

    Просто поменяйте местами 2 и 3 пункт.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412,
    невозможно преобразовать аргумент 1 из "float *" в "int []"

    См.п.1 предыдущего моего сообщения. Функция ждет на вход массив int, а вы передаете указатель на float. Отсюда ошибка.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, 1. Функция ShellSort() принимает на вход массив intов. Это очевидно, если посмотреть на сигнатуру функции. Поэтому не важно, что вы реально передаете при вызове функции, внутри функции mass будет восприниматься как массив intов.
    2. Вы передаете в ShellSort() не инициализированный массив Arr2. В нем содержится мусор.
    Я подозреваю, что вам сначала нужно инициализировать Arr2 с помощью случайных чисел, а уж потом вызывать ShellSort().
    3. Если уж вы пишете на С++, то пользуйтесь и плюсовым инструментарием. Например, вместо "сырого" динамического массива используйте std::vector. Сейчас у вас утечка памяти при выходе из main(), с std::vector этого не будет - он сам почистит за собой память.
    4. Вот эта строка не имеет смысла для динамического массива:
    int n = sizeof(Arr2) / sizeof(Arr2[0]);
    Так можно узнать размер массива только в случае статического массива.
    Хотите убедится в этом - выведите на экран значение sizeof(Arr2) и sizeof(Arr) при N == MaxNum.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, Код определения массива, вызова функции и код функции в студию, а так же текст ошибки.
    Можете оформить отдельным вопросом, т.к. к текущему вопросу это уже не имеет отношения.
  • Openvpn tcp режет скорость, как увеличить?

    @res2001
    120gramm, Мерить скорость для ВПН надо до вашего ВПН клиента, а не до абстрактного сервера не известно где находящегося. Скорости на разных маршрутах могут быть разные.
    Если вы на замере видите большие отличия от заявленной скорости, можно посмотреть с помощью traceroute на каком участке конкретного маршрута наибольшие задержки - возможно там и режется скорость. Поставщик VPS может быть не при делах.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412,
    если мне нужно отсортировать этот массив с помощью сортировки Шелла, то вставлять его нужно куда?

    В вашем вопросе нет массива.
    Я не в курсе про сортировку шелла, но на вики есть реализация на Си. Для плюсов вполне сгодится.
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, Вообще, начиная с С++11, в плюсах довольно много генераторов случайных чисел, а так же есть механизмы, позволяющие получать рандомное число в заданном диапазоне.
    Посмотрите пример тут:
    https://stackoverflow.com/questions/5008804/genera...
    Для справки:
    https://en.cppreference.com/w/cpp/numeric/random
  • Почему rand() не выводит нужное значение от -0.1 до 0.2?

    @res2001
    MIYA112412, По ссылке в примере показан принцип запихивания возвращаемого rand() значения в требуемый диапазон.
    Сама rand() возвращает целое в диапазоне [0; RAND_MAX], где RAND_MAX константа (обычно 0xFFFF, но не обязательно, ее значение не регламентируется стандартом).
    По сути приведение к требуемому диапазону - обычная математика.
    Первое действие rand()/RAND_MAX - приводит возвращаемое значение в диапазон [0;1], приведение типов нужно, чтоб выполнялась операция с плавающей точкой, а не целочисленное деление.
    Отсюда уже очень просто перейти к любому другому диапазону с помощью умножения и сложения.

    Например чтоб получить рандомное значение в диапазоне [10;30]:
    static_cast<int>(10 + static_cast<double>(rand())/RAND_MAX*20)
  • Openvpn tcp режет скорость, как увеличить?

    @res2001
    Скорость канала оператора VPS не показатель, т.к. полно промежуточных узлов со своими каналами и скоростями.
    Проведите тестирование:
    Какую скорость показывает, например, iperf.
    Какая скорость при использовании ssh/scp?
    Если в openvpn использовать UDP скорость будет выше?
  • Как правильно установить C на Windows 10?

    @res2001
    Плюсую.

    Но не совсем согласен по MSVS. Да, микрософт официально стандарты Си не поддерживает, но большая часть стандарта С11 реализована. Не реализованы (или частично реализованы) какие-то не важные или не нужные с точки зрения MS вещи, например VLA (и правильно на мой взгляд) или complex.h (многие не знаю что это есть в стандарте).
    Думаю для проектов ТС реализованного функционала будет вполне достаточно. Так что вполне рекомендую MSVS или Visual Studio Build Tools, как более легковесный вариант (только компилятор и сопутствующие утилиты без IDE). По моему компилятор микрософт наилучшим образом подходит для разработки под винду.

    Конечно, если захочется проверки строго соответствия стандарту Си, то придется выбирать другой компилятор, т.к. микросовтовский просто не умеет это делать.

    WSL - тут придется программировать под линукс, а не под винду. Внутрь линукса в WSL надо будет поставить штатными средствами линукса компилятор и т.п. WSL по сути виртуальная машина с линуксом, но плотно интегрированная в винду, поэтому работает быстро и возможно требует меньше ресурсов, чем типичные гипервизоры типа virtualbox и т.п. Могут быть определенные сложности с GUI приложениями, хотя в последних версиях WSL уже можно получить рабочий стол линукса, но для этого надо предпринимать дополнительные телодвижения, т.к. по умолчанию никакой поддержки GUI нет. Тут вам придется писать программу именно для линукс (потом можете ее запускать на обычном линуксе), WinAPI будет не доступно.

    msys2+mingw/clang - альтернативный вариант. Поддержка компиляторами стандартов Си, возможность использования WinAPI - все присутствует.
  • Как скрыть приложения на виндовс 11?

    @res2001
    Джавад Султанов, Если программа заработала в портабельном режиме, то у нее не возникнет проблемы с сохранением проектов. Максимум, что может быть - она не найдет каталог по умолчанию, куда сохраняет проекты. Этот каталог в любом случае можно либо выбрать, либо создать руками, если очень надо. Если программа работает, то я лично не сталкивался с подобной проблемой.

    Основная задача - заставить программу запускаться без установки.

    Собственно установка программы (то что делает инсталлятор) это по сути:
    1. копирование исполняемых файлов программы на диск
    2. возможно создание в реестри каких-то веток и ключей, необходимых для работы программы
    3. возможно создание в файловой системе каких-то дополнительных файлов и каталогов, которые будут использованы программой
    4. Если в программе используются свои COM объекты, то регистрация этих объектов.
    5. Добавление переменных окружения, если нужно.
    6. создание ярлыков в меню пуск и на раб.столи или еще где-то
    7. добавляет в определенную ветку в реестре информацию о том, что была установлена программа, путь куда она была установлена и что надо сделать что бы удалить программу.

    Пункты 1-5 ты можешь сделать вручную без инсталлятора. Если программа не использует 2-5 пункты, то инсталлятор по сути просто распаковывает файлы в каталог на диске и создает ярлык.
    Ты легко можешь это сделать сам. И в этом случае программа не будет считаться установленной в ОС, т.к. ты установил ее руками.
    Именно пункт 7 отвечает за то, что ОС видит, что программа установлена и знает, что надо сделать, чтоб ее удалить. Если его не делать, а сделать все остальное, то программа будет работать вполне корректно, но система не будет знать о том, что она установлена.
  • Как скрыть приложения на виндовс 11?

    @res2001
    Джавад Султанов,
    А если следовать точным инструкциям в интернете, не делая что то самому по себе?

    В интернете много разного пишут. Если что-то пойдет не так (а там есть чему пойти не так), ты кому будешь притензии предъявлять? Писателю гаидов?
    В БИОСе нельзя разделить диск на разделы. Так что ты явно плохо представляешь себе, что ты делать собрался.
    но в этом случае как я понял до конца учебного года все мои программы на обеих профилях будут удалены? Если использую портабельный метод?

    Тебе не все ли равно будут они у тебя "удалены" или нет? Если ты можешь пользоваться программой, то не имеет значение то, что о винда не видит, что эта программа установлена!
    Я же уже много раз писал - портабельная программа не устанавливается в систему (т.е. не устанавливается инсталлятором). Она просто копируется на диск (грубо говоря - перетаскиваешь каталог с программой на раб.стол. Все!). Естественно нет никаких аттрибутов установленной программы - ярлыков в меню пуск и на раб.столе и прочего (все это делает инсталлятор, который не используется). Но программу можно попытаться запустить вручную.
    И да, не всегда это может сработать. Часто не достаточно просто скопировать файлы программы, нужны еще дополнительные действия. Какие конкретно действия могут потребоваться зависит от программы. Так что с каждой программой надо разбираться отдельно.
  • Как скрыть приложения на виндовс 11?

    @res2001
    Джавад Султанов,
    она удалилась с обеих профилей

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

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

    @res2001
    Джавад Султанов,
    Можно ли разделить свой ссд на 2 части(виртуальные)

    Диск можно разделить на части, только они не виртуальные. Части диска называются разделы. Именно разделы вы видите в проводнике под буквами дисков. Посмотреть текущую конфигурацию разделов можно в менеджере дисков. Делить на части, теоретически можно тем же менеджером, но лучше использовать какую-либо диагностическую загрузочную флешку, как правило там есть необходимые инструменты для подобных операций. Могу порекомендовать набор adminpe.ru. Сам неоднократно его использовал. Для разбиения можно воспользоваться Acronis Disk Director или чем-нибудь от Paragon, в комплекте оно все есть.
    На счет портабельности. Да, конечно, вам потребуется предпринять некоторые телодвижения, чтоб добиться цели. Я так и думал, что у вас все программы уже установлены, соответственно все упрощается - просто копируете программы в профиль, затем штатно удаляете установленные и пытаетесь запустить из скопированного комплекта. После того как вы штатно удалите программы они перестанут быть видны во втором профиле.
    Как я уже писал - успех не гарантирован, но обычно можно добиться портабельного поведения. Простого копирования может быть не достаточно, но с него можно начать, а дальше разбираться с каждой программой и ее зависимостями.
  • Как скрыть приложения на виндовс 11?

    @res2001
    Джавад Султанов, Возможно. Но, если загрузочное меню увидит проверяющий, то это сразу вызовет подозрение у него :-) Увидеть его он сможет, если вы будете включать комп при нем.
    Если есть 2 физических диска в ноуте, то можно 2 ОСи поставить каждую на свой диск. В БИОСе выставить загрузку по умолчанию с диска на котором будут стоять учебные программы, а загрузку ОСи с с дополнительными программами можно выбирать через вызов Boot menu БИОС, обычно для этого в БИОС есть горячая клавиша. Тогда загрузочное меню ОСи можно удалить, т.е. убрать там дополнительный пункт. Как-то так.

    Я бы для начала попробовал вариант с портабельной версией и вторым пользователем.
    Если это нужно для игр, то должно сработать - игрушкам как правило не требуются администраторские права.
    Самый простой вариант:
    1. Устанавливаете программу (игру) как обычно с помощью установщика из-под второго пользователя. Если там есть вариант установки "для одного пользователя" используйте его и при выборе каталога установки укажите каталог в профиле пользователя (скорее всего программа сама выберет какой-то каталог в профиле). И в принципе этого может быть достаточно.
    2. Если варианта установки "для одного пользователя" нет, то устанавливайте как обычно. Запомните каталог куда программа установилась (скорее всего это будет где-то в "c:\Program Files".
    2.1. Копируете каталог с программой в профиль пользователя (можно просто на рабочий стол). Нужно именно скопировать, а не перенести!
    2.2. Штатным образом удаляете программу. Она удалится только из "c:\Program Files".
    2.3. Пробуете запустить программу из профиля. Возможно для правильного запуска надо будет посмотреть куда ссылаются ярлыки штатно установленной программы. Ярлыки можно скопировать из штатно установленных и поправить в них пути запуска.
    Если программа достаточно простая то этих действий может быть достаточно. Игры как правило "простые" не смотря на их размер и всю внутреннюю сложность. Например , WoT я когда-то использовал именно по такой схеме.
    Но возможно, программе требуются какие-то ее ветки в реестре или дополнительные файлы/каталоги в профиле или еще где-то. В принципе это все можно отследить и узнать что программе нужно. Но это уже сложнее. Но все таки есть программы, которые практически не реально сделать портабельными, например MS Office и т.п.
  • Как вывести все слова, в которых 2-ая буква будет "n"?

    @res2001
    Т.к. "n" буква английская, то вам пофигу на все остальные русские бувы.
    Главное, что бы вводимый текст был в однобайтовой кодировке (CP1251, CP866, ...), а не в Unicode.
  • Как скрыть приложения на виндовс 11?

    @res2001
    Джавад Султанов,
    но как переключаться между ними?

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

    Учетная запись не имеет значения, т.к. приложения будут установлены на виртуальный шифрованный диск, то они и запускать будут с него, и работать будут с ним, не зависимо из-под какого пользователя вы запускаете программу.