Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
Заблокирован

Многопоточность. Вывести сколько раз значения второго массива попадаются в первом массиве

14.06.2017, 15:30. Показов 4905. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть задачка: Есть два массива и нужно вывести сколько раз значения второго массива попадаются в первом масиве, я это сделала, но нужно использовать многопоточность, И тут нужна ваша помощь.
Скидываю свой код, сильно не бросайте камнями. Я попробывала раздилить на два потока. Но хочется правильно и красво сделать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#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;
}
Добавлено через 1 час 40 минут
никто не знает?((
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2017, 15:30
Ответы с готовыми решениями:

Определить, сколько раз встречается последний элемент второго массива в первом массиве
Помогите пожалуйста прорамму решить Дано 2 массива х(n) и у(n). Сколько раз встречается последний элемент второго массива у(n) в первом...

Вывести число, которое показывало бы сколько раз в первом столбце были значения больше 10
Есть база dat в которую вносятся рандомные числа в определенном радиусе и так же из этой бд выводится среднее значение в базy dat2. Нужно...

Найти сколько раз различные значения встречаются в массиве и вывести в упорядоченном виде
Дано:массив целых положительных чисел значение которых не превышает числа 8. Найти сколько раз различные значения встречаются в массиве и...

59
Заблокирован
19.06.2017, 13:04  [ТС]
Студворк — интернет-сервис помощи студентам
Antikl, спасибо читала.
Я так поняла мну нужно передавать лябду функцию.
Корона не упадет у меня, скидываю код от туда:
C++
1
2
3
4
5
6
7
8
9
10
11
void threadFunction()
{
     // do smth
}
 
int main()
{
     std::thread thr(threadFunction);
     thr.join();
     return 0;
}
мне нужно как я уже говорила создать лябду функцию:
C++
1
2
3
4
void threadFunction()
{
     // do smth
}
но я не совсем поняла что в ней делать. если не трудно помогите.

Добавлено через 3 минуты
вернее, я как понимаю мне нужно передавать интревалы, и там мою функцию GenerateProcessingIntervals реализовывать
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
19.06.2017, 13:04
https://habrahabr.ru/post/66021/
0
Заблокирован
19.06.2017, 13:11  [ТС]
Antikl, я гуглом и сама умею пользоваться)
C++
1
2
3
void threadFunction(int array, std::vector<std::pair<size_t, size_t>> interval)
{
}
в меине:
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
        threads.emplace_back(threadFunction, std::ref(foundPrimesPerThread.begin), array2, intervals);
я правильно думаю?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2017, 13:38
Цитата Сообщение от oksanavol Посмотреть сообщение
так Вы мне снова то что мне не подходит пишете.
Мне трудно понять что вам ещё нужно.
Цитата Сообщение от oksanavol Посмотреть сообщение
написать отдельно функцию- GenerateProcessingIntervals
Что она должна принимать и что возвращать?

Цитата Сообщение от oksanavol Посмотреть сообщение
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
    threads.emplace_back(intervals);
Пытаетесь запихнуть intervals (весь контейнер). Наверное надо всё же interval.
0
Заблокирован
19.06.2017, 13:44  [ТС]
MrGluck, Что она должна принимать и что возвращать?
так я же скинула свою функцию. посмотреть не судьба?!!

Добавлено через 1 минуту
Что мне нужно? чтобы посмотрели МОЙ !! код и сказали что не правильно. а не создавали 5 колесо и свой код писали. Если бы я хотела просто получить код, любой я бы не скидывала свой и не писала тут по 5 раз

Добавлено через 1 минуту
C++
1
std::vector<std::pair<size_t, size_t>> GenerateProcessingIntervals(std::size_t maxThreadCount, std::size_t numberCount)
если вы посмотрете то увидете что пару возвращает.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2017, 13:46
Цитата Сообщение от oksanavol Посмотреть сообщение
так я же скинула свою функцию. посмотреть не судьба?!!
Хотелось бы знать задание, а не реализацию. Вы могли допустить ошибки, не так понять. Да и в конце-концов, по русски мне читать проще, чем вникать в код.
Хотя тон общения отбивает желание помогать.
0
Заблокирован
19.06.2017, 14:12  [ТС]
MrGluck, ))) Я задания уже 100 раз писала).
Напишу что мне нужно еще раз:
1) есть два массива, мне нужно вывести сколько раз значения с второго масива встречаются в первом. При этом использовать std::thread.
2) У меня есть функция: CountValue , где я щитаю сколько раз встречается значения.
3) У меня есть функция: GenerateProcessingIntervals где я сколько поток должен оброблять значений.
4) В меине у меня не правильно работает
threads.emplace_back(intervals);

