// dz41.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. // #include #include #include #include #define _USE_MATH_DEFINES #include const double PI = 3.141592653589793238463; // Функция для вычисления площади прямоугольника double rectangleArea(double length, double width) { return length * width; } // Функция для вычисления площади треугольника double triangleArea(double base, double height) { return 0.5 * base * height; } // Функция для вычисления площади круга double circleArea(double radius) { return PI * radius * radius; } using namespace std; int sign(int x) { if (x > 0) { return 1; } else if (x == 0) { return 0; } else { return -1; } } void z3() { int choice; cout << "Выберите фигуру для расчета площади:\n"; cout << "1. Прямоугольник\n"; cout << "2. Треугольник\n"; cout << "3. Круг\n"; cout << "Ваш выбор: "; cin >> choice; switch (choice) { case 1: { double length, width; cout << "Введите длину и ширину прямоугольника: "; cin >> length >> width; cout << "Площадь прямоугольника: " << rectangleArea(length, width) << endl; break; } case 2: { double base, height; cout << "Введите основание и высоту треугольника: "; cin >> base >> height; cout << "Площадь треугольника: " << triangleArea(base, height) << endl; break; } case 3: { double radius; cout << "Введите радиус круга: "; cin >> radius; cout << "Площадь круга: " << circleArea(radius) << endl; break; } default: cout << "Неверный выбор!" << endl; } } void z4() { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hConsole, 240); cout << " " << endl; SetConsoleTextAttribute(hConsole, 16); cout << " " << endl; SetConsoleTextAttribute(hConsole, 64); cout << " " << endl; SetConsoleTextAttribute(hConsole, 0); cout << endl; SetConsoleTextAttribute(hConsole, 15); cout << endl; } void z6() { string roman; cout << "Введите римское число: "; cin >> roman; int result = 0; // Итоговое значение int prevValue = 0; // Предыдущее значение для сравнения // Проходим по римскому числу с конца for (int i = roman.size() - 1; i >= 0; --i) { int currentValue = 0; // Определяем значение текущего символа switch (roman[i]) { case 'I': currentValue = 1; break; case 'V': currentValue = 5; break; case 'X': currentValue = 10; break; case 'L': currentValue = 50; break; case 'C': currentValue = 100; break; case 'D': currentValue = 500; break; case 'M': currentValue = 1000; break; default: cerr << "Недопустимый символ: " << roman[i] << endl; return; // Прерываем выполнение при некорректном символе } // Добавляем или вычитаем значение в зависимости от предыдущего символа if (currentValue < prevValue) { result -= currentValue; // Вычитаем, если меньшая цифра перед большей (например, IV = 4) } else { result += currentValue; // Добавляем в остальных случаях } prevValue = currentValue; // Обновляем предыдущее значение } cout << "Арабское число: " << result << endl; } void z2() { int number; cout << "Введите число: "; cin >> number; int result = sign(number); // Вызов подпрограммы для определения знака числа cout << "Знак числа: " << result << endl; } int z1() { ofstream outFile("numbers.txt"); // Открываем файл для записи if (!outFile) { cerr << "Не удалось открыть файл для записи." << endl; return 1; } int numbers[10]; // Массив для хранения 10 чисел // Вводим 10 чисел и записываем их в файл через пробел cout << "Введите 10 чисел: "; for (int i = 0; i < 10; ++i) { cin >> numbers[i]; outFile << numbers[i] << " "; } outFile.close(); // Закрываем файл после записи // Открываем файл для чтения ifstream inFile("numbers.txt"); if (!inFile) { cerr << "Не удалось открыть файл для чтения." << endl; return 1; } // Считываем числа и суммируем их int sum = 0; for (int i = 0; i < 10; ++i) { inFile >> numbers[i]; sum += numbers[i]; } inFile.close(); // Закрываем файл после чтения cout << "Сумма чисел: " << sum << endl; } void z7() { int S1 = 1; int S2 = 1; // Параметры для первого варианта int m1 = 37, i1 = 3, c1 = 64; // Параметры для второго варианта int m2 = 25173, i2 = 13849, c2 = 65537; // Количество итераций int iterations = 10; // Первый вариант cout << "Первый вариант (m = " << m1 << ", i = " << i1 << ", c = " << c1 << "):" << endl; for (int j = 0; j < iterations; ++j) { S1 = (m1 * S1 + i1) % c1; cout << S1 << " "; } cout << endl; // Второй вариант cout << "Второй вариант (m = " << m2 << ", i = " << i2 << ", c = " << c2 << "):" << endl; for (int j = 0; j < iterations; ++j) { S2 = (m2 * S2 + i2) % c2; cout << S2 << " "; } cout << endl; } void showMenu() { cout << "Меню задач:\n"; cout << "1. Файл\n"; cout << "2. Знак числа\n"; cout << "3. Геометрические фигуры\n"; cout << "4. СЛАВА РОССИИ\n"; cout << "6. Автоматный распознаватель\n"; cout << "7. Генератор случайных чисел\n"; cout << "0. Выход\n"; } void launchTasks() { int choice; do { showMenu(); cout << "Выберите номер задачи для запуска (или 0 для выхода): "; cin >> choice; switch (choice) { case 1: z1(); break; case 2: z2(); break; case 3: z3(); break; case 4: z4(); break; case 6: z6(); break; case 7: z7(); break; case 0: cout << "Выход из программы.\n"; break; default: cout << "Ошибка: неверный выбор. Пожалуйста, попробуйте снова.\n"; } cout << endl; } while (choice != 0); } int main() { setlocale(LC_ALL, ""); launchTasks(); return 0; }