Запрос пользователяЕсть ли ошибки на коде
#include
#include
#include
#include
#include
#include
#include
// Функция для решения задач по геометрии
void solveGeometry() {
double radius;
std::cout << "Введите радиус круга: ";
while (!(std::cin >> radius) || radius <= 0) {
std::cout << "Ошибка: введите положительное число для радиуса." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits::max(), '\n');
}
double area = M_PI * radius * radius; // Площадь круга
std::cout << "Площадь круга: " << area << std::endl;
// Визуализация
sf::RenderWindow window(sf::VideoMode(800, 600), "Геометрия");
sf::CircleShape circle(radius);
circle.setFillColor(sf::Color::Green);
circle.setPosition(400 - radius, 300 - radius); // Центрирование круга
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(circle);
window.display();
}
}
// Функция для решения алгебраических задач
void solveAlgebra() {
double a, b, c;
std::cout << "Введите коэффициенты a, b, c для уравнения ax^2 + bx + c = 0: ";
while (!(std::cin >> a >> b >> c)) {
std::cout << "Ошибка: введите действительные числа для a, b и c." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits::max(), '\n');
}
double discriminant = b * b - 4 * a * c;
if (discriminant < 0) {
std::cout << "Уравнение не имеет действительных корней." << std::endl;
} else {
double root1 = (-b + sqrt(discriminant)) / (2 * a);
double root2 = (-b - sqrt(discriminant)) / (2 * a);
std::cout << "Корни уравнения: " << root1 << " и " << root2 << std::endl;
}
}
// Функция для решения прикладных задач
void solveAppliedMath() {
double speed, time;
std::cout << "Введите скорость (м/с) и время (с): ";
while (!(std::cin >> speed >> time) || speed < 0 || time < 0) {
std::cout << "Ошибка: введите неотрицательные числа для скорости и времени." << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits::max(), '\n');
}
double distance = speed * time; // Расстояние
std::cout << "Пройденное расстояние: " << distance << " метров." << std::endl;
}
// Функция для работы с множествами
void solveSets() {
int n1, n2;
std::cout << "Введите количество элементов первого множества: ";
std::cin >> n1;
std::set set1;
std::cout << "Введите элементы первого множества: ";
for (int i = 0; i < n1; ++i) {
int element;
std::cin >> element;
set1.insert(element);
}
std::cout << "Введите количество элементов второго множества: ";
std::cin >> n2;
std::set set2;
std::cout << "Введите элементы второго множества: ";
for (int i = 0; i < n2; ++i) {
int element;
std::cin >> element;
set2.insert(element);
}
// Объединение множеств
std::set unionSet;
std::set_union(set1.begin(), set1.end(), set2.begin(), set2.end(),
std::inserter(unionSet, unionSet.begin()));
std::cout << "Объединение множеств: ";
for (const auto& elem : unionSet) {
std::cout << elem << " ";
}
std::cout << std::endl;
// Пересечение множеств
std::set intersectionSet;
std::set_intersection(set1.begin(), set1.end(), set2.begin(), set2.end(),
std::inserter(intersectionSet, intersectionSet.begin()));
std::cout << "Пересечение множеств: ";
for (const auto& elem : intersectionSet) {
std::cout << elem << " ";
}
std::cout << std::endl;
// Разность множеств
std::set differenceSet;
std::set_difference(set1.begin(), set1.end(), set2.begin(), set2.end(),
std::inserter(differenceSet, differenceSet.begin()));
std::cout << "Разность первого множества и второго: ";
for (const auto& elem : differenceSet) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
// Функция для работы с матрицами
void solveMatrices() {
int rows, cols;
std::cout << "Введите количество строк и столбцов матрицы: ";
std::cin >> rows >> cols;
std::vector> matrix(rows, std::vector(cols));
std::cout << "Введите элементы матрицы:" << std::endl;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cin >> matrix[i][j];
}
}
std::cout << "Матрица:" << std::endl;
for (const auto& row : matrix) {
for (const auto& elem : row) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
}
// Функция для работы с векторами
void solveVectors() {
int n;
std::cout << "Введите количество элементов вектора: ";
std::cin >> n;
std::vector vec(n);
std::cout << "Введите элементы вектора:" << std::endl;
for (int i = 0; i < n; ++i) {
std::cin >> vec[i];
}
double magnitude = 0;
for (const auto& elem : vec) {
magnitude += elem * elem;
}
magnitude = sqrt(magnitude);
std::cout << "Длина вектора: " << magnitude << std::endl;
}
// Функция для комбинаторики
void solveCombinatorics() {
int n, k;
std::cout << "Введите n и k для вычисления C(n, k): ";
std::cin >> n >> k;
if (k > n || n < 0 || k < 0) {
std::cout << "Ошибка: n должно быть больше или равно k, и оба значения должны быть неотрицательными." << std::endl;
return;
}
long long result = 1;
for (int i = 0; i < k; ++i) {
result *= (n - i);
result /= (i + 1);
}
std::cout << "C(" << n << ", " << k << ") = " << result << std::endl;
}
// Функция для булевой алгебры
void solveBooleanAlgebra() {
bool a, b;
std::cout << "Введите два булевых значения (0 или 1): ";
std::cin >> a >> b;
std::cout << "a AND b: " << (a && b) << std::endl;
std::cout << "a OR b: " << (a || b) << std::endl;
std::cout << "NOT a: " << !a << std::endl;
std::cout << "NOT b: " << !b << std::endl;
}
// Функция для тригонометрии
void solveTrigonometry() {
double angle;
std::cout << "Введите угол в градусах: ";
std::cin >> angle;
// Преобразуем градусы в радианы
double radians = angle * (M_PI / 180.0);
std::cout << "sin(" << angle << ") = " << sin(radians) << std::endl;
std::cout << "cos(" << angle << ") = " << cos(radians) << std::endl;
std::cout << "tan(" << angle << ") = " << tan(radians) << std::endl;
}
// Основная функция
int main() {
int choice;
do {
std::cout << "\nВыберите категорию задачи: \n1. Геометрия \n2. Алгебра \n3. Прикладная математика \n4. Множества \n5. Матрицы \n6. Векторы \n7. Комбинаторика \n8. Булева алгебра \n9. Тригонометрия \n10. Выход\n";
std::cin >> choice;
switch (choice) {
case 1:
solveGeometry();
break;
case 2:
solveAlgebra();
break;
case 3:
solveAppliedMath();
break;
case 4:
solveSets();
break;
case 5:
solveMatrices();
break;
case 6:
solveVectors();
break;
case 7:
solveCombinatorics();
break;
case 8:
solveBooleanAlgebra();
break;
case 9:
solveTrigonometry();
break;
case 10:
std::cout << "Выход из программы." << std::endl;
break;
default:
std::cout << "Ошибка: неверный выбор. Попробуйте снова." << std::endl;
}
} while (choice != 10);
return 0;
}