Содержание задания. Разработайте многопоточное приложение, выполняющее вычисление нормы вектора a. Каждый из p потоков вычисляет частичную сумму квадратов компонент вектора: от некоторого элемента ai до ai+k-1 (k последовательных элемента). Параметры k и p должны быть варьируемыми (предусмотреть поля ввода для них в диалоговом окне приложения). Если некоторый поток уже вычисляет сумму квадратов элементов от ai до ai+k-1, то следующий приступающий к вычислению поток выбирает для расчета последовательность элементов от ai+k до ai+2k-1. Выполнив вычисление частичной суммы квадратов компонентов вектора a, поток проверяет, нет ли последовательности элементов в количестве не более k, сумма квадратов которой еще не вычислялась. Если такая последовательность есть, то приступает к суммированию квадратов ее элементов. В противном случае приостанавливает своё выполнение. Суммирование частичных сумм выполняется путем их накопления (сложения) в глобальной переменной, первоначально инициализированной нулевым значением, самими потоками. Вычислительный поток после завершения работы отправляет (пользовательское) сообщение главному потоку. Главный поток, получив сообщения о завершении вычислений всеми потоками, извлекает квадратный корень из результата суммирования и выводит результат на экран и запускает поток, записывающий результат в конец файла-протокола. В каждом потоке должна быть задержка в выполнении вычислений (чтобы дать возможность поработать всем потокам). Синхронизацию потоков между собой для выбора суммируемой подпоследовательности компонент вектора и доступа к накапливающей сумму квадратов компонент вектора переменной организуйте через критические секции, мьютексы или события с автоматическим сбросом (в любой комбинации). Для хранения компонент вектора используйте функции семейства Win 32 API для управления проецируемыми в память файлами. Разработайте необходимый пользовательский интерфейс для ввода размерности вектора N и значений его компонент, запуска расчета, задания количества вычисляющих частичные суммы потоков, задания количества суммируемых квадратов элементов одним потоком, вывода нормы вектора. Для ускорения ввода предусмотрите возможность не заполнять нулевые компоненты вектора (не заполненные компоненты вектора должны сами инициализироваться нулями). Например, для ввода вектора предусмотрите два поля ввода: номер компоненты, значение компоненты; и кнопку для команды задания компоненты вектора. Разработайте файл протокола, в который должна записываться следующая информация: размерность вектора, его компоненты, результат (норма), а также информацию о том, каким потоком (номером) и какая подпоследовательность элементов просуммирована (задать ее номером первого элемента). В пользовательском интерфейсе предусмотрите кнопку для вызова диалогового окна для выбора файла протокола.
Тип: Курсовая
Предмет: Visual C++
Решение задачи анализа деятельности предприятия.
Стоимость: 2900 руб.
Тип: Курсовая
Предмет: Visual C++
Разработка программного обеспечения для реализации вычисл. собственных значений матриц
Стоимость: 2900 руб.
Тип: Курсовая
Предмет: Visual C++
Разработка программы построения матрицы достижимости и матрицы контрдостижимости
Стоимость: 2850 руб.
Тип: Курсовая
Предмет: Visual C++
"Организация структур данных, двоичные деревья." и "Решение задачи анализа деятель
Стоимость: 2475 руб.
Тип: Курсовая
Предмет: Visual C++
Разработка ПО для решения систем линейных алгебраических уравнений методом релаксации
Стоимость: 2800 руб.
Поступив в вуз, студенты сталкиваются не только с привычными видами учебных работ (контрольными и рефератами), но и новыми: например, курсовыми. В отличие от , курсовая работа относится к исследовательским и должна быть не просто посвящена актуальной теме, но иметь практическую и теоретическую знач…
Читать дальшеЗакончили с написанием ? Мы не спешим вас поздравлять. Ведь радость окажется недолгой, когда вы поймете, что придётся написать , , и, конечно же, .Да, не удивляйтесь. Рецензию на курсовые и дипломы в большинстве случаев студенты пишут самостоятельно. Преподаватели из-за своей занятости не всегда у…
Читать дальше