#include #include #include #include #include #include #include "declare.h" double a, b, eps, x, *pa, *pb, *px; int main(){ double tmp; pa = &a; pb = &b; px = &x; struct sigaction sa; sa.sa_handler = ctrlc_handler; sa.sa_flags = 0; sigemptyset(&sa.sa_mask); printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); if (sigaction(SIGINT, &sa, NULL) == -1) { perror("sigaction"); return 1; } if (*pa > *pb) // Если пользователь перепутал границы { printf("Границы указаны неверно, запуск задачи с исправленным условием\n"); tmp = *pa; *pa = *pb; *pb = tmp; } if (f(*pa) * f(*pb) > 0) { printf("В указанных границах нуля функции не существует.\n"); printf("Нажмите Ctrl+C и поменяйте границы\n"); } if (eps < 0) // Если пользователь указал отрицательную точность { eps = eps * (-1); printf("Точность отрицательна, условие приведено в порядок, запуск решения...\n"); } if (*pa == *pb) { if (f(*pa) == 0) { printf("\nКорень уравнения: %lf\n", *pa); printf("Работа программы завершена.\n"); exit(0); } else { printf("Нажмите Ctrl+C и поменяйте границы\n"); } } fork_method(); printf("\nКорень уравнения: %lf\n", *px); printf("Работа программы завершена.\n"); return 0; } // MEEEEEEEOW