
Курсовая работа / Готовая КР(Тема Конкурс)
.pdfID, имена, заработанные баллы.
3.7Выходные данные
Выходные данные – это файл с списком участников упорядоченный по
набранным баллам.
24
ЗАКЛЮЧЕНИЕ
Разработанная программа «Конкурс» полностью соответствует требованиям технического задания. Она успешно выполняет все заявленные функции: регистрацию участников, ввод и сохранение баллов, подведение итогов и сохранение результатов в файл. Программа эффективно автоматизирует процесс проведения конкурсных мероприятий, обеспечивая точный подсчет баллов и формирование рейтингов участников. Результаты работы программы представлены в четком и понятном формате. Программа готова к использованию для автоматизации различных конкурсных процедур.
25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Лозовский В.В. Алгоритмические основы обработки данных: учебное пособие / Лозовский В.В., Платонова О.В., Штрекер Е.Н. — М.: МИРЭА – Российский технологический университет, 2022. – 337 с.
2.Платонова О.В. Алгоритмические основы обработки данных:
методические указания / Платонова О.В., Асадова Ю.С., Расулов М.М. — М.:
МИРЭА – Российский технологический университет, 2022. — 73 с.
3.Белик А.Г. Алгоритмы и структуры данных: учебное пособие / А.Г.
Белик, В.Н. Цыганенко. — Омск: ОмГТУ, 2022. — 104 с. — ISBN 978-5-8149- 3498-7. —
Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/343688 (дата обращения:28.10.2024)
4.Павлов Л.А. Структуры и алгоритмы обработки данных / Л.А. Павлов,
Н.В. Первова. — 2-е изд., стер. — Санкт-Петербург: Лань, 2022. — 256 с. —
ISBN 978- 5-507-44105-1. — Текст: электронный // Лань: электронно-
библиотечная система.
— URL: https://e.lanbook.com/book/207563 (дата обращения: 28.10.2024)
5. Пантелеев Е.Р. Алгоритмы и структуры данных: учебное пособие / Е.Р. Пантелеев, А.Л. Алыкова. — Иваново: ИГЭУ, 2018. — 142 с. —
Текст: электронный // Лань: электронно-библиотечная система. — URL: https://e.lanbook.com/book/154576 (дата обращения:28.10.2024)
26

ПРИЛОЖЕНИЕ А
Листинг A.1 — Основная программа
#include <iostream> #include <vector> #include <fstream> #include <algorithm> #include <string>
using namespace std;
struct Contestant { int id;
string name; int score;
};
int main() { setlocale(LC_ALL, "Rus");
vector<Contestant> contestants; int maxContestants, maxPrizes, x;
cout << "Выберите:" << endl << "Начать новую запись на конкурс?(1)" << endl
<<
"Продолжить запись на конкурс?(2)" << endl; cin >> x;
if (x == 1) {
std::cout << "Введите максимальное количество участников: "; cin >> maxContestants;
std::cout << "Введите максимальное количество призовых мест: "; cin >> maxPrizes;
std::cout << "Конкурс открыт!\n";
int choice; do {
std::cout << "\nВыберите действие:\n"; std::cout << "1. Зарегистрировать участника\n";
std::cout << "2. Завершить регистрацию участников\n"; std::cout << "3. Приостоновка регистрации участников\n"; cin >> choice;
if (choice == 1) {
if (contestants.size() < maxContestants) { Contestant newContestant;
std::cout << "Введите идентификационный номер участника: "; cin >> newContestant.id;
std::cout << "Введите имя участника: "; cin >> newContestant.name;
newContestant.score = 0; // Изначально баллы 0 contestants.push_back(newContestant); std::cout << "Участник зарегистрирован.\n";
} else {
std::cout << "Достигнут максимальный лимит участников.\n";
}
}
if (choice == 3) {
ofstream outfile("contestants.txt"); outfile << maxContestants << endl;
27

Продолжение листинга A.1
outfile << maxPrizes << endl;
for (const Contestant& contestant : contestants) {
outfile << contestant.id << endl << contestant.name << endl << contestant.score << endl;
}
outfile.close();
exit(1);
}
} while (choice != 2);
ofstream outfile("contestants.txt");
for (const Contestant& contestant : contestants) {
outfile << contestant.id << "," << contestant.name << "," << contestant.score << endl;
}
outfile.close(); } else if (x == 2) {
ifstream infile("contestants.txt"); string t;
getline(infile, t); maxContestants = stoi(t); getline(infile, t); maxPrizes = stoi(t);
while (getline(infile, t)) { Contestant newContestant; int c = stoi(t); newContestant.id = c; getline(infile, t); newContestant.name = t; getline(infile, t);
newContestant.score = stoi(t); contestants.push_back(newContestant);
}
int choice; do {
std::cout << "\nВыберите действие:\n"; std::cout << "1. Зарегистрировать участника\n";
std::cout << "2. Завершить регистрацию участников\n"; std::cout << "3. Приостоновка регистрации участников\n"; cin >> choice;
if (choice == 1) {
if (contestants.size() < maxContestants) { Contestant newContestant;
std::cout << "Введите идентификационный номер участника: "; cin >> newContestant.id;
std::cout << "Введите имя участника: "; cin >> newContestant.name;
newContestant.score = 0; // Изначально баллы 0 contestants.push_back(newContestant); std::cout << "Участник зарегистрирован.\n";
} else {
std::cout << "Достигнут максимальный лимит участников.\n";
}
}
if (choice == 3) {
ofstream outfile("contestants.txt"); outfile << maxContestants << endl; outfile << maxPrizes << endl;
for (const Contestant& contestant : contestants) {
outfile << contestant.id << endl << contestant.name << endl
28

Продолжение листинга A.1
<< contestant.score << endl;
}
outfile.close();
exit(1);
}
} while (choice != 2);
}
std::cout << "Конкурс начался!\n"; int cho;
do {
int id, score;
std::cout << "\nВведите идентификационный номер участника: "; cin >> id;
std::cout << "Введите баллы участника: "; cin >> score;
// Нахождение участника по ID bool found = false;
for (Contestant& contestant : contestants) { if (contestant.id == id) {
contestant.score = score; found = true;
break;
}
}
if (!found) {
std::cout << "Участник с таким идентификационным номером не
найден.\n";
}
std::cout << "Продолжить регистрацию баллов? (1 - да, 0 - нет): "; cin >> cho;
} while (cho != 0);
std::cout << "Конкурс завершен!\n";
// Сортировка участников по убыванию баллов std::sort(contestants.begin(), contestants.end(), [](const Contestant& a,
const Contestant& b) {
return a.score > b.score;
});
// Вывод результатов на экран
std::cout << "\nРезультаты конкурса:\n"; std::cout << "ID, Имя, Баллы\n";
int k = 0;
for (const Contestant& contestant : contestants) { if (k == maxPrizes) {
cout << "^^^^^^^^^^^\n|||||||||||\n<ПРИЗОВЫЕ>\n";
}
std::cout << contestant.id << ", " << contestant.name << ", " << contestant.score << endl;
k = k + 1;
}
// Сохранение результатов в файл ofstream outfil("results.txt"); outfil << "ID, Имя, Баллы\n";
for (const Contestant& contestant : contestants) {
outfil << contestant.id << "," << contestant.name << "," << contestant.score << endl;
}
outfil.close();
// Adding a pause before exiting system("pause");
return 0;
}
29