From 658246f5a6dd4bdd9f0ec14fe3289350227f448b Mon Sep 17 00:00:00 2001 From: oltnd Date: Sat, 23 Nov 2024 17:08:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20main.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 136 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index c6fac7f..a86046e 100644 --- a/main.cpp +++ b/main.cpp @@ -7,6 +7,7 @@ #include #include #include +#include // Для форматирования вывода using namespace std; // Функция перевода из двоичной строки в десятичное число @@ -210,9 +211,142 @@ void z4_16() { cout << "Результат вычислений: y = " << y << endl; } +string convertToBase(int number, int base) { + string result; + const char digits[] = "0123456789"; + while (number > 0) { + result += digits[number % base]; + number /= base; + } + reverse(result.begin(), result.end()); + return result.empty() ? "0" : result; // Если число 0, вернуть "0" +} +void z5_16() { + string inputFile = "input.txt"; // Исходный файл + string outputFile = "output.txt"; // Файл для результатов + ifstream inFile(inputFile); + ofstream outFile(outputFile); + + if (!inFile.is_open()) { + cerr << "Не удалось открыть файл " << inputFile << endl; + + } + + if (!outFile.is_open()) { + cerr << "Не удалось открыть файл " << outputFile << endl; + + } + + int base; + cout << "Введите целевую систему счисления (от 2 до 9): "; + cin >> base; + + if (base < 2 || base > 9) { + cerr << "Система счисления должна быть в пределах от 2 до 9." << endl; + + } + + string hexNumber; + while (inFile >> hexNumber) { + int decimalNumber = stoi(hexNumber, nullptr, 16); // Преобразование из 16-й в 10-ю систему + string converted = convertToBase(decimalNumber, base); + outFile << converted << endl; + } + + cout << "Перевод завершен. Результаты сохранены в файл " << outputFile << endl; + + inFile.close(); + outFile.close(); +} +// Структура для хранения данных о стране +struct Country { + string name; + int gold; + int silver; + int bronze; + int totalMedals; + int points; + + // Вычислить общее число медалей и очков + void calculate() { + totalMedals = gold + silver + bronze; + points = gold * 7 + silver * 6 + bronze * 5; + } +}; +bool compareByGold(const Country& a, const Country& b) { + if (a.gold != b.gold) { + return a.gold > b.gold; // Сортировка по золотым медалям + } + return a.totalMedals > b.totalMedals; // Вторичная сортировка по общему количеству медалей +} +void z5_22() { + vector countries; + int n; + + cout << "Введите количество стран: "; + cin >> n; + + // Ввод данных + for (int i = 0; i < n; ++i) { + Country country; + cout << "Введите название страны (пожалуйста на Английском): "; + cin >> country.name; + cout << "Введите количество золотых, серебряных и бронзовых медалей: "; + cin >> country.gold >> country.silver >> country.bronze; + country.calculate(); + countries.push_back(country); + } + + // Сортировка стран + sort(countries.begin(), countries.end(), compareByGold); + + // Сохранение данных в файл + ofstream outFile("olympic_results.txt"); + if (!outFile) { + cerr << "Ошибка открытия файла для записи!" << endl; + + } + + outFile << left << setw(15) << "Страна" + << setw(10) << "Золото" + << setw(10) << "Серебро" + << setw(10) << "Бронза" + << setw(15) << "Всего Медалей" + << setw(10) << "Очки" << endl; + + for (const auto& country : countries) { + outFile << left << setw(15) << country.name + << setw(10) << country.gold + << setw(10) << country.silver + << setw(10) << country.bronze + << setw(15) << country.totalMedals + << setw(10) << country.points << endl; + } + outFile.close(); + + // Вывод данных на экран + cout << left << setw(15) << "Страна" + << setw(10) << "Золото" + << setw(10) << "Серебро" + << setw(10) << "Бронза" + << setw(15) << "ВсегоМедалей" + << setw(10) << "Очки" << endl; + + for (const auto& country : countries) { + cout << left << setw(15) << country.name + << setw(10) << country.gold + << setw(10) << country.silver + << setw(10) << country.bronze + << setw(15) << country.totalMedals + << setw(10) << country.points << endl; + } + + cout << "Результаты сохранены в файл 'olympic_results.txt'." << endl; + +} int main() { - setlocale(LC_ALL, ""); + setlocale(LC_ALL, "Russian"); /*z1launcher();*/ - z4_16(); + z5_22(); return 0; }