Обновить main.cpp
This commit is contained in:
91
main.cpp
91
main.cpp
@@ -7,6 +7,7 @@
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <cstring>
|
||||
#include <iomanip> // Для форматирования вывода
|
||||
using namespace std;
|
||||
|
||||
@@ -177,6 +178,14 @@ void z3_16() {
|
||||
findWordCombination(fileName, combination);
|
||||
|
||||
|
||||
}
|
||||
bool isBinary(const string& str) {
|
||||
for (char c : str) {
|
||||
if (c != '0' && c != '1') {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
void z4_22() {
|
||||
int n;
|
||||
@@ -188,7 +197,13 @@ void z4_22() {
|
||||
for (int i = 0; i < n; ++i) {
|
||||
string binary;
|
||||
cin >> binary;
|
||||
binaryArray.push_back(binary);
|
||||
if (isBinary(binary)) {
|
||||
binaryArray.push_back(binary);
|
||||
}
|
||||
else {
|
||||
cout << "Ошибка: '" << binary << "' не является двоичным числом. Попробуйте снова.\n";
|
||||
--i; // Повторить ввод для текущей итерации
|
||||
}
|
||||
}
|
||||
|
||||
vector<string> base5Array;
|
||||
@@ -236,22 +251,26 @@ string convertToBase(int number, int base) {
|
||||
return result.empty() ? "0" : result; // Если число 0, вернуть "0"
|
||||
}
|
||||
void sieveOfEratosthenes(int n) {
|
||||
// Создаем вектор для хранения простоты чисел. Изначально считаем, что все числа простые.
|
||||
vector<bool> isPrime(n + 1, true);
|
||||
|
||||
// Создаем динаический массив для хранения информации о простых числах
|
||||
bool* isPrime = new bool[n + 1];
|
||||
|
||||
// 0 и 1 не являются простыми числами.
|
||||
// Изначально предполагаем, что все числа простые
|
||||
memset(isPrime, true, (n + 1) * sizeof(bool));
|
||||
|
||||
// 0 и 1 не являются простыми числами
|
||||
isPrime[0] = isPrime[1] = false;
|
||||
|
||||
// Решето Эратосфена
|
||||
for (int i = 2; i * i <= n; ++i) {
|
||||
if (isPrime[i]) {
|
||||
// Отмечаем все кратные i как составные.
|
||||
for (int j = i * i; j <= n; j += i) {
|
||||
isPrime[j] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Выводим все простые числа.
|
||||
// Вывод всех простых чисел
|
||||
cout << "Простые числа до " << n << ": ";
|
||||
for (int i = 2; i <= n; ++i) {
|
||||
if (isPrime[i]) {
|
||||
@@ -259,7 +278,11 @@ void sieveOfEratosthenes(int n) {
|
||||
}
|
||||
}
|
||||
cout << endl;
|
||||
|
||||
// Освобождаем память
|
||||
delete[] isPrime;
|
||||
}
|
||||
|
||||
void z2() {
|
||||
int n;
|
||||
cout << "Введите предел для поиска простых чисел: ";
|
||||
@@ -325,38 +348,42 @@ struct Country {
|
||||
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<Country> countries;
|
||||
int n;
|
||||
|
||||
cout << "Введите количество стран: ";
|
||||
cin >> n;
|
||||
|
||||
// Динамическое выделение памяти для массива стран
|
||||
Country* countries = new Country[n];
|
||||
|
||||
// Ввод данных
|
||||
for (int i = 0; i < n; ++i) {
|
||||
Country country;
|
||||
cout << "Введите название страны (пожалуйста на Английском): ";
|
||||
cin >> country.name;
|
||||
cin >> countries[i].name;
|
||||
cout << "Введите количество золотых, серебряных и бронзовых медалей: ";
|
||||
cin >> country.gold >> country.silver >> country.bronze;
|
||||
country.calculate();
|
||||
countries.push_back(country);
|
||||
cin >> countries[i].gold >> countries[i].silver >> countries[i].bronze;
|
||||
countries[i].calculate();
|
||||
}
|
||||
|
||||
// Сортировка стран
|
||||
sort(countries.begin(), countries.end(), compareByGold);
|
||||
sort(countries, countries + n, compareByGold);
|
||||
|
||||
// Сохранение данных в файл
|
||||
ofstream outFile("olympic_results.txt");
|
||||
if (!outFile) {
|
||||
cerr << "Ошибка открытия файла для записи!" << endl;
|
||||
|
||||
delete[] countries; // Освобождение памяти перед выходом
|
||||
return;
|
||||
}
|
||||
|
||||
outFile << left << setw(15) << "Страна"
|
||||
@@ -366,13 +393,13 @@ void z5_22() {
|
||||
<< 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;
|
||||
for (int i = 0; i < n; ++i) {
|
||||
outFile << left << setw(15) << countries[i].name
|
||||
<< setw(10) << countries[i].gold
|
||||
<< setw(10) << countries[i].silver
|
||||
<< setw(10) << countries[i].bronze
|
||||
<< setw(15) << countries[i].totalMedals
|
||||
<< setw(10) << countries[i].points << endl;
|
||||
}
|
||||
outFile.close();
|
||||
|
||||
@@ -384,28 +411,30 @@ void z5_22() {
|
||||
<< 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;
|
||||
for (int i = 0; i < n; ++i) {
|
||||
cout << left << setw(15) << countries[i].name
|
||||
<< setw(10) << countries[i].gold
|
||||
<< setw(10) << countries[i].silver
|
||||
<< setw(10) << countries[i].bronze
|
||||
<< setw(15) << countries[i].totalMedals
|
||||
<< setw(10) << countries[i].points << endl;
|
||||
}
|
||||
|
||||
cout << "Результаты сохранены в файл 'olympic_results.txt'." << endl;
|
||||
|
||||
// Освобождаем память
|
||||
delete[] countries;
|
||||
}
|
||||
void showMenu() {
|
||||
cout << "Меню задач:\n";
|
||||
cout << "1. «Алгоритм Евклида»\n";
|
||||
cout << "2. «Решето какого-то чела»\n";
|
||||
cout << "2. «Решето какого-то чела»\n"; // готов
|
||||
cout << "3. 3.16\n";
|
||||
cout << "4. 3.22\n";
|
||||
cout << "6. 4.16\n";
|
||||
cout << "7. 4.22\n";
|
||||
cout << "7. 4.22\n";// готов
|
||||
cout << "8. 5.16\n";
|
||||
cout << "9. 5.22\n";// Динамическй массив country ????
|
||||
cout << "9. 5.22\n";// готово
|
||||
cout << "0. Выход\n";
|
||||
}
|
||||
void launchTasks() {
|
||||
|
||||
Reference in New Issue
Block a user