This repository has been archived on 2026-07-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

96 lines
3.2 KiB
C++

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
// Функция для вычисления левой части уравнения: 4√3 * cos^3(x)
double left_side(double x) {
return 4 * sqrt(3) * pow(cos(x), 3);
}
// Функция для вычисления правой части уравнения: cos(2x + π/2)
double right_side(double x) {
return cos(2 * x + M_PI / 2);
}
int main() {
// Инициализация графического режима
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
// Заданный отрезок [-4π; -5π/2]
double x_start = -4 * M_PI;
double x_end = -5 * M_PI / 2;
// Массив для хранения корней
double roots[10];
int root_count = 0;
// Поиск корней уравнения на заданном отрезке с шагом 0.01
for (double x = x_start; x <= x_end; x += 0.01) {
double left = left_side(x);
double right = right_side(x);
// Проверяем условие совпадения левой и правой частей уравнения с некоторой погрешностью
if (fabs(left - right) < 0.01) {
roots[root_count] = x;
root_count++;
}
}
// Координаты для рисования графиков
int x_center = getmaxx() / 2;
int y_center = getmaxy() / 2;
// Рисуем оси
line(0, y_center, getmaxx(), y_center); // Ось X
line(x_center, 0, x_center, getmaxy()); // Ось Y
// Подписи для осей
outtextxy(x_center + 5, 5, "Y");
outtextxy(getmaxx() - 10, y_center + 5, "X");
// Рисуем графики левой и правой частей уравнения
for (double x = x_start; x <= x_end; x += 0.01) {
double left = left_side(x);
double right = right_side(x);
// Левую часть уравнения рисуем белым
putpixel(x_center + (int)(x * 100), y_center - (int)(left * 100), WHITE);
// Правую часть уравнения рисуем желтым
putpixel(x_center + (int)(x * 100), y_center - (int)(right * 100), YELLOW);
}
// Вывод текста с найденными корнями
setcolor(WHITE);
char root_text[100];
sprintf(root_text, "Найдено %d корней", root_count);
outtextxy(10, 10, root_text);
// Запись корней в файл
FILE *file = fopen("answer.txt", "w");
if (file == NULL) {
printf("Ошибка при открытии файла!\n");
return 1;
}
// Запись найденных корней в файл
fprintf(file, "Ответ задачи:\n");
fprintf(file, "Найдено %d корней:\n", root_count);
for (int i = 0; i < root_count; i++) {
fprintf(file, "x = %.5f\n", roots[i]);
}
// Закрытие файла
fclose(file);
printf("Ответ записан в файл 'answer.txt'.\n");
// Ожидание завершения
getch();
closegraph();
return 0;
}