Так вам прийдется вникнуть в мой код, так как я прошу подсказать что не так в моем коде.
Извините за тон, но просто я не программист, но я 4 дня сидела и писала эти функции , а Вы задаете вопросы, которые мне как не програмисту смешны. который если посмотреть на код можно увидеть.
Я понимаю Вы уже модератор, и много знаете . но мне не нужно делать заумно. а сделать так как я прошу помочь

Добавлено через 4 минуты
я так понимаю нужно передавать функтор
C++
1
2
3
4
5
6
7
struct Thread
{
 void operator()(int array, std::vector<std::pair<size_t, size_t>> interval)
 {
    }
 
};
я создала струтуру и создаю там оператор.
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 14:39
Цитата Сообщение от oksanavol Посмотреть сообщение
4) В меине у меня не правильно работает
threads.emplace_back(intervals);
Подозреваю, учитывая ваши интервалы, должно быть как-то так:
C++
1
2
3
4
5
6
threads.emplace_back([&] () {
   for (size_t i = interval.first; i != interval.first + interval.second; ++i) {
      size_t count = CountValue(array1, size1, array2[i]);
      // Здесь потом как то используете count
   }
});
0
Заблокирован
19.06.2017, 15:05  [ТС]
gray_fox, я написала функтор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct Counter
{
    Counter(const int* array1, size_t size1, const int* array2, size_t size2)
        : mArray1(array1)
        , mSize1(size1)
        , mArray2(array2)
        , mSize2(size2)
    {
    }
    void operator()()
    {
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            std::vector<std::vector<std::uint64_t>> foundPrimesPerThread(mSize2);
            foundPrimesPerThread.push_back(std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
        }
    }
 
    const int* mArray1;
    size_t mSize1;
    const int* mArray2;
    size_t mSize2;
};
и в меине:
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
        std::thread thread(Counter(array1, size1, array2, size2));
но новая проблема.
крешится. так как
так крешится:
C++
1
2
3
4
5
for (std::size_t index = 0; index < mSize2; ++index)
        {
            
            std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
        }
а так:
C++
1
2
3
4
5
6
7
8
9
}
    void operator()()
    {
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            std::vector<std::vector<std::uint64_t>> foundPrimesPerThread(mSize2);
            foundPrimesPerThread.push_back(std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
        }
    }
выдает ошибку:
Severity Code Description Project File Line Suppression State
Error C2664 'void std::vector<std::vector<uint64_t,std::al locator<_Ty>>,std::allocator<std::vector <_Ty,std::allocator<_Ty>>>>:ush_back(c onst std::vector<_Ty,std::allocator<_Ty>> &)': cannot convert argument 1 from 'std::basic_ostream<char,std::char_trait s<char>>' to 'std::vector<uint64_t,std::allocator<_Ty >> &&' arrayValue
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 15:09
Надо этот thread где-то сохранять (у вас там вроде был вектор) и потом вызывать join().
0
Заблокирован
19.06.2017, 15:13  [ТС]
gray_fox, так я и делаю это в меине
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main() 
{
    int array1[] = { 11, 5, 2, 8, 4, 5, 2, 5, 7, 9, 12, 16, 17, 18, 20 };
    int array2[] = { 22, 5, 8, 3, 2, 9, 4, 3, 9, 9 };
    int size1 = sizeof(array1) / sizeof(array1[0]);
    int size2 = sizeof(array2) / sizeof(array2[0]);
    std::sort(array1, array1 + size1);
 
    std::vector<std::pair<size_t, size_t>> intervals = GenerateProcessingIntervals(*array2, size2);
    const auto usedThreadCount = intervals.size();
    std::vector<std::thread> threads;
    threads.reserve(usedThreadCount);
    
    for (const std::pair<size_t, size_t>& interval : intervals) 
        threads.emplace_back(Counter(array1, size1, array2, size2));
    
    for (std::size_t index = 0; index < usedThreadCount; ++index)
        threads[index].join();
    return 0;
}
Или я Вас не правильно понял?
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 15:16
Потом вы interval в теле цикла не используете. Видимо хотелось так:
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
        std::thread thread(Counter(array1, size1, array2 + interval.first, interval.second));
