From c44745aa70ebc1e1f28cd58b4bf386a9adc5d505 Mon Sep 17 00:00:00 2001 From: ada-dmitry Date: Wed, 22 Nov 2023 12:38:58 +0300 Subject: [PATCH] done ver1.0 --- .vscode/tasks.json | 28 +++++++ Prod_with_G/declare.h | 3 + Prod_with_G/func.c | 7 +- Prod_with_G/main | Bin 0 -> 20952 bytes Prod_with_G/main.c | 140 ++++++++++++++++++++++++++++++--- Prod_with_G/out_prod/main_app | Bin 0 -> 16592 bytes Prod_with_G/out_prod/main_app1 | Bin 0 -> 16736 bytes 7 files changed, 163 insertions(+), 15 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 Prod_with_G/declare.h create mode 100755 Prod_with_G/main create mode 100755 Prod_with_G/out_prod/main_app create mode 100755 Prod_with_G/out_prod/main_app1 diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..08d9005 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc build active file", + "command": "/usr/bin/gcc", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/Prod_with_G/declare.h b/Prod_with_G/declare.h new file mode 100644 index 0000000..b28b04f --- /dev/null +++ b/Prod_with_G/declare.h @@ -0,0 +1,3 @@ + + + diff --git a/Prod_with_G/func.c b/Prod_with_G/func.c index 0405b0a..cf1e70d 100644 --- a/Prod_with_G/func.c +++ b/Prod_with_G/func.c @@ -1,14 +1,11 @@ -#include -#include -#include -#include +#include "declare.h" double f(double x) { return x * x - 16; } -void find_zero(double *pa, double *pb, double eps, double *px) +void find_zero() { *px = (*pa + *pb) / 2; // метод деления отрезка пополам if (f(*pa) * f(*px) < 0) diff --git a/Prod_with_G/main b/Prod_with_G/main new file mode 100755 index 0000000000000000000000000000000000000000..f14ee7c74c19e2f20b08fd0d112354a03d4de974 GIT binary patch literal 20952 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 +#include #include #include #include double f(double x); -void find_zero(double *pa, double *pb, double eps, double *px); +void find_zero(); void ctrlc_handler(int signum); -// void choose_path(); -// void new_row(double *pa, double *pb); +void choose_path(); + +double a, b, eps, x, *pa = &a, *pb = &b; +char choice, *ch = &choice; int main() { - double a, b, eps, x, *pa = &a, *pb = &b, *px = &x; - char choice, *ch = &choice; + double tmp; struct sigaction sa; sa.sa_handler = ctrlc_handler; sa.sa_flags = 0; @@ -20,7 +22,38 @@ int main() printf("Введите интервал [a, b] и точность eps: "); scanf("%lf %lf %lf", pa, pb, &eps); - find_zero(pa, pb, eps, px); + + if (*pa > *pb) // Если пользователь перепутал границы + { + printf("Границы указаны неверно, запуск задачи с исправленным условием\n"); + tmp = *pa; + *pa = *pb; + *pb = tmp; + } + if (f(*pa) * f(*pb) > 0) + { + printf("В указанных границах нуля функции не существует.\n"); + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + if (eps < 0) // Если пользователь указал отрицательную точность + { + eps = eps * (-1); + } + if (*pa == *pb) + { + if (f(*pa) == 0) + { + printf("\nКорень уравнения: %lf\n", *pa); + printf("Работа программы завершена.\n"); + exit(0); + } + else + { + printf("Нажмите Ctrl+C и поменяйте границы\n"); + } + } + + find_zero(); if (sigaction(SIGINT, &sa, NULL) == -1) { @@ -29,14 +62,101 @@ int main() } printf("Ожидание сигнала Ctrl+C...\n"); - + // signal(SIGINT, ctrlc_handler); while (1) { sleep(1); } - printf("\nКорень уравнения: %lf\n", *px); - printf("Работа программы завершена.\n"); - return 0; } + +double f(double x) +{ + return x * x - 16; +} + +void find_zero() +{ + double x; + x = (*pa + *pb) / 2; // метод деления отрезка пополам + if (f(*pa) * f(x) < 0) + *pb = x; + else + *pa = x; + printf("Текущее приближение: %lf\n", x); + + if (fabs(b - a) < eps) + { + printf("\nКорень уравнения: %lf\n", x); + printf("Работа программы завершена.\n"); + exit(0); + } + else + { + return; + } +} + +void ctrlc_handler(int signum) +{ + printf("\nПолучен сигнал Ctrl+C\n"); + choose_path(); +} + +void choose_path() +{ + // printf("\nПродолжить поиск корня?\ + (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); + // choice = 'Q'; + // *ch = getchar(); + + // if (*ch == 'A') + // { + // printf("Работа программы завершена.\n"); + // exit(0); + // } + + // else if (*ch == 'C') + // { + // find_zero(); + // printf("Ожидание сигнала Ctrl+C...\n"); + // } + // else if (*ch == 'R') + // { + // printf("Введите новые значения границ a и b: "); + // scanf("%lf %lf", pa, pb); + // find_zero(); + // printf("Ожидание сигнала Ctrl+C...\n"); + // } + // else + // { + // printf("Ошибка ввода, повторная попытка..."); + // choose_path(); + // } + printf("\nПродолжить поиск корня?\ + (C - продолжить, A - закончить работу программы, R - начать поиск на другом отрезке): \n"); + do + { + + *ch = getchar(); + switch (*ch) + { + case 'C': + find_zero(); + printf("Ожидание сигнала Ctrl+C...\n"); + return; + case 'A': + printf("Работа программы завершена.\n"); + exit(0); + case 'R': + printf("Введите новые значения границ a и b: "); + scanf("%lf %lf", pa, pb); + find_zero(); + printf("Ожидание сигнала Ctrl+C...\n"); + return; + } + } while (*ch != 'A' || *ch != 'R' || *ch != 'C'); + printf("Ошибка ввода, повторная попытка..."); + choose_path(); +} diff --git a/Prod_with_G/out_prod/main_app b/Prod_with_G/out_prod/main_app new file mode 100755 index 0000000000000000000000000000000000000000..d531bef2433ff28f1c688b005747a08b0fcd299d GIT binary patch literal 16592 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 YJ)oe- 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