From 7d0d3ea7c5fc4aa4741311e37e017db44ed48878 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Wed, 22 Nov 2023 00:04:41 +0300 Subject: [PATCH] dumay, dima, dumay --- .vscode/settings.json | 6 +++++ PROJECT/func.c | 30 ++++++++++++------------ PROJECT/main.c | 42 ++++++++++++---------------------- PROJECT/out_p/prog3 | Bin 16552 -> 0 bytes PROJECT/out_p/prog4 | Bin 0 -> 16456 bytes {PROJECT/try => try}/out/app1 | Bin {PROJECT/try => try}/test.c | 0 {PROJECT/try => try}/var1.c | 0 {PROJECT/try => try}/var2.c | 0 9 files changed, 35 insertions(+), 43 deletions(-) create mode 100644 .vscode/settings.json delete mode 100755 PROJECT/out_p/prog3 create mode 100755 PROJECT/out_p/prog4 rename {PROJECT/try => try}/out/app1 (100%) rename {PROJECT/try => try}/test.c (100%) rename {PROJECT/try => try}/var1.c (100%) rename {PROJECT/try => try}/var2.c (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..439e6d4 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "files.associations": { + "head.h": "c", + "unistd.h": "c" + } +} diff --git a/PROJECT/func.c b/PROJECT/func.c index afee160..68fa35d 100644 --- a/PROJECT/func.c +++ b/PROJECT/func.c @@ -1,8 +1,7 @@ #include -#include #include #include -#include +#include double f(double x) { @@ -19,20 +18,19 @@ void find_zero(double *pa, double *pb, double eps, double *px) printf("Текущее приближение: %lf\n", *px); } -void ctrlc_handler(int signum) +void ctrlc_handler(int signum, char *ch) { - int sig; - sigset_t *set = (sigset_t *)signum; - - while (1) - { - sigwait(set, &sig); - if (sig == SIGINT) - { - printf("\nПолучен сигнал Ctrl+C\n"); - printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); - } - } + printf("\nПолучен сигнал Ctrl+C\n"); + printf("\nПродолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); } -// void choose_path(char *choice); + +// void choose_path() +// { +// char choice = getchar(); +// if(choice == 'A') +// break; +// else if(choice == 'C') +// find_zero() + +// } // void new_row(double *pa, double *pb); \ No newline at end of file diff --git a/PROJECT/main.c b/PROJECT/main.c index e1ac274..fd93e1f 100644 --- a/PROJECT/main.c +++ b/PROJECT/main.c @@ -1,53 +1,41 @@ #include #include #include -#include +#include -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); +double f(double x); +void find_zero(double *pa, double *pb, double eps, double *px); +void ctrlc_handler(int signum, char *ch); +void choose_path(); +void new_row(double *pa, double *pb); int main() { double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; - char choice = ' ', *ch = &choice; - pthread_t thread; - sigset_t set; + char choice, *ch = &choice; + struct sigaction sa; + sa.sa_handler = ctrlc_handler(, ch); + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); + find_zero(pa, pb, eps, px); - // Создание набора сигналов и добавление в него SIGINT - sigemptyset(&set); - sigaddset(&set, SIGINT); - - // Блокировка сигналов в наборе для основного потока - if (pthread_sigmask(SIG_BLOCK, &set, NULL) != 0) + if (sigaction(SIGINT, &sa, NULL) == -1) { - perror("pthread_sigmask"); - return 1; - } - - // Создание потока для обработчика сигнала - if (pthread_create(&thread, NULL, ctrlc_handler, &set) != 0) - { - perror("pthread_create"); + perror("sigaction"); return 1; } printf("Ожидание сигнала Ctrl+C...\n"); - find_zero(pa, pb, eps, px); while (1) { sleep(1); } - signal(SIGINT, ctrlc_handler); - - printf("Корень уравнения: %lf\n", *px); + printf("\nКорень уравнения: %lf\n", *px); printf("Работа программы завершена.\n"); return 0; diff --git a/PROJECT/out_p/prog3 b/PROJECT/out_p/prog3 deleted file mode 100755 index 0dc01f3262cf1a0c30f4e98cc3e36828afa25f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16552 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 Oak-^2%VpqV#lHXz>60D+ diff --git a/PROJECT/out_p/prog4 b/PROJECT/out_p/prog4 new file mode 100755 index 0000000000000000000000000000000000000000..fb1721baddded6040d5b168d6c3bd101e6f2fd08 GIT binary patch literal 16456 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