Добавлено через 2 минуты
Цитата Сообщение от oksanavol Посмотреть сообщение
так я и делаю это в меине
Вот тут создаёте локально в теле цикла:
Цитата Сообщение от oksanavol Посмотреть сообщение
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals)
    std::thread thread(Counter(array1, size1, array2, size2));
Надо в threads добавлять ваш новый поток, как у вас раньше было.
0
Заблокирован
19.06.2017, 15:24  [ТС]
gray_fox,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main() 
{
    int array1[] = { 11, 5, 2, 8, 4, 5, 2, 5, 7, 9, 12, 16, 17, 18, 20 };
    int array2[] = { 22, 5, 8, 3, 2, 9, 4, 3, 9, 9 };
    int size1 = sizeof(array1) / sizeof(array1[0]);
    int size2 = sizeof(array2) / sizeof(array2[0]);
    std::sort(array1, array1 + size1);
 
    std::vector<std::pair<size_t, size_t>> intervals = GenerateProcessingIntervals(*array2, size2);
    const auto usedThreadCount = intervals.size();
    std::vector<std::thread> threads;
    threads.reserve(usedThreadCount);
    
    for (const std::pair<size_t, size_t>& interval : intervals) 
        threads.emplace_back(Counter(array1, size1, array2, size2));
    
    for (std::size_t index = 0; index < usedThreadCount; ++index)
        threads[index].join();
return 0;
}
Добавлено через 3 минуты
я переделала. но ошибка та же:
Severity Code Description Project File Line Suppression State
Error C2664 'std::vector<uint64_t,std::allocator<_Ty >>::vector(const std::vector<_Ty,std::allocator<_Ty>> &)': cannot convert argument 1 from 'std::basic_ostream<char,std::char_trait s<char>>' to 'const std::allocator<_Ty> &' arrayValue c:\program files (x86)\microsoft visual studio 14.0\vc\include\xmemory0 737

Добавлено через 33 секунды
тут я правильно додаю?
C++
1
2
3
4
5
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            std::vector<std::vector<std::uint64_t>> foundPrimesPerThread(mSize2);
            foundPrimesPerThread.emplace_back(std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
        }
Добавлено через 2 минуты
Как правильно:
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
        threads.emplace_back(Counter(array1, size1, array2 + interval.first, interval.second));
