Лаб. Занятие 12. Обязательные задания.
Лаб. Занятие 12. Обязательные задания для решения в классе [3 балла]
Задание 12.1
Реализовать программу, которая дожидается запуска заданного количества экземпляров своего процесса, которым назначаются последовательные номера. Дальше первый процесс генерирует последовательность случайных чисел, которые передаёт по одному второму процессу. Второй процесс увеличивает каждое получаемое число на 1 и передаёт дальше. Последний процесс после увеличения числа выводит его на печать. Передачу значений можно организовать при помощи массива размером, равным количеству процессов минус один.
Задание 12.2
Реализовать программу, которая дожидается запуска заданного количества экземпляров своего процесса, которым назначаются последовательные номера. Дальше первый процесс генерирует случайное число, которое передаёт второму процессу. Второй процесс увеличивает число на 1 и передаёт дальше. Последний процесс после увеличения числа передаёт его первому процессу, который после его увеличения выводит на печать. Передачу значений можно организовать при помощи массива размером, равным количеству процессов.
Задание 12.3
Реализовать две программы, одна из которых генерирует последовательность целых чисел:
xi = [A sin (ω i)] ∀ i = 0, 1, ..., T
для заданных A, ω и T. (Здесь квадратные скобки обозначают операцию округления). После генерирования очередной порции данных программа записывает их в буфер ограниченного размера и дожидается, пока другая программа не прочитает их оттуда. Вторая программа после получения очередной порции данных должна выводить их на печать.
Задание 12.4
Реализовать две программы, первая из которых, будучи запущенной в нескольких экземплярах процесса, получает свой порядковый номер и записывает его заданное количество раз в буфер ограниченного размера. Другая программа должна забрать эти данные из буфера и вывести на печать.Задание 12.5
Напишите программы для реализации следующей задачи. Программа клиент генерирует случайным образом N целых чисел в диапазоне от M до K и передает их серверу через разделяемую память. Сервер принимает числа и подсчитывает две суммы - отдельно для четных чисел и для нечетных. Получив все переданные числа, сервер выводит полученные значения сумм на stdout.
Задание 12.6
Напишите программы для реализации следующей задачи. Программа клиент генерирует случайным образом N целых чисел в диапазоне от M до K и передает их серверу через разделяемую память. Сервер принимает числа, возводит их в квадрат и выводит в стандартный поток вывода.
Задание 12.7
Напишите программы для реализации следующей задачи. Программа клиент генерирует случайным образом N целых чисел в диапазоне от M до K и передает их серверу через разделяемую память. Сервер принимает числа и подсчитывает количество чисел, лежащих в диапазоне [M, (K-M)/2-1] и в диапазоне [(K-M)/2, K]. Получив все переданные числа, сервер выводит посчитанные количества на stdout.
Задание 12.8
Напишите программы для реализации следующей задачи. Программа клиент генерирует случайным образом N целых чисел в диапазоне от M до K и передает их серверу через разделяемую память. Сервер принимает числа и вычисляет среднее арифметическое чисел. Получив все переданные числа, сервер выводит посчитанное значение на stdout.
Задание 12.9
Напишите программы для реализации следующей задачи. Программа клиент записывает в разделяемую память последовательность символов. Сервер принимает эту последовательность и находит в ней наиболее длинную последовательность из подряд идущих одинаковых символов. После чего выводит индекс её начала, длину и символ на stdout.
Задание 12.a
Напишите программы для реализации следующей задачи. Программа клиент записывает в разделяемую память некоторую подстроку, заданной длины и последовательность символов. Сервер принимает эти данные и находит в подпоследовательности все вхождения заданной строки. После чего выводит позиции начала каждого вхождения на stdout.
Задание 12.b
Напишите программы для реализации следующей задачи. Программа клиент записывает в разделяемую память последовательность символов. Сервер принимает эту последовательность и заменяет все строчные латинские символы на заглавные. После чего выводит последовательность на stdout.
Задание 12.c
Напишите программы для реализации следующей задачи. Программа клиент записывает в разделяемую память последовательность символов. Сервер принимает эту последовательность и записывает ее в обратном порядке. После чего выводит результат на stdout.
Задание 12.d
Напишите программы для реализации следующей задачи. Программа клиент записывает в разделяемую память последовательность символов. Сервер принимает эту последовательность производит "циклический сдвиг" содержимого на заданное количество байт влево: сначала записать содержимое последовательности с заданной позиции до конца, затем дописать начало последовательности до заданной позиции.