Лаб. Занятие 13. Обязательные задания для решения в классе
Лаб. Занятие 13. Обязательные задания для решения в классе [3 балла]
Указания к выполнению
- Программ должна быть написана на языке С
- В программе должны создаваться несколько новых потоков.
Задания
-
Задан массив A вещественных значений размера n, а также вещественный отрезок [a, b] и натуральное число m. Определить, сколько элементов массива A принадлежат полуинтервалам [a, a + h), [a + h, a + 2 h), ... [a + (m - 1) h, b), где h = (b - a) / m. Счётчик для каждого полуинтервала защитить отдельным мьютексом.
-
Написать программу, которая получает список файлов и для каждого файла вычисляет количество повторений символа. Каждый файл должен обрабатываться в отдельном потоке, а результат записываться в глобальную переменную, которую нужно защитить мьютексом. Основной поток должен по окончании обработки выводить результаты.
-
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Выполнить поиск всех максимумов заданной функции по строкам. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальную переменную, которую нужно защитить мьютексом.
-
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Выполнить поиск всех максимумов заданной функции по столбцам. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальную переменную, которую нужно защитить мьютексом.
-
Для заданной квадратной целочисленной матрицы проверить свойство диагонального преобладания: сумма элементов по строке без диагонального меньше диагонального элемента. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданном ему диапазоне, результат записывать в глобальную переменную, которую нужно защитить мьютексом. Алгоритм можно оптимизировать, прекращая вычисления, когда какой-либо из потоков обнаруживает нарушение условия.
-
Для заданной квадратной целочисленной матрицы проверить свойство диагональной постоянности: главная диагональ и все диагонали, параллельные главной, должны состоять из одинаковых (в пределах этой диагонали) значений. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданном ему диапазоне диагоналей, результат записывать в глобальную переменную, которую нужно защитить мьютексом. Алгоритм можно оптимизировать, прекращая вычисления, когда какой-либо из потоков обнаруживает нарушение условия.
-
Напишите программу, которая получает в качестве аргументов несколько имен файлов и определяет общее число строк во всех файлах, а также самую длинную строку. Если строк максимальной длины несколько, то в качестве результата следует выдать последнюю из них. Каждый файл должен обрабатываться в отдельном потоке, результат записывать в глобальную переменную, которую нужно защитить мьютексом. . По окончании обработки следует выводить результаты (кол-во строк и строку максимальной длины) на стандартный поток вывода.
-
Напишите программу, которая получает в качестве аргументов несколько имен файлов, содержащих набор целых чисел и находит максимальное и минимальное значение из всех файлов. Поиск для каждого массива должен обрабатываться в отдельном потоке, результат записывать в глобальную переменную, которую нужно защитить мьютексом. Основной поток по окончании обработки должен выдать в стандартный поток вывода найденные значения.
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Посчитать сумму значений в четных и нечетных строках массива. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальные переменные, которые нужно защитить мьютексом.
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Посчитать количество простых чисел в массиве. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальные переменные, которые нужно защитить мьютексом.
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Посчитать количество простых чисел на главной диагонали. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальные переменные, которые нужно защитить мьютексом.
В двумерном массиве заданы значения вещественной функции от двух переменных в некоторой решётке. Посчитать сумму чисел на главной диагонали. Разделить вычисления между n потоками. Каждый поток должен вычислить значения в заданной ему части массива, а результат записывать в глобальные переменные, которые нужно защитить мьютексом.