commit 2683d07bd88b4abce3eee66a758ea64091c62ce6 Author: ada-dmitry Date: Tue Nov 21 20:48:02 2023 +0300 start_prod 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 0000000..fcbbfb8 Binary files /dev/null and b/PROJECT/try/out/app1 differ diff --git a/PROJECT/try/test.c b/PROJECT/try/test.c new file mode 100644 index 0000000..b4e90ef --- /dev/null +++ b/PROJECT/try/test.c @@ -0,0 +1,69 @@ +#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 - начать поиск на другом отрезке): "); + + +} + +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