или
C++
1
2
for (const std::pair<size_t, size_t>& interval : intervals) 
        std::thread thread(Counter(array1, size1, array2 + interval.first, interval.second));
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2017, 15:27
Цитата Сообщение от oksanavol Посмотреть сообщение
Как правильно:
1 вариант.
2 просто создаст объект std::thread и ничего с ним не сделает.
1
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 15:27
Цитата Сообщение от oksanavol Посмотреть сообщение
C++
1
foundPrimesPerThread.emplace_back(std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
И зачем поток вывода в вектор пытаетесь запихнуть?
Вам надо в классе Counter дополнительно иметь поле, куда будете сохранять результаты.
Цитата Сообщение от oksanavol Посмотреть сообщение
Как правильно:
1-й.
1
Заблокирован
19.06.2017, 15:31  [ТС]
gray_fox, если я правильно поняла, я додлала значенния куда буду сохранять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct Counter
{
    Counter(std::vector<std::vector<std::uint64_t>> foundPrimesPerThread, const int* array1, size_t size1, const int* array2, size_t size2)
        : mFoundPrimesPerThread(foundPrimesPerThread)
        , mArray1(array1)
        , mSize1(size1)
        , mArray2(array2)
        , mSize2(size2)
    {
    }
    void operator()()
    {
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            mFoundPrimesPerThread.emplace_back(std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]));
        }
    }
    std::vector<std::vector<std::uint64_t>> mFoundPrimesPerThread;
    const int* mArray1;
    size_t mSize1;
    const int* mArray2;
    size_t mSize2;
};
хоча я не правильно Вас поняла:
И зачем поток вывода в вектор пытаетесь запихнуть? - а куда нужно запихывать? какой тип?
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 15:48
Цитата Сообщение от oksanavol Посмотреть сообщение
И зачем поток вывода в вектор пытаетесь запихнуть? - а куда нужно запихывать? какой тип?
А в векторе что хранится? Вектора целых чисел. У вас в emplace_back - std::cout << ... .

Смотрите, я взял ваш код из 37-го поста, немного переделал с лямбда-функцией. Можете заменить лямбду на функтор, если надо.
Кликните здесь для просмотра всего текста
http://coliru.stacked-crooked.... 3aa8da99a9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <algorithm>
#include <vector>
#include <thread> 
#include <unordered_map>
 
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;
}
 
std::vector<std::pair<size_t, size_t>> GenerateProcessingIntervals(std::size_t maxThreadCount, std::size_t numberCount)
{
    const std::size_t minLength = numberCount / maxThreadCount;
    const std::size_t numLeftNumbers = numberCount % maxThreadCount;
 
    std::vector<std::size_t> intervalLength;
    intervalLength.reserve(maxThreadCount);
 
    for (std::size_t i = 0; i < numLeftNumbers; ++i)
        intervalLength.emplace_back(minLength + 1);
 
    if (minLength > 0)
    {
        for (std::size_t i = numLeftNumbers; i < maxThreadCount; ++i)
            intervalLength.emplace_back(minLength);
    }
 
    std::vector<std::pair<size_t, size_t>> intervals;
    intervals.reserve(intervalLength.size());
 
    intervals.emplace_back(0, intervalLength[0]);
    for (std::size_t index = 1; index < intervalLength.size(); ++index)
        intervals.emplace_back(intervals[index - 1].first + intervals[index - 1].second, intervalLength[index]);
 
    return intervals;
}
 
 
 
int main() 
{
    int array1[] = { 11, 5, 2, 8, 4, 5, 2, 5, 7, 9, 12, 16, 17, 18, 20 };
    int array2[] = { 22, 5, 8, 3, 2, 9, 4, 3, 9, 9 };
    int size1 = sizeof(array1) / sizeof(array1[0]);
    int size2 = sizeof(array2) / sizeof(array2[0]);
    std::sort(array1, array1 + size1);
 
    std::vector<std::pair<size_t, size_t>> intervals = GenerateProcessingIntervals(*array2, size2);
    const auto usedThreadCount = intervals.size();
    std::vector<std::thread> threads;
    threads.reserve(usedThreadCount);
    std::vector<std::vector<std::pair<std::size_t, std::size_t>>> foundPrimesPerThread(usedThreadCount);
     
    for (std::size_t threadIndex = 0; threadIndex != usedThreadCount; ++threadIndex) { 
        auto const interval = intervals[threadIndex];
    
        threads.emplace_back([=, &foundPrimesPerThread] () {
            std::vector<std::pair<std::size_t, std::size_t>> threadLocalCounts(interval.second);
            for (std::size_t i = 0; i != interval.second; ++i) {
                auto const value = array2[interval.first + i];
                auto const count = CountValue(array1, size1, value);
                threadLocalCounts[i] = { value, count };
            }
            
            foundPrimesPerThread[threadIndex] = std::move(threadLocalCounts);
        });
    }
    
    for (std::size_t index = 0; index < usedThreadCount; ++index)
        threads[index].join();
    
    for (auto const& threadLocalCounts : foundPrimesPerThread) {
       for (auto const& count : threadLocalCounts) {
          std::cout << "Value:" << count.first << "-" << count.second << std::endl;   
       }
    }
}
0
Заблокирован
19.06.2017, 16:01  [ТС]
gray_fox, спасибо, но я уже с функтором начал делать. а прыгать то туда то туда не хочу)

