From 7dc96a54e6051b80fa42d85a28d87e34f4e4fcca Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Wed, 29 Nov 2023 14:46:31 +0300 Subject: [PATCH] solve for ^C - done --- Fixed_Project 1.0/main.c | 55 +++++++++++++++++++++++++----- Fixed_Project 1.0/out/app | Bin 16632 -> 16760 bytes try/out/test_app3 | Bin 16784 -> 16576 bytes try/test3.c | 69 ++++++-------------------------------- 4 files changed, 57 insertions(+), 67 deletions(-) diff --git a/Fixed_Project 1.0/main.c b/Fixed_Project 1.0/main.c index 4355ebe..29c6830 100644 --- a/Fixed_Project 1.0/main.c +++ b/Fixed_Project 1.0/main.c @@ -3,6 +3,7 @@ #include #include #include +#include double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; @@ -12,28 +13,33 @@ void choose_path(); double f(double x) { - return exp(x)-1; + return x - 1; } void choose_path() { - - printf("\nПродолжить поиск корня?\ - (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); + char choice, *ch = &choice; + printf("\nПродолжить поиск корня?\n"); + do { + printf("\nC - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке: \n"); + *ch = getchar(); *ch = getchar(); switch (*ch) { case 'C': + case 'c': return; case 'A': + case 'a': printf("\nКорень уравнения: %lf\n", *px); printf("Работа программы завершена.\n"); exit(0); case 'R': + case 'r': printf("Введите новые значения границ a и b: "); - scanf("%lf %lf", pa, pb); + scanf("%lf%lf", pa, pb); if (f(*pa) * f(*pb) > 0) { printf("В указанных границах нуля функции не существует.\n"); @@ -53,24 +59,54 @@ void choose_path() } } return; + + default: + printf("Ошибка ввода, повторная попытка..."); } - } while (*ch != 'A' || *ch != 'R' || *ch != 'C'); - printf("Ошибка ввода, повторная попытка..."); - choose_path(); + } while (*ch != 'A' || *ch != 'R' || *ch != 'C' || *ch != 'a' || *ch != 'r' || *ch != 'c'); } void ctrlc_handler(int signum) { + struct termios term; + + // Получение текущих настроек терминала + tcgetattr(0, &term); + + // Отключение символа ECHO + term.c_lflag &= ~ECHO; + + // Применение новых настроек терминала + tcsetattr(0, TCSANOW, &term); + printf("\nТекущее приближение: %lf\n", *px); choose_path(); + + // Включение символа ECHO + term.c_lflag |= ECHO; + + // Применение новых настроек терминала + tcsetattr(0, TCSANOW, &term); } int main(){ + double tmp; - signal(SIGINT, ctrlc_handler); + + + 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) // Если пользователь перепутал границы { @@ -120,6 +156,7 @@ int main(){ } while(fabs(*pb - *pa) > eps && f(x) != 0); + printf("\nКорень уравнения: %lf\n", *px); printf("Работа программы завершена.\n"); diff --git a/Fixed_Project 1.0/out/app b/Fixed_Project 1.0/out/app index ed8a8d546dcac98cea57f09abe5f6e5e1d22fed3..e1b37c56321fdbfd809a3710934452fa6159c370 100755 GIT binary patch literal 16760 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 A)&Kwi diff --git a/try/out/test_app3 b/try/out/test_app3 index 610c22e7a7330d20c20eca7832d31a1e06f64f09..64cb219693bb54dc102fc1201f7e60cb8d8d599e 100755 GIT binary patch delta 4009 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 diff --git a/try/test3.c b/try/test3.c index 0e4fb03..3c51be4 100644 --- a/try/test3.c +++ b/try/test3.c @@ -4,22 +4,20 @@ #include #include -double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; -char choice, *ch = &choice; +double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; // Переписать для статики... double f(double x); -// void find_zero(); void ctrlc_handler(int signum); void choose_path(); -double f(double x) // Функция обязана быть линейной +double f(double x) { - return x + 4; + return x*x - 16; } -void choose_path() +void choose_path() // Функция выбора после сигнала { - + char choice, *ch = &choice; printf("\nПродолжить поиск корня?\ (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); do @@ -54,8 +52,6 @@ void choose_path() printf("Нажмите Ctrl+C и поменяйте границы\n"); } } - // // find_zero(); - // printf("Ожидание сигнала Ctrl+C...\n"); return; } } while (*ch != 'A' || *ch != 'R' || *ch != 'C'); @@ -65,42 +61,13 @@ void choose_path() void ctrlc_handler(int signum) { - // printf("\nПолучен сигнал Ctrl+C\n"); printf("\nТекущее приближение: %lf\n", *px); choose_path(); - // find_zero(); } -// void find_zero() -// { -// //signal(SIGINT, ctrlc_handler); -// do -// { -// *px = (*pa + *pb) / 2; // метод деления отрезка пополам -// printf("%lf %lf\n", *pa, *pb); -// sleep(10); - -// if (f(*pa) * f(x) < 0) -// *pb = x; -// else if(f(*pb) * f(x) < 0) -// *pa = x; - -// printf("Текущее приближение: %lf\n", *px); - -// } while(fabs(*pb - *pa) > eps && f(x) != 0); - -// printf("\nКорень уравнения: %lf\n", *px); -// printf("Работа программы завершена.\n"); -// return; -// } - int main(){ double tmp; - - struct sigaction sa; - sa.sa_handler = ctrlc_handler; - sa.sa_flags = SA_RESETHAND; - sigemptyset(&sa.sa_mask); + signal(SIGINT, ctrlc_handler); printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); @@ -138,36 +105,22 @@ int main(){ } } - signal(SIGINT, ctrlc_handler); do { *px = (*pa + *pb) / 2; // метод деления отрезка пополам printf("%lf %lf\n", *pa, *pb); sleep(1); - if (f(*pa) * f(x) < 0) + if (f(*pa) * f(x) <= 0) *pb = x; - else if(f(*pb) * f(x) < 0) + else if(f(*pb) * f(x) <= 0) *pa = x; - - - } while(fabs(*pb - *pa) > eps && f(x) != 0); printf("\nКорень уравнения: %lf\n", *px); printf("Работа программы завершена.\n"); - if (sigaction(SIGINT, &sa, NULL) == -1) - { - perror("sigaction"); - return 1; - } - - // printf("Ожидание сигнала Ctrl+C...\n"); - // signal(SIGINT, ctrlc_handler); - // while(1) - // { - // sleep(1); - // } return 0; -} \ No newline at end of file +} + +// MEEEEEEEOW \ No newline at end of file