Archived
96 lines
3.2 KiB
C++
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;
|
|
}
|