Добавлено через 2 минуты
и я не вижу где у вас лямбда( вижу просто форы с ифами
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
19.06.2017, 16:25
Цитата Сообщение от oksanavol Посмотреть сообщение
и я не вижу где у вас лямбда(
C++
1
2
3
4
5
6
7
8
9
10
[=, &foundPrimesPerThread] () {
   std::vector<std::pair<std::size_t, std::size_t>> threadLocalCounts(interval.second);
   for (std::size_t i = 0; i != interval.second; ++i) {
        auto const value = array2[interval.first + i];
        auto const count = CountValue(array1, size1, value);
        threadLocalCounts[i] = { value, count };
   }
            
   foundPrimesPerThread[threadIndex] = std::move(threadLocalCounts);
}
0
Заблокирован
19.06.2017, 19:40  [ТС]
gray_fox, а как на функтор поменять?
как я понимаю функтор єто клас или структура

Добавлено через 2 часа 11 минут
gray_fox, так я не могу в своей функции использовать код:
C++
1
2
3
4
5
6
7
8
9
10
[=, &foundPrimesPerThread] () {
   std::vector<std::pair<std::size_t, std::size_t>> threadLocalCounts(interval.second);
   for (std::size_t i = 0; i != interval.second; ++i) {
        auto const value = array2[interval.first + i];
        auto const count = CountValue(array1, size1, value);
        threadLocalCounts[i] = { value, count };
   }
            
   foundPrimesPerThread[threadIndex] = std::move(threadLocalCounts);
}
так как неизвестные переменые interval

Добавлено через 10 минут
я так переделала, но ошибки(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
void operator()()
    {
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            std::vector<std::pair<std::size_t, std::size_t>> threadCounts(mSize2);
            auto  value = mArray2[index];
            auto  count = CountValue(mArray1, mSize2, value);
            threadCounts[index] = { value, count };
            //std::cout << "Value:" << mArray2[index] << "-" << CountValue(mArray1, mSize2, mArray2[index]) << "\n";
            std::cout << "Value:" << count.first << "-" << count.second << "\n";
        }
    }
Добавлено через 7 минут
а если так то не правильно выводит
C++
1
2
3
4
5
6
7
8
9
10
11
void operator()()
    {
        for (std::size_t index = 0; index < mSize2; ++index)
        {
            std::vector<std::pair<std::size_t, std::size_t>> threadCounts(mSize2);
            auto  value = mArray2[index];
            auto  count = CountValue(mArray1, mSize2, value);
            threadCounts[index] = { value, count };
            std::cout << "Value:" << value << "-" << count << "\n";
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2017, 19:40

Найти сколько раз встречается в данном массиве число 14 и вывести это значения на экран
дан массив 9 на 9 заполнен случайными числами от 0-100найти сколько раз встречается в данном массиве число 14 и вывести это значения на...

Найти все повторяющиеся значения в массиве и вывести сколько раз каждое из них повторяется
Поиск элемента в массиве Дан массив 20 элементов целого типа. Все значения элементов генерируются случайным образом и лежат в...

Вывести максимальный элемент массива и указать, сколько раз он встречается в массиве
Дан одномерный массив размерностью N. Вывести максимальный элемент массива и указать сколько раз он встречается в массиве

Найти минимум в первом массиве, предварительно исключив элементы, совпадающие с элементами второго массива
В чём собственно суть знаменитый диктатор Ли Сий Сын имеет в своём распоряжении армию из 105 человек. Он упорядочил их по убыванию...

Как для каждого значения одного массива вывести все значения второго массива?
Как для каждого значения одного массива вывести все значения второго массива? Есть два массива: Array ( =&gt; 163 =&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru