Добор 15.04.2017
Указания:
- I вариант решает задачи при помощи интерфейса Windows API, II вариант — при помощи POSIX.
[10 баллов] Задано вещественное число a и натуральное число m. Массив A размера n заполняется случайными целыми числами в полуинтервале [0, a). Затем необходимо скопировать все нечётные значения из массива A в список L1, а все чётные — в список L2. Задачу по распределению чисел по спискам необходимо выполнить, разделив работу между p потоками. По окончании вывести содержимое обоих списков вместе с их размерами.
[15 баллов] В общей памяти отведено место для хранения строки размера до n + 1. Первая программа в цикле (пока пользователь не попросил завершиться) вводит строку из клавиатуры или файла, записывает её в общую память и ждёт результата. Вторая программа, дождавшись строки, делает её обращение задом наперёд и добавляет в её середину символ
'-', если длина строки нечётная. Затем первая программа считывает результирующую строку и выводит её на консоль. Реализовать ожидание изменения состояния при помощи событий или условных переменных — в зависимости от используемого интерфейса.[5 баллов] Родительский процесс считывает строку и передаёт её дочернему процессу, который заменяет в ней все строчные латинские буквы на соответствующие заглавные и возвращает результат обратно родительскому. Родительский процесс выводит эту строку на консоль. Для обмена данными необходимо использовать неименованные каналы. По окончании действий оба процесса должны завершиться.
[5 баллов] Процесс-клиент считывает строку и передаёт её процессу-серверу. Процесс-сервер заменяет в ней все строчные латинские буквы на соответствующие заглавные и возвращает результат обратно процессу-клиенту. Процесс-клиент выводит эту строку на консоль и завершает работу. Для обмена данными необходимо использовать именованные каналы Windows или сокеты домена Unix в POSIX. В отличие от предыдущей задачи клиент и сервер должны запускаться независимо друг от друга. Процесс-сервер после обработки данных очередного клиента должен ожидать соединения со следующим клиентом. При получении пустой строки сервер должен завершить работу.