Другие языки программирования и технологии

Помощь в С++ (одномерный массивы) опишите код

Даны список футбольных команд высшей лиги России и количество очков, набранных каждой командой в чемпионате России. Известно, что нет команд с равным числом очков, а две команды, набравшие наименьшее число очков, покинут высшую лигу. Какие это команды?
NA
Nurik Akhmet
103
Конвертни в map < int, string > data; и выбирай два первых элемента
Дмитрий Сохов
Дмитрий Сохов
97 457
Лучший ответ
#include <iostream>
#include <windows.h>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>

using namespace std;

template<typename T>
T protected_input();

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");

cout << "Укажите количество команд ";
size_t n;
for (;;)
{
n = protected_input<size_t>();
if (n >= 2u)
{
break;
}
else
{
cout << "Недопустимо менее 2 команд. Повторите ввод" << endl;
}
}
vector<pair<string, size_t>> box(n);
size_t ind = 0u;
auto filler = [&ind]()
{
string name;
size_t cnt;
cout << "Введите название " << ++ind << " команды ";
if (cin.rdbuf()->in_avail())
{
cin.ignore(cin.rdbuf()->in_avail(), '\n');
}
getline(cin, name);
cout << "Введите количество очков, набранных " << ind << " командой ";
cnt = protected_input<size_t>();
return make_pair(name, cnt);
};
generate(box.begin(), box.end(), filler);
auto predicate = [](
pair<string, size_t> p1,
pair<string, size_t> p2
)
{
return p1.second < p2.second;
};
sort(box.begin(), box.end(), predicate);
cout << endl;
cout << "Высшую лигу покинут следующие команды: " << endl;
cout << endl;
cout << "Название " << box[0u].first << endl;
cout << "Название " << box[1u].first << endl;

system("pause");
return 0;
}

template<typename T>
T protected_input()
{
T a;
for (;;)
{
string input;
getline(cin, input);
string str;
stringstream ss(input);
stringstream ss2;
ss >> a;
ss2 << a;
getline(ss2, str);
if (input == str)
{
break;
}
else
{
cout << "Ошибка. Повторите ввод" << endl;
}
}
return a;
}
Nurik Akhmet спасибо большое
)