Advertisement
SomniP

Подсчёт вхождений элементов массива B в массив A

Dec 19th, 2018
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <ctime>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <set>
  7. #include <map>
  8. #include <iomanip>
  9. #include <string>
  10.  
  11. using namespace std;
  12.  
  13. int main()
  14. {
  15.     SetConsoleCP(1251);
  16.     SetConsoleOutputCP(1251);
  17.     srand(time(NULL));
  18.     system("color 0A");
  19.  
  20.     cout << "Введите через пробел длину массива a и b ";
  21.     size_t sa, sb;
  22.     cin >> sa >> sb;
  23.     vector<int> a(sa);
  24.     vector<int> b(sb);
  25.     vector<int> x;
  26.     auto filler = []()
  27.     {
  28.         auto value = rand() % 11;
  29.         cout << setw(4u) << value;
  30.         return value;
  31.     };
  32.     cout << "Содержание массива a" << endl;
  33.     generate(a.begin(), a.end(), filler);
  34.     cout << endl;
  35.     cout << endl;
  36.     cout << "Содержание массива b" << endl;
  37.     generate(b.begin(), b.end(), filler);
  38.     cout << endl;
  39.     cout << endl;
  40.  
  41.     map<int, size_t> mp;
  42.     set<int> st;
  43.     for (const auto &value : b)
  44.     {
  45.         st.insert(value);
  46.     }
  47.     for (const auto &value : st)
  48.     {
  49.         mp.insert(make_pair(value, 0));
  50.     }
  51.     for (const auto &value : a)
  52.     {
  53.         ++mp[value];
  54.     }
  55.     for (const auto &value : b)
  56.     {
  57.         x.push_back(mp[value]);
  58.     }
  59.     cout << "Содержание массива x" << endl;
  60.     for (const auto &value : x)
  61.     {
  62.         cout << setw(4u) << value;
  63.     }
  64.     cout << endl;
  65.     cout << endl;
  66.     vector<pair<int, size_t>> xx;
  67.     for (const auto &value : st)
  68.     {
  69.         xx.push_back(make_pair(value, mp[value]));
  70.     }
  71.     auto predicate = [](
  72.         pair<int, size_t> p1,
  73.         pair<int, size_t> p2
  74.         )
  75.     {
  76.         return p1.second > p2.second;
  77.     };
  78.     sort(xx.begin(), xx.end(), predicate);
  79.     auto maxx = xx[0u].second;
  80.     if (maxx == 0u)
  81.     {
  82.         cout << "Элементов массива B, входящих в массив A не обнаружено" << endl;
  83.     }
  84.     else
  85.     {
  86.         cout << "Элемент(ы) массива В чаще всего встречающийся(еся) в А" << endl;
  87.         for (const auto &value : xx)
  88.         {
  89.             if (value.second == maxx)
  90.             {
  91.                 cout << value.first << endl;
  92.             }
  93.             else
  94.             {
  95.                 break;
  96.             }
  97.         }
  98.     }
  99.     cout << endl;
  100.  
  101.     system("pause");
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement