diff --git a/PROJECT/func.c b/PROJECT/func.c index 2a735b5..bd525f6 100644 --- a/PROJECT/func.c +++ b/PROJECT/func.c @@ -1,25 +1,36 @@ #include #include #include +#include + +static wait = 1; double f(double x) { return x + x - 16; } -void find_zero(double *pa, double *pb, double eps) +void find_zero(double *pa, double *pb, double eps, double *px) { - double x; - do - { - x = (*pa + *pb) / 2; // метод деления отрезка пополам - if (f(*pa) * f(x) < 0) - *pb = x; - else - *pa = x; - } while (fabs(*pb - *pa) > eps); + *px = (*pa + *pb) / 2; // метод деления отрезка пополам + if (f(*pa) * f(*px) < 0) + *pb = *px; + else + *pa = *px; + printf("Текущее приближение: %lf\n", *px); } -void ctrlc_handler(int signum); -void choose_path(char *choice); -void new_row(double *pa, double *pb); \ No newline at end of file +void ctrlc_handler(int signum) +{ + + printf("\nПолучен сигнал Ctrl+C\n"); + printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + while (getchar() != '\n') + { + printf("listener: stop"); + wait = 0; + _getch(); + } +} +// void choose_path(char *choice); +// void new_row(double *pa, double *pb); \ No newline at end of file diff --git a/PROJECT/main.c b/PROJECT/main.c index b812e81..66416cc 100644 --- a/PROJECT/main.c +++ b/PROJECT/main.c @@ -1,25 +1,25 @@ #include #include -double f(double x); // function x -void find_zero(double *pa, double *pb, double eps); // +double f(double x); // function x +void find_zero(double *pa, double *pb, double eps, double *px); // void ctrlc_handler(int signum); -void choose_path(char *choice); -void new_row(double *pa, double *pb); +// void choose_path(char *choice); +// void new_row(double *pa, double *pb); int main() { - double a, b, eps, *pa, *pb; - char choice; - - signal(SIGINT, ctrlc_handler); + double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; + char choice = ' ', *ch = &choice; printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); // if (a > b || ) + find_zero(pa, pb, eps, px); - find_zero(pa, pb, eps); + printf("Корень уравнения: %lf\n", *px); + printf("Работа программы завершена.\n"); return 0; } diff --git a/PROJECT/out_p/prog1 b/PROJECT/out_p/prog1 new file mode 100755 index 0000000..51abbdb Binary files /dev/null and b/PROJECT/out_p/prog1 differ