StoneHaos

simon

Oct 5th, 2020
555
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "pch.h"
  2. #include <map>
  3. #include <iostream>
  4. #include <utility>
  5.  
  6. using namespace std;
  7.  
  8. typedef map <int, int>TMap; //определяем тип для работы со
  9.  
  10. typedef TMap::iterator it; //итератор
  11.  
  12. void print_map(TMap m)
  13. {
  14.     for (it i = m.begin(); i != m.end(); ++ i)
  15.         cout << i->first << ":" << i->second << "\n";
  16.     cout << "\n";
  17. }
  18.  
  19. TMap make_map(int n)
  20. {
  21.     TMap m; //пустой словарь
  22.     int a;
  23.     for (int i = 0; i < n; i++)
  24.     {
  25.         cout << " ? ";
  26.         cin >> a; //создаем пару и добавляем ее в словарь
  27.         m.insert(make_pair(i, a));
  28.     }
  29.     return m; //возвращаем словарь как результат работы функции
  30. }
  31.  
  32. int Max(TMap v)
  33. {
  34.     it i = v.begin();
  35.     int nom = 0;//номер максимального
  36.     int k = 0; // счетчик элементов
  37.     int m = (*i).second; //значение первого элемента
  38.     while (i != v.end())
  39.     {
  40.         if (m < (*i).second)
  41.         {
  42.             m = (*i).second;
  43.             nom = k;
  44.         }
  45.         i++; //итератор
  46.         k++; //счетчик элементов
  47.     }
  48.     return nom; // номер max
  49. }
  50.  
  51. int srednee(TMap v)
  52. {
  53.     int s = 0;
  54.     //перебор словаря
  55.     for (int i = 0; i < v.size(); i++)
  56.         s += v[i];
  57.     int n = v.size(); //количество элементов в словаре
  58.     return s / n;
  59. }
  60.  
  61.  
  62. int main()
  63. {
  64.     int n;
  65.     cout << "N?";
  66.     cin >> n;
  67.     TMap m = make_map(n);
  68.     print_map(m);
  69.         int max = Max(m);
  70.     cout << "max = " << m[max] << " nom = " << max << endl;
  71.     int el = srednee(m);
  72.     cout << "srednee = " << el << endl;
  73.     //добавление в конец
  74.     m.insert(make_pair(n, el));
  75.     m.erase(max); //удаление элемента
  76.     for (it i = m.begin(); i != m.end(); i++)
  77.         i->second+=el;
  78.     m.erase(srednee(m)); //удаление элемента
  79.     print_map(m);
  80. }
RAW Paste Data