Не работает код C++?

Нужно было написать программу, в которой объявлен массив из 16000 элементов и инициализирован таким образом, что значение элемента массива равно его порядковому номеру. Затем создать результирующий массив, в котором (за исключением крайних элементов) будут средние значения входного массива: b[i] = (a[i-1] + a[i] + a[i+1])/3.

#include <stdio.h>
#include <omp.h>
#include <stdlib.h>

int main(int argc, char argv[])
{
	#pragma omp parallel num_threads(8)
	{
		int arrSize = 16000;
		int arr [arrSize], resultArr[arrSize/3 + 1];
#pragma omp for schedule(dynamic,1)
		for (int i = 0; i < arrSize; i++) {
			printf("Thread %d is running number %d\n", omp_get_thread_num(), i);
			arr[i] = 1;
		}
#pragma omp for schedule(static, 4)
		for (int i = 1; i < arrSize - 1; i++) {
			resultArr[i] = (arr[i - 1] + arr[i] + arr[i + 1]) / 3;
		}


	}
}
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Размер результирующего массива тоже arrSize. Не надо его делить на 3.
Еще инициализация массива у вас не "значение элемента массива равно его порядковому номеру". Вы там тупо единицами все инициализируете.

Ну и вывод в цикле будет весьма спамный.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы