Обновить eminidinahuy.cpp
This commit is contained in:
294
eminidinahuy.cpp
294
eminidinahuy.cpp
@@ -1 +1,293 @@
|
|||||||
// 13 47
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <cctype>
|
||||||
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <cmath>
|
||||||
|
#include <cstring>
|
||||||
|
#include <iomanip> // Для форматирования вывода
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <random>
|
||||||
|
#include <ctime>
|
||||||
|
#include <set>
|
||||||
|
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 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<int> numbers;
|
||||||
|
int number;
|
||||||
|
while (inputFileRead >> number) {
|
||||||
|
numbers.push_back(number);
|
||||||
|
}
|
||||||
|
inputFileRead.close();
|
||||||
|
|
||||||
|
// Подсчет количества повторений каждого числа
|
||||||
|
map<int, int> frequency;
|
||||||
|
for (int num : numbers) {
|
||||||
|
frequency[num]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Нахождение максимального количества повторений
|
||||||
|
int maxFrequency = 0;
|
||||||
|
for (const auto& pair : frequency) {
|
||||||
|
if (pair.second > maxFrequency) {
|
||||||
|
maxFrequency = pair.second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Сохранение чисел с максимальным количеством повторений
|
||||||
|
vector<int> mostFrequentNumbers;
|
||||||
|
for (const auto& pair : frequency) {
|
||||||
|
if (pair.second == maxFrequency) {
|
||||||
|
mostFrequentNumbers.push_back(pair.first);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Сортировка чисел с максимальным количеством повторений
|
||||||
|
sort(mostFrequentNumbers.begin(), mostFrequentNumbers.end());
|
||||||
|
|
||||||
|
// Запись результатов в файл
|
||||||
|
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<int> array(n);
|
||||||
|
cout << "Введите элементы массива: ";
|
||||||
|
for (int i = 0; i < n; ++i) {
|
||||||
|
cin >> array[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Словарь для хранения частоты элементов и их индексов
|
||||||
|
map<int, vector<int>> frequency;
|
||||||
|
|
||||||
|
// Заполнение словаря
|
||||||
|
for (int i = 0; i < n; ++i) {
|
||||||
|
frequency[array[i]].push_back(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Проверка наличия повторяющихся элементов
|
||||||
|
vector<int> duplicates; // Хранение уникальных повторяющихся элементов
|
||||||
|
for (const auto& pair : frequency) {
|
||||||
|
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()
|
||||||
|
{
|
||||||
|
cout << "Задание 2";
|
||||||
|
z2();
|
||||||
|
cout << "Задание 3.13";
|
||||||
|
z3_13();
|
||||||
|
cout << "Задание 4.13";
|
||||||
|
z4_13();
|
||||||
|
cout << "Задание 5.13";
|
||||||
|
z5_13();
|
||||||
|
cout << "Задание 5.47";
|
||||||
|
z5_47();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user