Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования C++ (Практикум, часть 1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.28 Mб
Скачать

Приложение 2. Создание файла с результатами препроцессорной обработки в среде Visual Studio

  1. В окне Обозреватель решений Visual Studio выберите проект.

  2. В обозревателе решений щёлкните правой кнопкой мыши по узлу проекта и выберите пункт Свойства (Properties).

  3. В окне Property Pages выберите пункт С/С++:

  1. Щёлкните для выбора страницы свойств Preprocessor (Препроцессор). Измените значение свойства Generate Preprocessed File (Создание предварительно обработанного файла) с No на Without Line Numbers (/EP /P):

Нажмите на кнопки Применить и ОК.

  1. Нажмите функциональную клавишу F7. Пусть имя проекта pr1, а имя файла с программой pr1.cpp. Тогда в папке pr1/pr1 появится файл pr1.i с результатами препроцессорной обработки, но файл pr1.obj не создаётся. Чтобы создать файлы pr1.obj и pr1.exe, надо в странице Preprocessor вернуть установку значения свойства Generate Preprocessed File на No и скомпилировать программу (нажать F7, Build Solution). Чтобы выполнить программу, нажмите Ctrl+F5.

  2. Откройте файл с результатами препроцессорной обработки pr1.i и проанализируйте его. Для этого в меню выберите File, Open, File:

Создание файла с результатами препроцессорной обработки из командной строки

  1. Откройте окно Командная строка Visual Studio. Для этого нажмите кнопку Пуск, последовательно выберите пункты: Все программы, Microsoft Visual Studio, Visual Studio Tools (Средства Visual Studio), а затем выберите пункт Visual Studio Command Prompt (Командная строка Visual Studio).

  2. Перейдите в папку, в которой находится файл с текстом программы. Пусть файл pr1.cpp с текстом программы находится в папке C:\Cprograms. Для того, чтобы сделать эту папку текущей, в командной строке введите cd \Cprograms, а затем просмотрите содержимое папки, введя команду dir:

  1. Для запуска компилятора в командной строке введите:

cl /EP /P /C pr1.cpp

После выполнения команды в папке C:\Cprograms создаётся файл pr1.i с результатами препроцессорной обработки программы:

В этом файле сохраняются комментарии и не добавляются директивы #line. Просмотреть содержимое данного файла можно с помощью текстового редактора.

Препроцессорная обработка в GNU C++

Опция -E указывает драйверу g++ пропустить исходный код через препроцессор CPP и не производить никаких дальнейших действий. По следующей команде будет выполнена последова­тельная предобработка исходного кода из файла prim.cpp и выда­ча результата предобработки на стандартное устройство вывода:

$ g++ -E prim.cpp

Расширение имени файла, принятый в GCC для результатов предобработки – .ii . Такой файл может быть выработан при использовании опции -o, например, так:

$ g++ -E prim.cpp -o prim.ii

Приложение 3. Использование генератора случайных чисел

Для генерации случайных чисел можно использовать сред­ства стандартной библиотеки, описанные в заголовке stdlib.h: функцию rand() и константу RAND_MAX.

Функция rand() при каждом обращении возвращает псевдо­случайное значение типа int из диапазона от 0 до RAND_MAX.

RAND_MAX – препроцессорная константа, определяющая предельное значение псевдослучайных целых чисел, формируе­мых функцией rand(). Конкретное значение RAND_MAX зависит от реализации (конкретного компилятора), но не может быть менее 32767 (требование Стандарта языка С).

Пусть надо получить целое случайное число из диапазона от a до b (a < b). Тогда его можно вычислить по формуле:

rand()*(b - a)/RAND_MAX + a

Например, надо получить целое случайное число из диапазона от -1000 до +1000. Его можно вычислить по формуле:

rand()*(1000 + 1000)/RAND_MAX - 1000

Например, надо получить целое случайное число из диапазона от 0 до 200. Тогда его можно вычислить по формуле:

rand()*200/RAND_MAX

Например, надо получить целое случайное число из диапазона от 5 до 200. Тогда его можно вычислить по формуле:

5 + rand()*195/RAND_MAX

Вещественное случайное число из диапазона от -1000 до +1000 можно вычислить по формуле:

(1000 + 1000)*(double)rand()/RAND_MAX - 1000

Функция rand генерирует псевдослучайные числа. Повтор­ный вызов rand производит последовательность чисел, которые кажутся случайными. Но одна и та же последовательность чисел повторяется при каждом новом запуске программы. Для того, чтобы при каждом выполнении программы вырабатывались разные последовательности случайных чисел, необходимо предварительно выполнить рандомизацию, которая реализуется с помощью стандартной библиотечной функции srand.

Функция srand() получает целый аргумент типа unsigned и при каждом выполнении программы задаёт начальное число, которое функция rand() использует для генерации последова­тельности случайных чисел. Например,

...

int n;

cin >> n; // Ввод числа с клавиатуры

srand(n);

...

Если необходимо рандомизировать, не вводя каждый раз начальное число с клавиатуры, можно использовать такой вызов функции:

srand(time(NULL));

При этом для автоматического получения начального числа компьютер считывает показания системных часов. Функция time(NULL) (для её использования необходимо подключить заголовочный файл time.h или ctime) возвращает текущее «календарное время» в секундах, которое преобразуется в беззнаковое целое число и используется как начальное значение в генераторе случайных чисел. Поскольку системное время при различных запусках программы будет разное, функция rand() будет генерировать различные последовательности случайных чисел.