Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Технологии > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 14.06.2017, 15:44   #1
oksanavol
 
Регистрация: 28.05.2017
Сообщений: 8
Репутация: 10
По умолчанию Многопоточность

У меня есть задачка: Есть два массива и нужно вывести сколько раз значения второго массива попадаются в первом масиве, я это сделала, но нужно использовать многопоточность, И тут нужна ваша помощь.
Скидываю свой код, сильно не бросайте камнями. Я попробывала раздилить на два потока. Но хочется правильно и красво сделать.

Код:

#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <vector>
#include <thread> 

size_t CountValue(const int* array, const size_t size, const int value)
{
	const int* begin = array;
	const int* end = array + size;

	const int* low = std::lower_bound(begin, end, value);
	if ((low != end) && (*low == value))
	{
		auto up = std::upper_bound(low, end, value);
		return std::distance(low, up);
	}
	return 0;
}

int main()
{
	int arrayFirst[] = { 11, 5, 2, 8, 4, 5, 2, 5, 7, 9, 12, 16, 17, 18, 20 };
	int arraySecond[] = { 22, 5, 8, 3, 2, 9, 4, 3, 9, 10 };
	int size = sizeof(arraySecond) / sizeof(arraySecond[0]);
	std::sort(arraySecond, arraySecond + size);
	
	//const std::size_t maxThreadCount = std::thread::hardware_concurrency();
	//std::vector<std::thread> threads(maxThreadCount);

	std::vector<std::thread> threads1(size / 2);
	std::vector<std::thread> threads2(size / 2);
	for (int index = 0; index < size / 2; ++index) 
	{
		if (arraySecond[index] != arraySecond[index + 1])
			std::cout << "Value:" << arraySecond[index] << "-" << CountValue(arrayFirst, size, arraySecond[index]) << "\n";
		threads1[index].join();
	}
	for (int index = size / 2; index < size; ++index)
	{
		if (arraySecond[index] != arraySecond[index + 1])
			std::cout << "Value:" << arraySecond[index] << "-" << CountValue(arrayFirst, size, arraySecond[index]) << "\n";
		threads2[index].join();
	}
		
    return 0;
}

oksanavol вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность JOKER:3 Общие вопросы Delphi 10 21.02.2013 10:03
Многопоточность nats C# (си шарп) 5 25.06.2011 11:51
многопоточность Freddi Krjuger Общие вопросы по Java, Java SE, Kotlin 1 15.05.2011 23:46
Многопоточность alex0097 Общие вопросы Delphi 3 05.05.2011 22:46


16:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru