На вход программы подаются сведения о результатах соревнований по школьному многоборью. Многоборье состоит из соревнований по четырем видам спорта, участие в каждом из которых оценивается баллами от 0 до 10 (0 баллов получает ученик, не принимавший участия в соревнованиях по данному виду спорта). Победители определяются по наибольшей сумме набранных баллов. Известно, что общее количество участников соревнований не превосходит 100.
В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат:
<Фамилия> <Имя> <Баллы>
Здесь <Фамилия> – строка, состоящая не более чем из 20 символов; <Имя> – строка, состоящая не более чем из 15 символов; <Баллы> - строка, содержащая четыре целых числа, разделенных пробелом, соответствующих баллам, полученным на соревнованиях по каждому из четырех видов спорта. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> разделены одним пробелом. Примеры входных строк:
Иванова Мария 5 8 6 3
Петров Сергей 9 9 5 7
Напишите программу, которая будет выводить на экран фамилии и имена трех лучших участников многоборья. Если среди остальных участников есть ученики, набравшие то же количество баллов, что и один из трех лучших, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.
C/C++
Задание с использование библиотечных функций С++. Нужен код. Помогите, пожалуйста.
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <numeric>
#include <set>
#include <vector>
using namespace std;
class Result {
public:
int sum()const {
return accumulate(box.begin(), box.end(), 0);
}
private:
string surname;
string name;
vector<short> box;
friend istream& operator>>(istream& inp, Result& res) {
string line;
getline(inp, line);
istringstream iss(line);
iss >> res.surname >> res.name;
int value;
res.box.clear();
res.box.shrink_to_fit();
while (iss >> value) res.box.push_back(value);
return inp;
}
friend ostream& operator<<(ostream& out, const Result& res) {
return out << res.surname << ' ' << res.name << ' ' << res.sum();
}
friend bool operator>(const Result& a, const Result& b) {
return a.sum() > b.sum();
}
friend bool operator==(const Result& a, const Result& b) {
return a.sum() == b.sum();
}
};
class Results {
public:
void insert(const Result& res) {
box.insert(res);
}
vector<Result> prizewinners()const {
vector<Result> res;
for (const auto& x : box) {
if (res.size() < 3) res.push_back(x);
else {
if (res.at(res.size() - 1) == x) res.push_back(x);
else break;
}
}
return res;
}
private:
set<Result, greater<>> box;
};
int main() {
system("chcp 1251 > nul");
int n;
cin >> n;
cin.ignore(cin.rdbuf()->in_avail());
Result res;
Results list;
for (auto i = 0; i < n; ++i) {
cin >> res;
list.insert(res);
}
puts("");
auto box = list.prizewinners();
for (auto& x : box) cout << x << '\n';
system("pause > nul");
}
#include <string>
#include <vector>
#include <sstream>
#include <numeric>
#include <set>
#include <vector>
using namespace std;
class Result {
public:
int sum()const {
return accumulate(box.begin(), box.end(), 0);
}
private:
string surname;
string name;
vector<short> box;
friend istream& operator>>(istream& inp, Result& res) {
string line;
getline(inp, line);
istringstream iss(line);
iss >> res.surname >> res.name;
int value;
res.box.clear();
res.box.shrink_to_fit();
while (iss >> value) res.box.push_back(value);
return inp;
}
friend ostream& operator<<(ostream& out, const Result& res) {
return out << res.surname << ' ' << res.name << ' ' << res.sum();
}
friend bool operator>(const Result& a, const Result& b) {
return a.sum() > b.sum();
}
friend bool operator==(const Result& a, const Result& b) {
return a.sum() == b.sum();
}
};
class Results {
public:
void insert(const Result& res) {
box.insert(res);
}
vector<Result> prizewinners()const {
vector<Result> res;
for (const auto& x : box) {
if (res.size() < 3) res.push_back(x);
else {
if (res.at(res.size() - 1) == x) res.push_back(x);
else break;
}
}
return res;
}
private:
set<Result, greater<>> box;
};
int main() {
system("chcp 1251 > nul");
int n;
cin >> n;
cin.ignore(cin.rdbuf()->in_avail());
Result res;
Results list;
for (auto i = 0; i < n; ++i) {
cin >> res;
list.insert(res);
}
puts("");
auto box = list.prizewinners();
for (auto& x : box) cout << x << '\n';
system("pause > nul");
}
Губернатор
Почему выводит только sh: 1: chcp: not found?
Похожие вопросы
- С++, реализовать код с помощью функции, помогите пожалуйста, очень нужно
- Здравствуйте, помогите пожалуйста написать программу на C++ с использованием функций
- Помогите пожалуйста написать код.(C++)
- Задание 4 по Теме Функции. Перегрузка Функций. Рекурсия. На языке программирования C++
- Помогите, пожалуйста, исправить ошибку в коде (C++).
- Помогите, пожалуйста, срочно. Прокомментировать код на Си
- Помогите пожалуйста написать код на c++, выводящий имя, фамилию и дату рождения нескольких человек
- Помогите пожалуйста написать код на C++
- Срочно!!! Помогите пожалуйста написать код к задачке на с++! Заранее спасибо!
- Помогите пожалуйста с кодом на с++