Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите написать программу на c++

Luminous Ученик (126), закрыт 10 месяцев назад
Ученики трех школ города принимают участие в тестировании по математике. Правильные численные ответы к пяти предложенным задачам даны. О каждом ученике известно: фамилия, номер школы и пять ответов на задачи. Составить списки учеников по школам, расположив в каждом списке фамилии в порядке убывания количества решенных задач. Предусмотреть возможный ответ «не решил». Выполнить сортировку списка.
Лучший ответ
Николай Веселуха Высший разум (358403) 10 месяцев назад
 #include  
#include
#include
#include
using namespace std;
struct Learner {
int number;
vector results;
string name;
Learner() : number(0) {}
Learner(int number, const vector& results, const string& name)
: number(number), results(results), name(name) {}
private:
size_t answers()const {
auto compare = [](short x) { return x != 0; };
return count_if(results.begin(), results.end(), compare);
}
friend bool operator<(const Learner& a, const Learner& b) {
if (a.number < b.number) return true;
if (a.number == b.number) {
auto equals = a.answers() == b.answers();
if (!equals) return a.answers() > b.answers();
return a.name < b.name;
}
return false;
}
friend ostream& operator<<(ostream& out, const Learner& learner) {
out << left << setw(30) << learner.name << "Школа № " << learner.number;
out << ". Результаты: ";
const auto result = learner.answers();
if (!result) puts(" не решил");
else {
out << result << " решени";
switch (result) {
case 1: puts("е"); break;
case 5: puts("й"); break;
default: puts("я");
}
}
return out;
}
};
class TestResults {
public:
void add(Learner&& lerner) {
table.emplace_back(move(lerner));
}
void add(const Learner& lerner) {
table.push_back(lerner);
}
void order() {
sort(table.begin(), table.end());
}
void show()const {
for (const auto& record : table) cout << record;
}
private:
vector table;
};
int main() {
TestResults results;
results.add({ 1, { 1, 0, 1, 1, 0 }, "Анисин С. В." });
results.add({ 3, { 0, 1, 1, 1, 1 }, "Бобров Е. Ф." });
results.add({ 1, { 1, 1, 1, 1, 1 }, "Волков И. И." });
results.add({ 2, { 0, 0, 0, 0, 0 }, "Горбонос А. С." });
results.add({ 1, { 1, 0, 0, 0, 1 }, "Иванова Т. В." });
results.add({ 3, { 1, 0, 1, 0, 1 }, "Кадочников В. Р." });
results.add({ 4, { 1, 1, 1, 1, 1 }, "Кац С. Я." });
results.add({ 3, { 1, 1, 0, 1, 1 }, "Санина И. М." });
results.add({ 4, { 1, 1, 1, 0, 0 }, "Тимофеева-Летуновская И. Т." });
results.add({ 4, { 1, 1, 0, 0, 1 }, "Хромов А. К." });
results.add({ 4, { 1, 0, 1, 0, 1 }, "Хромова Е. К." });
results.add({ 2, { 0, 0, 0, 0, 1 }, "Щукина Т. Н." });
Learner danilov{ 2, { 1, 0, 1, 1, 1 }, "Данилов Г. В. " };
results.add(danilov);
results.order();
results.show();
}
Остальные ответы
rsad Ученик (114) 10 месяцев назад
#include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;
int main(){
const int n=20; float x[n];
cout<<n<<" numbers\n"; for(float &i:x)cin>>i;
float *k=min_element(x,x+n);
*k=accumulate(k+1,x+n,0.);
for(float &i:x)cout<<i<<' '; cout<<endl;}
СОВА ⭐ [expert] Мастер (2469) 10 месяцев назад
 #include  
#include
#include

struct Student {
std::string lastName;
int schoolNumber;
std::vector answers;
};

bool compareStudents(const Student& student1, const Student& student2) {
int solved1 = std::count(student1.answers.begin(), student1.answers.end(), 1);
int solved2 = std::count(student2.answers.begin(), student2.answers.end(), 1);
return solved1 > solved2;
}

int main() {
std::vector students;

// Добавление учеников и их ответов на задачи
students.push_back({ "Иванов", 1, { 1, 0, 1, 0, 1 } });
students.push_back({ "Петров", 2, { 1, 1, 0, 1, 0 } });
students.push_back({ "Сидоров", 1, { 0, 0, 1, 1, 1 } });
students.push_back({ "Смирнов", 3, { 0, 1, 0, 1, 0 } });
students.push_back({ "Кузнецов", 2, { 1, 1, 1, 1, 1 } });

// Сортировка учеников по количеству решенных задач
std::sort(students.begin(), students.end(), compareStudents);

// Вывод списка учеников по школам
int currentSchool = 0;
for (const auto& student : students) {
if (student.schoolNumber != currentSchool) {
currentSchool = student.schoolNumber;
std::cout << "Школа " << currentSchool << ":\n";
}
std::cout << student.lastName << std::endl;
}

return 0;
}
бабуин прокофьевич Просветленный (34113) 10 месяцев назад
 #include  
#include
#include
#include

struct Student {
std::string lastName;
int schoolNumber;
int solvedProblems;
};

bool compareStudents(const Student& student1, const Student& student2) {
return student1.solvedProblems > student2.solvedProblems;
}

int main() {
// Создаем вектор студентов
std::vector students;

// Заполняем информацию о студентах (фамилия, номер школы, количество решенных задач)
students.push_back({"Иванов", 1, 3});
students.push_back({"Петров", 1, 4});
students.push_back({"Сидоров", 2, 5});
students.push_back({"Смирнов", 2, 2});
students.push_back({"Козлов", 3, 1});
students.push_back({"Васильев", 3, 3});

// Сортируем студентов по количеству решенных задач
std::sort(students.begin(), students.end(), compareStudents);

// Выводим отсортированный список студентов
std::cout << "Списки учеников по школам:\n";

int currentSchoolNumber = -1;

for (const auto& student : students) {
if (student.schoolNumber != currentSchoolNumber) {
std::cout << "Школа " << student.schoolNumber << ":\n";
currentSchoolNumber = student.schoolNumber;
}

std::cout << student.lastName << " - " << student.solvedProblems << " задач\n";
}

return 0;
}
Программа создает структуру Student, содержащую информацию о фамилии студента, номере школы и количестве решенных задач. Затем создается вектор students, в котором хранится информация о каждом ученике.

Функция compareStudents используется для сравнения студентов при сортировке по количеству решенных задач в порядке убывания.

Затем вектор students сортируется с помощью функции std::sort, используя функцию сравнения compareStudents.

Наконец, программа выводит списки учеников по школам, в порядке убывания количества решенных задач.

Примечание: В примере используются жестко заданные данные о студентах. Вы можете изменить эту часть программы и добавить свои данные или считывать данные из файла или с клавиатуры в соответствии с вашими требованиями.
Похожие вопросы