Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программа 2

.cpp
Скачиваний:
6
Добавлен:
16.07.2021
Размер:
1.43 Кб
Скачать
#include <stdio.h>
#include <omp.h>
#include <locale.h>
#include <time.h>

void main()
{
	const int NMAX = 10;
	setlocale(LC_ALL, "Rus");
	int i, j,k;
	int* a = new int[NMAX];
	int* b = new int[NMAX];
	int* c = new int[NMAX];
	for (i = 0; i < NMAX; i++)
		a[i] = i;
	for (i = 0; i < NMAX; i++)
		b[i] = 100 - i;
	// инициализация данных


	double t1, t2, dt;
	t1 = omp_get_wtime();
	int total1 = 0;
	int total2 = 0;
	int total3 = 0;
#pragma omp parallel shared(a,b,c,total1,total2,total3) private(i,j,k)
	{
#pragma omp sections
		{
#pragma omp section
			{
				for (i = 0; i < NMAX / 3; i++)
				{
					if (a[i] >= b[i])
						c[i] = a[i];
					else
						c[i] = b[i];
					total1 = total1 + c[i];
				}
			}
#pragma omp section
			{
				for (j = NMAX / 3; j < 2 * NMAX / 3; j++)
				{
					if (a[j] >= b[j])
						c[j] = a[j];
					else
						c[j] = b[j];
					total2 = total2 + c[j];
				}
			}
#pragma omp section
			{
				for (k = 2 * NMAX / 3; k < NMAX; k++)
				{
					if (a[k] >= b[k])
						c[k] = a[k];
					else
						c[k] = b[k];
					total3 = total3 + c[k];
				}
			}
		}
	} /* Завершение параллельного фрагмента */

	int total = total1 + total2 + total3;

	t2 = omp_get_wtime();
	dt = t2 - t1;

	delete[] a;
	delete[] b;
	delete[] c;

	printf("Сумма элементов матрицы C равна %d\n", total);

	printf("Программа работала %f секунд.\n", dt);

}