
- •2. Оператор цикла while.
- •Билет 2.
- •Билет 3
- •2. Оператор цикла for
- •Билет 4
- •Билет 5
- •1. Константы
- •1.1 Целые Константы
- •1.3 Символьные Константы
- •1.4 Строки
- •2. Оператор if
- •Билет 6
- •Билет 7
- •1.1 Описания Функций
- •1.2 Определения Функций
- •1.3 Описания
- •2.1.1 Область Видимости
- •2.1.2 Объекты и Адреса (Lvalue)
- •2.1.3 Время Жизни
- •2. Логические операции.
- •Билет 8
- •1. Указатели. Использование указателей при работе с массивами
- •2. Оператор Goto
- •Билет 9
- •2. Указатели и операции над ними.
- •Билет 10
- •Билет 11
- •1. Оператор if
- •2. Строки
- •Билет 12
- •1. Увеличение и уменьшение
- •Билет 13
- •1. Побитовые логические операции
- •2. Функция scanf
- •Билет 14
- •Основные сведения о функциях
- •2. Функции operator new() и operator delete()
- •Билет 15
- •1. Объединения
- •2. Форматный вывод - функция printf
- •Билет 16
- •1. Оператор Выражение
- •2. Области видимости объектов
- •Билет 17
- •1.1 Оператор Return
- •1.2 Оператор Break
- •1.3 Оператор Continue
- •2. Ввод-вывод текстового файла: getc( ), putc( )
- •Билет 18
- •Билет 19
- •1. Аргументы функции main()
- •2. Операции Отношения
- •Билет 20
- •1. Стандартный ввод и вывод - функции getchar и putchar
- •2.1 Оператор typedef
- •Билет 21
- •1. Глобальные переменные
- •2. Открытие файла: fopen( )
- •Закрытие файла: fclose( )
- •Билет 22
- •2. Директивы Препроцессора
- •2.1. Директива #include
- •2.2. Директива #define
- •2.3. Директива #undef
- •Билет 23
- •1. Преобразование типов.
- •2. Операция Запятая
- •Билет 24
- •1. Определение
- •2. Арифметические Преобразования
- •Билет 25
- •Билет 26
- •1. Передача Параметров
- •Билет 27
- •1. Преобразования символов
- •2. Массив и константный указатель
- •Билет 28
- •2. Операции Отношения
- •Билет 29
- •1. Оператор return. Точка вызова и точка возврата
- •Билет 30
- •2. Рекурсивная функция
- •Билет 31
- •2. Функция. Прототип
- •Билет 32
- •2. Генерация случайных чисел
- •Билет 33
- •2. Шаблоны функций и шаблонные функции
Билет 32
2. Генерация случайных чисел
Представляет генератор псевдослучайных чисел, устройство, которое выдает последовательность чисел, отвечающую некоторым статистическим критериям случайности.
Билет 33
1. Массивы указателей на функции удобно использовать при разработке всевозможных меню, точнее программ, управление которыми выполняется с помощью меню. Для этого действия, предлагаемые на выбор будущему пользователю программы, оформляются в виде функций, адреса которых помещаются в массив указателей на функции. Пользователю предлагается выбрать из меню нужный ему пункт (в простейшем случае он вводит номер выбираемого пункта) и по номеру пункта, как по индексу, из массива выбирается соответствующий адрес функции. Обращение к функции по этому адресу обеспечивает выполнение требуемых действий. Самую общую схему реализации такого подхода иллюстрирует следующая программа для обработки файлов:
//RAZN2_2.СРР - массив указателей на функции.
#include <stdlib.h> // Для exit().
#include <iostream.h> // Для cout, cin.
// Определение функций для обработки меню:
void act1 (char* name)
{ cout <<"Действия по созданию файла " << name; }
void act2 (char* name)
{ cout << "Действия по уничтожению файла " << name; }
void act3 (char* name)
{ cout << "Действия no чтению файла " << name; }
void act4 (char* name)
{ cout << "Действия по модификации файла " << name; }
void act5 (char* name)
{ cout << "Действия no закрытию файла.";
exit(0); // Завершить программу.
}
// Тип MENU указателей на функции типа void (char *):
typedef void(*MENU)(char *);
// Инициализация таблицы адресов функций меню:
MENU MenuAct[5] = { act1, act2, act3, act4, act5 };
void main()
{
int number; // Номер выбранного пункта меню.
char FileName[30]; // Строка для имени файла.
cout << "\n 1 - создание файла";
cout << "\n 2 - уничтожение файла";
cout << "\n 3 - чтение файла";
cout << "\n 4 - модификация файла";
cout << "\n 5 - выход из программы";
while (1) // Бесконечный цикл.
{
while (1)
{ // Цикл продолжается до ввода правильного номера.
cout << "\n\nВведите номер пункта меню: ";
cin >> number;
if (number >= 1 && number <= 5) break;
cout << "\nОшибка в номере пункта меню!";
}
if (number != 5)
{ cout << "Введите имя файла: ";
cin >> FileName; // Читать имя файла.
}
// Вызов функции по указателю на нее:
(*MenuAct[number-1])(FileName);
} // Конец бесконечного цикла.
}
Текст этой программы можно взять здесь.
При выполнении программы возможен, например, такой диалог:
1 - создание файла
2 - уничтожение файла
3 - чтение файла
4 - модификация файла
5 - выход из программы
Введите номер пункта меню: 3 <Enter>
Введите имя файла: PROBA.TXT <Enter>
Действия; по чтению файла PROBA.ТХТ
. . . .
Введите номер пункта меню: 5 <Enter>
Действия по закрытию файла.
Пункты меню повторяются, пока не будет введен номер 5 - выход из программы.
Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.
Оставленные комментарии видны всем.