СИНХРОНИЗАЦИЯ ПОТОКОВ И ПРОЦЕССОВ
Цель работы. Изучение средств синхронизации потоков и процессов, использование их в Windows-программах.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ:
Задание: Для приведенных ниже вариантов заданий составить многопоточную Windows-программу в среде MS Visual С++, в которой производится создание и выполнение 3 потоков: 1-й поток выполняет операции в главном окне приложения, 2-й и 3-й потоки - в другом окне (временном или дочернем). Для синхронизации работы 1-го потока с аналогичным потоком в дочернем процессе (запущенный 2-й экземпляр этого приложения) используется именованный объект синхронизации. Для синхронизации работы 2-го и 3-го потока используется неименованный объект синхронизации.
Требования к программе. В программе должно быть следующее:
- описана главная функция приложения WinMain, в которой регистрируется класс главного окна, создается и выводится это окно, организуется цикл обработки очереди сообщений приложения;
- главное окно приложения должно быть развернутым на весь экран и в заголовке содержать надпись: Задание№ 4 по ОСиСП студ. Фамилия И.О. группа <шифр>;
- в главном окне должно быть создано меню, состоящее из пунктов: Поток 1 (Запустить, Приостановить); Поток 2 (Запустить, Приостановить); Поток 3 (Запустить, Приостановить); Дочерний процесс (Запустить, Завершить);
- 1-й, 2-й и 3-й потоки должны быть созданы в приостановленном состоянии в оконных функциях (по сообщению WM_CREATE), для потоков должны быть описаны соответствующие потоковые функции, выполняющие в цикле операции в окнах согласно варианту задания. Запуск потоков в работу, их приостановка производятся при выборе соответствующих пунктов меню;
|
|
- в потоковых функциях 1-го, 2-го и 3-го потоков должны быть использованы указанные в варианте задания средства синхронизации. При захвате свободного объекта синхронизации потоковая функция выполняет операции вывода в окно заданное число раз (количество повторов) и освобождает этот объект синхронизации;
- 1-й поток выполняет операции в рабочей области главного окна, для него должен быть создан именованный объект синхронизации, доступный в других процессах. Работа этого потока синхронизируется с аналогичным потоком дочернего процесса, который представляет собой еще один запущенный экземпляр данного приложения;
- 2-й и 3-й потоки синхронизируются одним неименованным объектом синхронизации и по очереди выполняют свои операции во временном или дочернем окне;
- в качестве дочернего процесса должен быть запущен еще один экземпляр данного приложения. Т.к. 1-й поток этого экземпляра использует именованный объект синхронизации, то его работа будет синхронизироваться с аналогичным потоком предыдущего экземпляра;
|
|
- при запуске приложения необходимо проверять наличие уже запущенного экземпляра данного приложения, выдавать об этом сообщение с помощью функции MessageBox с кнопками "Да", "Нет", по выбору пользователя продолжать или завершать работу
Используемые Win 32 API функции: для работы с потоками необходимо использовать функции: CreateThread, ResumeThread, SuspendThread, Sleep; для запуска дочернего процесса необходимо использовать функцию CreateProcess, а для его завершения - TerminateProcess; для синхронизации потоков необходимо использовать: Create-функции для создания объектов синхронизации, Wait-функцию для ожидания освобождения объекта, соответствующие функции освобождения объектов синхронизации.
Порядок выполнения работы:
1. Создать проект Windows-приложения (последовательность действий: выбрать меню File -> выбрать пункт New -> выбрать закладку Projects -> отметить тип создаваемого проекта Win 32 Application -> ввести имя проекта в поле Project name -> выбрать кнопку OK -> отметить тип A simple Win 32 application -> выбрать кнопку Finish -> выбрать кнопку OK).
2. В окне просмотра классов и файлов на вкладке FileView выбрать cpp-файл, затем в окне редактирования ввести исходный текст программы.
|
|
3. Создать файл с описанием ресурсов (при необходимости) с использованием редактора ресурсов.
4. Cоздать исполняемый модуль приложения - трансляция, компоновка (последовательность действий: выбрать меню Build -> выбрать пункт Rebuild All).
5. Проверить результат работы приложения - запуск исполняемого модуля (последовательность действий: выбрать меню Build -> выбрать пункт Execute).
ВАРИАНТЫ ЗАДАНИЙ:
№ вар | Поток | Выводимый объект | Выполняемые действия | Кол-во повторов | Объект синхронизации | |
1 | Поток 1 (гл. окно) | Сегмент эллипса | Перемещается по углам окна против часовой стрелки с интервалом 0,4 сек | 6 | Мьютекс | |
Поток 2 (вр. окно) | Битовый образ | Перемещается слева-направо и наоборот с интервалом 0,5 сек | 8 | Критическая секция | ||
Поток 3 (вр. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с интервалом 0,3 сек | 10 | |||
2 | Поток 1 (гл. окно) | Прямоугольная рамка | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,2 сек | 7 | Семафор | |
Поток 2 (доч. окно) | Битовый образ | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,3 сек | 6 | Мьютекс
| ||
Поток 3 (доч. окно) | Квадрат | Перемещается по окружности радиусом 130 пикселей по часовой стрелке на 15о с интервалом 0,5 сек | 8 | |||
3 | Поток 1 (гл. окно) | Битовый образ | Перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек | 10 | Событие | |
Поток 2 (вр. окно) | Текстовая строка | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,2 сек | 7 | Семафор | ||
Поток 3 (вр. окно) | Сектор эллипса | Перемещается в окне случайным образом с интервалом 0,4 сек | 6 | |||
4 | Поток 1 (гл. окно) | Текстовая строка | Перемещается по углам окна по часовой стрелке с интервалом 0,5 сек | 8 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Окружность | Перемещается сверху-вниз и наоборот с интервалом 0,8 сек | 10 | Событие | ||
Поток 3 (доч. окно) | Битовый образ | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,3 сек | 7 | |||
5 | Поток 1 (гл. окно) | Прямоугольник | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,9 сек | 6 | Мьютекс | |
Поток 2 (вр. окно) | Текстовая строка | Перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек | 8 | Ожидаемый таймер | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 0,5 сек | 10 | |||
6 | Поток 1 (гл. окно) | Текстовая строка | Перемещается слева-направо и наоборот с шагом 20 пикселей с интервалом 0,4 сек | 6 | Семафор | |
Поток 2 (доч. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с шагом 10 пикселей с интервалом 0,2 сек | 8 | Критическая секция | ||
Поток 3 (доч. окно) | Прямоугольник с закруглен- ными краями | Перемещается по диагонали сверху-вниз и наоборот с шагом 40,30 пикселей с интервалом 0,5 сек | 10 | |||
7 | Поток 1 (гл. окно) | Прямоугольник с закруглен- ными краями | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,2 сек | 7 | Событие | |
Поток 2 (вр. окно) | Битовый образ | Перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек | 6 | Мьютекс | ||
Поток 3 (вр. окно) | Текстовая строка | Перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 0,5 сек | 8 | |||
8 | Поток 1 (гл. окно) | Квадрат | Перемещается слева-направо и наоборот с шагом 20 пикселей с интервалом 0,4 сек | 10 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Сектор эллипса | Перемещается сверху-вниз и наоборот с шагом 10 пикселей с интервалом 0,2 сек | 7 | Семафор | ||
Поток 3 (доч. окно) | Битовый образ | Перемещается по диагонали сверху-вниз и наоборот с шагом 40,30 пикселей с интервалом 0,5 сек | 6 | |||
9 | Поток 1 (гл. окно) | Текстовая строка | Перемещается по боковой диагонали снизу-вверх и наоборот с шагом 20,15 пикселей с интервалом 0,3 сек | 8 | Мьютекс | |
Поток 2 (вр. окно) | Сегмент эллипса | Перемещается по окружности радиусом 130 пикселей по часовой стрелке на 15о с интервалом 0,5 сек | 10 | Событие | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек | 7 | |||
10 | Поток 1 (гл. окно) | Прямоугольная рамка | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,8 сек | 6 | Семафор | |
Поток 2 (доч. окно) | Текстовая строка | Перемещается в окне случайным образом с интервалом 0,6 сек | 8 | Ожидаемый таймер | ||
Поток 3 (доч. окно) | Битовый образ | Перемещается по углам окна по часовой стрелке с интервалом 0,5 сек | 10 | |||
11 | Поток 1 (гл. окно) | Эллипс | Перемещается по углам окна против часовой стрелки с интервалом 0,5 сек | 6 | Событие | |
Поток 2 (вр. окно) | Текстовая строка | Перемещается слева-направо и наоборот с интервалом 0,7 сек | 8 | Критическая секция | ||
Поток 3 (вр. окно) | Сегмент эллипса | Перемещается по углам окна против часовой стрелки с интервалом 0,2 сек | 10 | |||
12 | Поток 1 (гл. окно) | Битовый образ | Перемещается по углам окна по часовой стрелке с интервалом 0,5 сек | 7 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Сегмент эллипса | Перемещается по углам окна против часовой стрелки с интервалом 0,6 сек | 6 | Мьютекс | ||
Поток 3 (доч. окно) | Текстовая строка | Перемещается слева-направо и наоборот с интервалом 0,3 сек | 8 | |||
13 | Поток 1 (гл. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с интервалом 0,7 сек | 10 | Мьютекс | |
Поток 2 (вр. окно) | Битовый образ | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,6 сек | 7 | Семафор | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,2 сек | 6 | |||
14 | Поток 1 (гл. окно) | Прямоугольная рамка | Перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек | 8 | Семафор | |
Поток 2 (доч. окно) | Битовый образ | Перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 0,5 сек | 10 | Событие | ||
Поток 3 (доч. окно) | Текстовая строка | Перемещается слева-направо и наоборот с шагом 20 пикселей с интервалом 0,4 сек | 7 | |||
15 | Поток 1 (гл. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с шагом 10 пикселей с интервалом 0,2 сек | 6 | Событие | |
Поток 2 (вр. окно) | Эллипс | Перемещается по диагонали сверху-вниз и наоборот с шагом 40,30 пикселей с интервалом 0,5 сек | 8 | Ожидаемый таймер | ||
Поток 3 (вр. окно) | Прямоугольник | Перемещается по боковой диагонали снизу-вверх и наоборот с шагом 20,15 пикселей с интервалом 0,3 сек | 10 | |||
16 | Поток 1 (гл. окно) | Битовый образ | Перемещается по окружности радиусом 130 пикселей по часовой стрелке на 15о с интервалом 0,5 сек | 6 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Окружность | Перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек | 8 | Мьютекс | ||
Поток 3 (доч. окно) | Текстовая строка | Перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 0,5 сек | 10 | |||
17 | Поток 1 (гл. окно) | Битовый образ | Перемещается в окне случайным образом с интервалом 0,4 сек | 7 | Мьютекс | |
Поток 2 (вр. окно) | Прямоугольник | Перемещается по углам окна по часовой стрелке с интервалом 0,5 сек | 6 | Критическая секция | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается по углам окна против часовой стрелки с интервалом 0,2 сек | 8 | |||
18 | Поток 1 (гл. окно) | Текстовая строка | Перемещается слева-направо и наоборот с интервалом 0,8 сек | 10 | Семафор | |
Поток 2 (доч. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с интервалом 0,4 сек | 7 | Мьютекс | ||
Поток 3 (доч. окно) | Прямоугольник с закруглен- ными краями | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,3 сек | 6 | |||
19 | Поток 1 (гл. окно) | Квадрат | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,7 сек | 8 | Событие | |
Поток 2 (вр. окно) | Битовый образ | Перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек | 10 | Семафор | ||
Поток 3 (вр. окно) | Окружность | Перемещается по диагонали сверху-вниз и наоборот с интервалом 0,5 сек | 7 | |||
20 | Поток 1 (гл. окно) | Прямоугольник | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,2 сек | 6 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Битовый образ | Перемещается по периметру окна по часовой стрелке с шагом 20 пикселей с интервалом 0,3 сек | 8 | Событие | ||
Поток 3 (доч. окно) | Прямоугольник с закругленны-ми краями | Перемещается по периметру окна против часовой стрелки с шагом 30 пикселей с интервалом 0,5 сек | 10 | |||
21 | Поток 1 (гл. окно) | Текстовая строка | Перемещается слева-направо и наоборот с шагом 20 пикселей с интервалом 0,4 сек | 6 | Мьютекс | |
Поток 2 (вр. окно) | Текстовая строка | Перемещается сверху-вниз и наоборот с шагом 10 пикселей с интервалом 0,2 сек | 8 | Ожидаемый таймер | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается по диагонали сверху-вниз и наоборот с шагом 40,30 пикселей с интервалом 0,5 сек | 10 | |||
22 | Поток 1 (гл. окно) | Битовый образ | Перемещается по боковой диагонали снизу-вверх и наоборот с шагом 20,15 пикселей с интервалом 0,3 сек | 7 | Семафор | |
Поток 2 (доч. окно) | Квадрат | Перемещается по окружности радиусом 130 пикселей по часовой стрелке на 15о с интервалом 0,5 сек | 6 | Критическая секция | ||
Поток 3 (доч. окно) | Битовый образ | Перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек | 8 | |||
23 | Поток 1 (гл. окно) | Текстовая строка | Перемещается по пери-метру окна по часовой стрелке с шагом 20 пиксе-лей с интервалом 0,3 сек | 10 | Событие | |
Поток 2 (вр. окно) | Битовый образ | Перемещается по боковой диагонали снизу-вверх и наоборот с шагом 20,15 пикселей с интервалом 0,3 сек | 7 | Мьютекс | ||
Поток 3 (вр. окно) | Квадрат | Перемещается по окружности радиусом 130 пикселей по часовой стрелке на 15о с интервалом 0,5 сек | 6 | |||
24 | Поток 1 (гл. окно) | Битовый образ | Перемещается по окружности радиусом 180 пикселей против часовой стрелки на 10о с интервалом 0,4 сек | 8 | Ожидаемый таймер | |
Поток 2 (доч. окно) | Текстовая строка | Перемещается по боковой диагонали снизу-вверх и наоборот с интервалом 0,6 сек | 10 | Семафор | ||
Поток 3 (доч. окно) | Сектор эллипса | Перемещается в окне случайным образом с интервалом 0,5 сек | 7 | |||
25 | Поток 1 (гл. окно) | Текстовая строка | Перемещается по углам окна по часовой стрелке с интервалом 0,8 сек | 6 | Мьютекс | |
Поток 2 (вр. окно) | Сегмент эллипса | Перемещается по углам окна против часовой стрелки с интервалом 0,5 сек | 8 | Событие | ||
Поток 3 (вр. окно) | Битовый образ | Перемещается слева-направо и наоборот с интервалом 0,3 сек | 10 |
ЗАДАНИЕ № 5
РАБОТА С ФАЙЛАМИ, ВИРТУАЛЬНОЙ ПАМЯТЬЮ, КУЧАМИ И ПРОЕКЦИЯМИ ФАЙЛОВ В ПАМЯТЬ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ WIN32 API
МЕТОДИЧЕСКИЕ УКАЗАНИЯ:
Для приведенных ниже вариантов заданий составить и отладить Windows-программу в среде MS Visual С++, в которой производится чтение и обработка исходного текстового файла, формирование выходного текстового файла с использованием проекций файлов, создание динамических массивов в куче и их обработка. В программе также должна выводиться на экран системная информация о памяти.
Требования к программе. В программе должно быть следующее:
- описана главная функция приложения WinMain, в которой регистрируется класс главного окна, создается и выводится это окно, организуется цикл обработки очереди сообщений приложения;
- главное окно приложения должно быть развернутым на весь экран и в заголовке содержать надпись: Задание № 5 по ОСиСП студ. Фамилия И.О. группа <шифр>;
- в главном окне должно быть создано меню, состоящее из пунктов: Текстовый файл (Исходный, Выходной, Выход); Динамический массив (Массив А, Массив В, и т.д. согласно варианту задания); Информация о памяти (Состав подпунктов зависит от варианта задания);
- пункт меню Текстовый файл: подпункт Исходный – с использованием стандартного диалога Open открывается уже существующий исходный текстовый файл для чтения (размером не менее 10 Кб), для него выделяется регион в адресном пространстве, затем производится чтение из файла текста и его обработка согласно варианту задания, результаты обработки выводятся на экран с помощью функции MessageBox; подпункт Выходной – с использованием стандартного диалога Save As создается новый выходной текстовый файл для записи, для него создается проекция в память, по адресу этой проекции формируется содержимое выходного файла из исходного файла согласно варианту задания, производится закрытие проекции и выходного файла, для просмотра его содержимого необходимо вызвать редактор Notepad с передачей ему пути и имени файла; подпункт Выход – работа программы завершается;
- пункт меню Динамический массив: для каждого подпункта необходимо создать в куче динамический массив соответствующего размера, заполнить значениями согласно расчетных формул, произвести его обработку. Элементы массива и результаты обработки вывести на экран либо с помощью функции MessageBox либо во временное окно в виде набора строк. Для заполнения массивов значениями и их обработки можно составить функцию, которой передавать адрес массива, его размер, коэффициенты для расчетных формул и др.;
- пункт меню Информация – должен состоять из пяти подпунктов согласно варианту задания для получения информации о памяти и файловой системе. По каждому подпункту должна быть получена соответствующая информация и выведена с помощью функции MessageBox.
Примечание. В качестве исходного текстового файла можно использовать любой уже существующий на диске текстовый файл, содержащий набор символов в кодировке ANSI Windows. При необходимости такой файл можно создать из документа Word, сохранив его с расширением .txt.
Порядок выполнения работы:
1. Создать проект Windows-приложения (последовательность действий: выбрать меню File -> выбрать пункт New -> выбрать закладку Projects -> отметить тип создаваемого проекта Win 32 Application -> ввести имя проекта в поле Project name -> выбрать кнопку OK -> отметить тип A simple Win 32 application -> выбрать кнопку Finish -> выбрать кнопку OK).
2. В окне просмотра классов и файлов на вкладке FileView выбрать cpp-файл, затем в окне редактирования ввести исходный текст программы.
3. Создать файл с описанием ресурсов (при необходимости) с использованием редактора ресурсов.
4. Cоздать исполняемый модуль приложения - трансляция, компоновка (последовательность действий: выбрать меню Build -> выбрать пункт Rebuild All).
5. Проверить результат работы приложения - запуск исполняемого модуля (последовательность действий: выбрать меню Build -> выбрать пункт Execute).
ВАРИАНТЫ ЗАДАНИЙ:
№ вар | Работа с виртуальной памятью, проекциями файлов. Обработка текстовой информации | Работа с кучей. Формирование и обработка динамических массивов | Получить и вывести информацию о памяти и файловой системы |
1 | В исходном тексте подсчитать количество слов, начинающихся с букв В или в. В выходной файл записать исходный текст, заменив в нем указанные слова символами # | Заданы матрицы: X(3,4), Y(5,5), Z(6,4). Для каждой матрицы определить сумму элементов строки, в которой находится наибольший по абсолютной величине элемент матрицы. Элементы указанных матриц определяются по формулам: Xij=5,7*j*sin(i/2)+9,3*i*cos(j/2); Yij=12,1*j*sin(i/2)-3,8*i*cos(j/2); Zij=10,5*j*sin(i/2)+23,4*i*cos(j/2). | Процент использования памяти Текущий каталог |
2 | В исходном тексте определить количество слов (разделителем слов считать пробел). В выходной файл записать исходный текст, добавив перед каждым словом его номер | Заданы массивы A(15), B(8), C(12). Для каждого из массивов определить сумму положительных элементов и количество элементов, больших среднего значения. Элементы массивов вычисляются по формулам: Ai=3,1i2-59,7i-16,2; Bj=5,4j2-82,1j+29,6; Ck=-6,9k2+31,2k-10,5. | Минимальный адрес памяти для процесса Системный каталог |
3 | В исходном тексте определить количество пробелов. В выходной файл записать исходный текст, в котором все пробелы заменить порядковым номером | Заданы матрицы C(4,5), D(5,5), S(5,4). Для каждой из матриц определить произведение ненулевых элементов столбца, где расположен минимальный элемент. Элементы матриц определяются по формулам: Cij=(i-3,5)(j+1,7); Djm=(j+4,2)(m-5,6); Smi=(m-7,6)(i+5,2). | Размер физической памяти Основной каталог системы |
4 | В исходном тексте определить наиболее часто используемый разделитель: пробел, точка, запятая, точка с запятой, двоеточие, тире. Вывести список разделителей с количествами их в тексте. В выходной файл записать исходный текст, в котором все разделители заменены наиболее часто используемым | Заданы массивы X(10), Y(12), Z(16). Для каждого из массивов определить разность между максимальным и минимальным элементами, а также - среднее арифметическое, если эта разность больше 5 и среднее геометрическое, в противном случае. Элементы массивов определяются по формулам: Xi=2,8+5,1*sin(0,5i); Yj=1,7-3,6*sin(1,9j); Zk=6,6+4,7*sin(2,8k). | Минимальный адрес памяти для процесса Название файловой системы |
5 | В исходном тексте определить количество гласных букв и наиболее часто встречающуюся из них. Вывести список гласных букв, их количество в тексте В выходной файл записать исходный текст, в котором все гласные заменены наиболее часто встречающейся | Заданы матрицы A(5,5), B(3,3), C(4,4). Для каждой из матриц найти сумму произведений элементов строки и столбца, на пересечении которых находится максимальный элемент. Элементы матриц определяются по формулам: Aij=1,4+2,5i-4,7j; Bij=-4,5+6,7i+2,1j; Cij=7,7-5,1i+3,2j. | Свободная физическая память Количество секторов в одном кластере и байтов в одном секторе |
6 | В исходном тексте определить количество каждой из букв. На экран вывести список букв с количествами их в тексте. В выходной файл записать исходный текст, в котором все символы, не являющиеся буквами, заменены символом #. | Заданы массивы F(8), G(11), G(14). Для каждого из массивов найти произведение ненулевых элементов, если количество положительных элементов больше половины и сумму отрицательных элементов, в противном случае. Элементы массивов определяются по формулам: Fi=1,4i+tg(i-5,5); Gj=8,5j+tg(j+3,9); Hk=2,9k-tg(k+1,7). | Размер файла подкачки число свободных кластеров |
7 | В исходном тексте определить количество предложений (разделителем предложений считать точку) и длину наибольшего предложения. В выходной файл записать исходный текст, в котором перед точкой указывается длина предложения. | Заданы матрицы C(6,6), D(5,5), E(8,8). Каждую матрицу транспонировать и определить разность между суммами элементов, лежащих выше и ниже главной диагонали. Элементы матриц определяются по формулам: Cij=1,5i2-8,7j2+3,9; Dij=2,6i2-4,8j2-1,3; Eij=3,3i2+2,7j2-8,5. | Максимальный адрес памяти для процесса Общее число байтов на диске, число свободных байтов |
8 | В исходном тексте определить количество слов, начинающихся с гласных букв. В выходной файл записать исходный текст, в котором в начале каждого слова добавлена длина наибольшего слова | Заданы массивы X(10), Y(15), Z(20). Для каждого из массивов найти разность между суммами элементов с четными и нечетными индексами, а также - максимальный элемент, если эта разность положительна и минимальный элемент, в противном случае. Xi=14,4i-2,9*exp(sin(1,5i)); Yj=-10,5i+5,1*exp(sin(3,2j)); Zk=21,6k-4,3*exp(sin(6,8k)). | Свободная физическая память Определение типов дисков |
9 | В исходном тексте определить количество согласных букв. В выходной файл записать исходный текст, в котором удалены все согласные. | Заданы матрицы А(4,5), В(5,6), С(6,4). В каждой матрице определить номер строки с минимальным средним значением и посчитать сумму отрицательных элементов этой строки. Aij=1,5-2,9*i*tg(4,2*j); Bim=4,4+1,2*i*tg(3,5*m); Cmn=5,8-7,9*m*tg(11,4*n). | Размер страницы памяти Атрибуты файла |
10 | В исходном тексте подсчитать количество слов, начинающихся и заканчивающихся согласной буквой. В выходной файл перенести из исходного текста слова, начинающиеся и заканчивающиеся согласной буквой. | Заданы массивы C(12), D(25), E(20). Для каждого из массивов найти отношение максимального элемента к минимальному, а также - сумму положительных элементов, если это отношение больше 3 и произведение отрицательных элементов, в противном случае. Сi=6,9i2-15,3i+4,7; Dj=8,8j2-12,6j-3,9; Ek=7,6k2+2,5k-18,9. | Минимальный адрес памяти для процесса Текущий каталог |
Дата добавления: 2019-09-13; просмотров: 90; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!