Добавить main.cpp
This commit is contained in:
242
main.cpp
Normal file
242
main.cpp
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
// dz41.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <numeric>
|
||||||
|
#include <Windows.h>
|
||||||
|
#define _USE_MATH_DEFINES
|
||||||
|
#include<cmath>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user