From 2683d07bd88b4abce3eee66a758ea64091c62ce6 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Tue, 21 Nov 2023 20:48:02 +0300 Subject: [PATCH] start_prod --- PROJECT/func.c | 25 ++++++++++++++++ PROJECT/main.c | 25 ++++++++++++++++ PROJECT/try/out/app1 | Bin 0 -> 16208 bytes PROJECT/try/test.c | 69 +++++++++++++++++++++++++++++++++++++++++++ PROJECT/try/var1.c | 63 +++++++++++++++++++++++++++++++++++++++ PROJECT/try/var2.c | 0 README | 0 7 files changed, 182 insertions(+) create mode 100644 PROJECT/func.c create mode 100644 PROJECT/main.c create mode 100755 PROJECT/try/out/app1 create mode 100644 PROJECT/try/test.c create mode 100644 PROJECT/try/var1.c create mode 100644 PROJECT/try/var2.c create mode 100644 README diff --git a/PROJECT/func.c b/PROJECT/func.c new file mode 100644 index 0000000..2a735b5 --- /dev/null +++ b/PROJECT/func.c @@ -0,0 +1,25 @@ +#include +#include +#include + +double f(double x) +{ + return x + x - 16; +} + +void find_zero(double *pa, double *pb, double eps) +{ + double x; + do + { + x = (*pa + *pb) / 2; // метод деления отрезка пополам + if (f(*pa) * f(x) < 0) + *pb = x; + else + *pa = x; + } while (fabs(*pb - *pa) > eps); +} + +void ctrlc_handler(int signum); +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 new file mode 100644 index 0000000..b812e81 --- /dev/null +++ b/PROJECT/main.c @@ -0,0 +1,25 @@ +#include +#include + +double f(double x); // function x +void find_zero(double *pa, double *pb, double eps); // +void ctrlc_handler(int signum); +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); + + printf("Введите интервал [a, b] и точность eps: "); + scanf("%lf %lf %lf", pa, pb, &eps); + + // if (a > b || ) + + find_zero(pa, pb, eps); + + return 0; +} diff --git a/PROJECT/try/out/app1 b/PROJECT/try/out/app1 new file mode 100755 index 0000000000000000000000000000000000000000..fcbbfb8a535789e231a71fb8e26ca3ed851ed58e GIT binary patch literal 16208 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 m=P%t~O75D-Z`HMSr@<9m#uZ<>ttiH~=!*?)ri +#include +#include + +double f(double x) +{ + return x + x - 16; // пример уравнения, замените на свою функцию +} + +void ctrlc_handler(int signum) +{ + printf("\nПолучен сигнал Ctrl+C\n"); + printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + + +} + +void vibor(char *ch) +{ + scanf(" %c", ch); + if (*ch == 'A') + { + printf("Работа программы завершена.\n"); + exit(0); + } + else if (*ch == 'R') + { + break; + } +} + +int main() +{ + double a, b, x, eps; + char choice; + + signal(SIGINT, ctrlc_handler); + + do + { + printf("Введите интервал [a, b] и точность eps: "); + scanf("%lf %lf %lf", &a, &b, &eps); + + do + { + x = (a + b) / 2; // метод деления отрезка пополам + if (f(a) * f(x) < 0) + { + b = x; + } + else + { + a = x; + } + printf("Текущее приближение: %lf\n", x); + // printf("Продолжить вычисления? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + + } while (fabs(b - a) > eps); + + if (choice != 'R') + { + printf("Корень уравнения: %lf\n", x); + printf("Работа программы завершена.\n"); + return 0; + } + } while (choice == 'R'); + + return 0; +} diff --git a/PROJECT/try/var1.c b/PROJECT/try/var1.c new file mode 100644 index 0000000..9980ec1 --- /dev/null +++ b/PROJECT/try/var1.c @@ -0,0 +1,63 @@ +#include +#include +#include + +double f(double x) +{ + return x + x - 16; // пример уравнения, замените на свою функцию +} + +void ctrlc_handler(int signum) +{ + printf("\nПолучен сигнал Ctrl+C\n"); + printf("Продолжить поиск корня? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + +} + +int main() +{ + double a, b, x, eps; + char choice; + + signal(SIGINT, ctrlc_handler); + + do + { + printf("Введите интервал [a, b] и точность eps: "); + scanf("%lf %lf %lf", &a, &b, &eps); + + do + { + x = (a + b) / 2; // метод деления отрезка пополам + if (f(a) * f(x) < 0) + { + b = x; + } + else + { + a = x; + } + printf("Текущее приближение: %lf\n", x); + printf("Продолжить вычисления? (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): "); + scanf(" %c", &choice); + if (choice == 'A') + { + printf("Работа программы завершена.\n"); + return 0; + } + else if (choice == 'R') + { + break; + } + } while (fabs(b - a) > eps); + + if (choice != 'R') + { + printf("Корень уравнения: %lf\n", x); + printf("Работа программы завершена.\n"); + return 0; + } + } while (choice == 'R'); + + return 0; +} diff --git a/PROJECT/try/var2.c b/PROJECT/try/var2.c new file mode 100644 index 0000000..e69de29 diff --git a/README b/README new file mode 100644 index 0000000..e69de29