#include #include #include #include #include #include #include #include #include #include #include // Для форматирования вывода #include #include #include #include #include using namespace std; void sieveOfEratosthenes(int n) { // Создаем динаический массив для хранения информации о простых числах bool* isPrime = new bool[n + 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]) { for (int j = i * i; j <= n; j += i) { isPrime[j] = false; } } } // Вывод всех простых чисел cout << "Простые числа до " << n << ": "; for (int i = 2; i <= n; ++i) { if (isPrime[i]) { cout << i << " "; } } cout << endl; // Освобождаем память delete[] isPrime; } void z2() { int n; cout << "Введите предел для поиска простых чисел: "; cin >> n; if (n < 2) { cout << "Простых чисел нет." << endl; } else { sieveOfEratosthenes(n); } } void z3_13() { // Имя файла, куда будем записывать текст string fileName = "output.txt"; // Открываем файл для записи ofstream outFile(fileName); // Проверяем, открылся ли файл if (!outFile) { cerr << "Ошибка при открытии файла!" << endl; } // Текст для записи string text = "Im not racicst, or anything. I am"; // Записываем текст в файл outFile << text << endl; // Закрываем файл outFile.close(); cout << "Текст успешно записан в файл " << fileName << endl; } void z4_13() { int m; cout << "Введите натуральное число m (m < 27): "; cin >> m; if (m <= 0 || m >= 27) { cout << "Число m должно быть больше 0 и меньше 27." << endl; } cout << "Трехзначные числа, сумма цифр которых равна " << m << ":" << endl; // Перебор всех трёхзначных чисел for (int number = 100; number <= 999; ++number) { int sum = 0; int temp = number; // Считаем сумму цифр числа while (temp > 0) { sum += temp % 10; // Добавляем последнюю цифру temp /= 10; // Убираем последнюю цифру } // Проверяем сумму if (sum == m) { cout << number << " "; } } cout << endl; } void printFile(const string& filename) { ifstream file(filename); if (!file) { cerr << "Не удалось открыть файл: " << filename << endl; return; } cout << "Содержимое файла \"" << filename << "\":" << endl; int number; while (file >> number) { cout << number << " "; } cout << endl; file.close(); } void customSort(vector& arr) { int n = arr.size(); for (int i = 0; i < n - 1; ++i) { for (int j = 0; j < n - i - 1; ++j) { if (arr[j] > arr[j + 1]) { // Меняем местами элементы int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } void z5_13() { const string inputFileName = "input.txt"; const string outputFileName = "output.txt"; int M; cout << "Введите количество чисел M: "; cin >> M; if (M <= 0) { cerr << "M должно быть положительным числом." << endl; } // Генерация M случайных чисел и запись их в файл ofstream inputFile(inputFileName); if (!inputFile) { cerr << "Ошибка при открытии файла для записи: " << inputFileName << endl; } srand(time(nullptr)); // Инициализация генератора случайных чисел for (int i = 0; i < M; ++i) { int randomNumber = rand() % 100; // Генерация числа от 0 до 99 inputFile << randomNumber << " "; } inputFile.close(); // Вывод содержимого исходного файла printFile(inputFileName); // Чтение чисел из файла ifstream inputFileRead(inputFileName); if (!inputFileRead) { cerr << "Ошибка при открытии файла для чтения: " << inputFileName << endl; } vector numbers; int number; while (inputFileRead >> number) { numbers.push_back(number); } inputFileRead.close(); // Подсчет количества повторений каждого числа map frequency; for (int num : numbers) { frequency[num]++; } // Нахождение максимального количест повторений int maxFrequency = 0; for (const auto& pair : frequency) { if (pair.second > maxFrequency) { maxFrequency = pair.second; } } // Сохранение чисел с максимальным количеством повторений vector mostFrequentNumbers; for (const auto& pair : frequency) { if (pair.second == maxFrequency) { mostFrequentNumbers.push_back(pair.first); } } // Сортировка чисел с максимальным количеством повторений customSort(mostFrequentNumbers); // Запись результатов в файл ofstream outputFile(outputFileName); if (!outputFile) { cerr << "Ошибка при открытии файла для записи: " << outputFileName << endl; } for (int num : mostFrequentNumbers) { outputFile << num << " "; } outputFile.close(); // Вывод содержимого результирующего файла printFile(outputFileName); } void z5_47() { int n; cout << "Введите размер массива: "; cin >> n; if (n <= 0) { cerr << "Размер массива должен быть положительным числом." << endl; } vector array(n); cout << "Введите элементы массива: "; for (int i = 0; i < n; ++i) { cin >> array[i]; } // Словарь для хранения частоты элементов и их индексов map> frequency; // Заполнение словаря for (int i = 0; i < n; ++i) { frequency[array[i]].push_back(i); } // Проверка наличия повторяющихся элементов vector duplicates; // Хранение уникальных повторяющихся элементов for (const auto& pair : frequency) { // auto - объявление переменной со сложным типом; const - переменнеая не может быть изменена if (pair.second.size() > 1) { // Если элемент повторяется duplicates.push_back(pair.first); } } if (duplicates.empty()) { cout << "В массиве нет повторяющихся элементов." << endl; } cout << "Повторяющиеся элементы найдены. Их количество: " << duplicates.size() << endl; // Сортировка повторяющихся элементов sort(duplicates.begin(), duplicates.end()); cout << "Повторяющиеся элементы: "; for (int num : duplicates) { cout << num << " "; } cout << endl; // Вывод положения каждого повторяющегося элемента for (int num : duplicates) { cout << "Элемент " << num << " встречается на позициях: "; for (int index : frequency[num]) { cout << index << " "; } cout << endl; } } int main() { setlocale(LC_ALL, ""); cout << "Задание 2"< "Запуск без отладки" // Отладка программы: F5 или меню "Отладка" > "Запустить отладку" // Советы по началу работы // 1. В окне обозревателя решений можно добавлять файлы и управлять ими. // 2. В окне Team Explorer можно подключиться к системе управления версиями. // 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения. // 4. В окне "Список ошибок" можно просматривать ошибки. // 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода. // 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.