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